Полная версия этой страницы:
Atmega8535 счётчик импульсов
AndriyK
Jun 5 2010, 09:23
Подскажите пожалуйста, как решить следующую проблему:
нужно подсчитывать независимо друг от друга импульсы(высокий уровень, низкий уровень), которые приходят на PD0 и PD1 (максимум 9900 импульсов на каждый канал).
В какую сторону глядеть? Использовать встроенный таймер(тогда какой из них), но ведь это контакты для USART, или опрашивать порт, но тогда ведь можно не заметить.
Может я в чем-то не прав или не понимаю, тогда объясните, скажите где почитать.
Спасибо.
Подавайте ваши импульсы на INT0 и на INT1
Это позволит вызывать прерывания.
В прерывании увеличивайте значение переменной, в которой будите хранить количевство принятых импульсов.
О работе с прерываниями и почитайте в любой книжке по проце.
Я тоже за прерывания. Указываешь по какому условию INT0 и на INT1 должно выдавать прерывание и пишеш две функции-обработчики в каторых инкрементируешь две переменные.
(П.С. Частота импульсов должна быть меньшей чем частота АВКки, что бы небыло стробоскопирования)
demiurg_spb
Jun 6 2010, 12:41
Прерывания это хорошо, но есть способ лучше!
Используйте таймер (или два) в режиме счетчика- так вообще почти никакой нагрузки на ядро не будет.
defunct
Jun 7 2010, 10:57
Частота у вас не высока, так что ничто не мешает запустить таймер с частотой в ~40Khz, и по прерыванию таймера читать порт, и фильтровать импульсы.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.