Перейти к содержанию
    

1 hour ago, son313 said:

У меня в целом задача под attiny1607 на вход ножки порта А подать сигнал 64 Гц и на выходе порта В на ножке получить 1 если частота 64 и больше и 0 если частота меньше 64. Как это реализовать на этом микроконтроллере?

Одним таймером считаете импульсы на порту A, другим засекаете 1 секугду (или меньше - по вкусу). По окончании секунды проверяете сколько насчитали - если болше 64, ставите порт B в 1, если меньше - в 0.

Ещё надо бы контролировать переполнение первого таймера, что бы очень высокая частота не окзалась очень низкой 🙂

Если на входе возможен дребезг (например от механического контакта), его надо подавить ДО входа в МК или с помощью фильтра в CCL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, xvr сказал:

Одним таймером считаете импульсы на порту A, другим засекаете 1 секугду (или меньше - по вкусу). По окончании секунды проверяете сколько насчитали - если болше 64, ставите порт B в 1, если меньше - в 0.

Ещё надо бы контролировать переполнение первого таймера, что бы очень высокая частота не окзалась очень низкой 🙂

Если на входе возможен дребезг (например от механического контакта), его надо подавить ДО входа в МК или с помощью фильтра в CCL

А как его правильно инициализировать? С чего начинать, что в инклуд писать и как это реализовать одним таймером считать импульсы на порту А а другим засекать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, son313 said:

А как его правильно инициализировать?

В MicrochipStudio открыть MCC и настроить TCA на счёт внешних импульсов, TCB в free runner режим (с ограничением счета сверху), что бы он вырабатывал прерывания в 1 Hz. В прерываниях забирать насчитанное из TCA и сбрасывать его.

Если MCC не умеет ваш контролер, то читать DS и настраивать вручную.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.02.2023 в 20:17, xvr сказал:

В MicrochipStudio открыть MCC и настроить TCA на счёт внешних импульсов, TCB в free runner режим (с ограничением счета сверху), что бы он вырабатывал прерывания в 1 Hz. В прерываниях забирать насчитанное из TCA и сбрасывать его.

Если MCC не умеет ваш контролер, то читать DS и настраивать вручную.

TCB настроил все нормально. А как TCA на внешние импульсы настроить? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, son313 said:

А как TCA на внешние импульсы настроить? 

https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATtiny804-06-07-1604-06-07-DataSheet-DS40002312A.pdf страница 185:

Quote

Input events are enabled by writing a ‘1’ to the Enable Count on Event Input (CNTEI) bit in the Event Control (TCAn.EVCTRL) register

Event system - страница 114

 

Источник event - ASYNCCHn (страница 121)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, xvr сказал:

https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATtiny804-06-07-1604-06-07-DataSheet-DS40002312A.pdf страница 185:

Event system - страница 114

 

Источник event - ASYNCCHn (страница 121)

 

Надо принимать импульсы с 5 ножки порта А.

EVSYS.ASYNCCH0 = PORTA5;

TCAO.EVCTRL = 0b00100000;

Правильно понимаю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...