Timers Capture mode или ПРАВИЛЬНАЯ работа с таймером в режиме захвата

AVR
Сказано об этом в сети много, но на примере дремучих камней и без особых разъяснений. По этому напишу своё.
Есть у АВР такая фишка — захват. Суть в том, что по фронту или спаду (настраивается битом) сигнала на специальной ноге ICRx, делается снимок регистра TCNT и сохраняется в bmp формате и копируется в регистр ICRx. Опосля чего вызывается прерывание, если оно разрешено. В прерывание мы можем входить не спеша — данные из регистра никуда не денутся. Главное успеть обработать до следующего «снимка».
Всё красиво, всё хорошо. Но вот беда. Атмельцы не сделали возможность сбрасывать/запускать таймер по событию! Таймер крутится в цикле, снимается его мгновенное значение, а дальше делай с ним что хочешь.
Самый секас начинается, когда нам надо отслеживать опускание частоты сигнала ниже порога переполнения таймера. Был бы аппаратный ресет — всё понятно. Мониторь бит OVF при считывании результата и не парься! Но, увы и ах.


Читать дальше
  • +2
  • 04 января 2013, 19:47
  • Dikoy
  • 1