Timer1 для подсчёта внешних импульсов
- Войдите на сайт для отправки комментариев
Пт, 16/02/2018 - 09:32
Доброго дня!
Возникла задача отсчитывать заданное оператором число импульсов с датчика потока (частота десятки/сотни Гц) и производить серию переключений. Решил попробовать реализовать на таймере, прерывание по совпадению. Почитал разные похожие решения, получился следующий тестовый код:
volatile int a; void counterInit (void) //инициализация таймера/счётчика { TCNT1 = 0; TCCR1A = 0; TCCR1B = (1<<WGM12)|(1<<CS12)|(1<<CS11); // CTC | Ext.clk src on T1 pin falling edge OCR1A = 50; TIMSK1 = 0b00000010; // OCIEA sei(); } ISR(TIMER1_COMPA_vect) //обработчик прерывания по совпадению А { a++; }
По задумке, каждые 50 импульсов переменная а должна увеличиваться, однако тишина. Что-то или напутал, или недоделал, подскажите куда копать.
Упс... заработало... :) Всего-то сделал, что перенёс инициализацию из подпрограммы в модуль void setup()
Поторопился. Не знаю, как удалить тему...