roboforum.ru

Технический форум по робототехнике.

Measure duration ATmega48

Measure duration ATmega48

Meinframe » 10 июл 2014, 14:08

День добрый форумчане! Хотел спросить, знает ли кто, как посчитать длительность импульсов с оптопары? Если сигнал подсоединён к ногам PB3, PB4. Т.е. вариант с ICP сразу отпадает, остаётся вариант с таймером или PCINT, но тут проблемка, частота проца 3.6864 МГц, частота прерывания таймера 1000,1 ГЦ в лучшем случае с предделителем 1. Просто время отсчёта нужно в секундах. А проблемка в том что я пробовал считать по PCINT и таймеру одновременно, но время получалосьь всегда в реале меньше чем секунда ...

Re: Measure duration ATmega48

RootAdmin » 10 июл 2014, 17:23

А кто мешает в обработчике переполнения таймера инкрементировать счетчик переполнений? Отдельную переменную.
А когда нужен результат - плюсуем произведения счетчика переполнений на время таймера и значение таймера по прерыванию.

Re: Measure duration ATmega48

Meinframe » 10 июл 2014, 20:45

А когда нужен результат - плюсуем произведения счетчика переполнений на время таймера и значение таймера по прерыванию.

Time = OverFlowCounter * 0.001(для тысячи прерываний в секунду)*61849(для тысячи прерываний в секунду, предделителя 1, и проца 3.6864МГц)

Хорошо, а как узнать время окончания сигнала? с началом более менее понятно, но вот с окончанием беда.

Re: Measure duration ATmega48

dccharacter » 18 июл 2014, 04:09

Не так: OverFlowCounter * 0.001(для тысячи прерываний в секунду)*61849
А вот так: OverFlowCounter * 61849 / 1000 (для тысячи прерываний в секунду)


Rambler\'s Top100 Mail.ru counter