xvr 12 11 февраля, 2023 Опубликовано 11 февраля, 2023 · Жалоба 1 hour ago, son313 said: У меня в целом задача под attiny1607 на вход ножки порта А подать сигнал 64 Гц и на выходе порта В на ножке получить 1 если частота 64 и больше и 0 если частота меньше 64. Как это реализовать на этом микроконтроллере? Одним таймером считаете импульсы на порту A, другим засекаете 1 секугду (или меньше - по вкусу). По окончании секунды проверяете сколько насчитали - если болше 64, ставите порт B в 1, если меньше - в 0. Ещё надо бы контролировать переполнение первого таймера, что бы очень высокая частота не окзалась очень низкой 🙂 Если на входе возможен дребезг (например от механического контакта), его надо подавить ДО входа в МК или с помощью фильтра в CCL Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
son313 0 12 февраля, 2023 Опубликовано 12 февраля, 2023 · Жалоба 7 часов назад, xvr сказал: Одним таймером считаете импульсы на порту A, другим засекаете 1 секугду (или меньше - по вкусу). По окончании секунды проверяете сколько насчитали - если болше 64, ставите порт B в 1, если меньше - в 0. Ещё надо бы контролировать переполнение первого таймера, что бы очень высокая частота не окзалась очень низкой 🙂 Если на входе возможен дребезг (например от механического контакта), его надо подавить ДО входа в МК или с помощью фильтра в CCL А как его правильно инициализировать? С чего начинать, что в инклуд писать и как это реализовать одним таймером считать импульсы на порту А а другим засекать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 12 февраля, 2023 Опубликовано 12 февраля, 2023 · Жалоба 11 hours ago, son313 said: А как его правильно инициализировать? В MicrochipStudio открыть MCC и настроить TCA на счёт внешних импульсов, TCB в free runner режим (с ограничением счета сверху), что бы он вырабатывал прерывания в 1 Hz. В прерываниях забирать насчитанное из TCA и сбрасывать его. Если MCC не умеет ваш контролер, то читать DS и настраивать вручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
son313 0 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба В 12.02.2023 в 20:17, xvr сказал: В MicrochipStudio открыть MCC и настроить TCA на счёт внешних импульсов, TCB в free runner режим (с ограничением счета сверху), что бы он вырабатывал прерывания в 1 Hz. В прерываниях забирать насчитанное из TCA и сбрасывать его. Если MCC не умеет ваш контролер, то читать DS и настраивать вручную. TCB настроил все нормально. А как TCA на внешние импульсы настроить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 15 февраля, 2023 Опубликовано 15 февраля, 2023 · Жалоба 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) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
son313 0 16 февраля, 2023 Опубликовано 16 февраля, 2023 · Жалоба 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; Правильно понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться