Цитата(SAU @ Mar 18 2006, 21:13)

А такой вариант подключения и обработка прерывания компаратора поможет?
Imho такой вариант тоже имеет право на существование, но пример расписаный в appnote должен работь. Важно только правильно настроить условие возбуждения прерывания.
С аналоговым компаратором это биты регистра ACSR
Table 34. ACIS1/ACIS0 Settings
01 = Falling Edge
11 = Rising Edge
С Int0 это соответственно биты регистра MCUCR:
Table 24. Interrupt 0 Sense Control
ICS01/ICS00
10 The falling edge of INT0 generates an interrupt request.
11 The rising edge of INT0 generates an interrupt request.
И разрешить генерацию соответствующего прерывания. В случае с аналоговым компаратором - бит ACIE регистра ACSR, в случае с INT0 - бит INTF0 регистра GIMSK.
И обязательно уберите из обработчка таймера громадную задержку, строчка Waitms 20.
Для корректной работы:
1. настройте таймер на длительность отсчета (между запуском таймера и генерацией прерывания) 20ms.
2. по прерыванию от внешнего источника - устанавливайте бит порта, и запускайте таймер.
3. по прерыванию от таймера останавливайте таймер и очищайте содержимое счетчика таймера TCNT.
Сообщение отредактировал defunct - Mar 18 2006, 20:30