Цитата(defunct @ Mar 18 2006, 23:23)

10 The falling edge of INT0 generates an interrupt request.
11 The rising edge of INT0 generates an interrupt request.
Я пробовал генерировать по falling - лампа мерцает. Я так понимаю, что раз срабатывает по спаду - то обрабатывается только 1 полупериод
Цитата(defunct @ Mar 18 2006, 23:23)

И обязательно уберите из обработчка таймера громадную задержку, строчка Waitms 20.
Для корректной работы:
1. настройте таймер на длительность отсчета (между запуском таймера и генерацией прерывания) 20ms.
2. по прерыванию от внешнего источника - устанавливайте бит порта, и запускайте таймер.
3. по прерыванию от таймера останавливайте таймер и очищайте содержимое счетчика таймера TCNT.
Я так теперь и делаю.Только импульс генерируется длительностью 20мкс. А время сработки таймера высчитываю как 256- счетчик, где счетчик - инкремент или декремент при нажатии кнопки "+" или "-"
Т.е.Число в диапазоне 2-156.
Цитата(defunct @ Mar 18 2006, 23:23)

10 The falling edge of INT0 generates an interrupt request.
11 The rising edge of INT0 generates an interrupt request.
Я пробовал генерировать по falling - лампа мерцает. Я так понимаю, что раз срабатывает по спаду - то обрабатывается только 1 полупериод. А в AT90S2313 в INT0 отсутствует прерывание по изменению состояния, поэтому стал склоняться к мысли о компараторе.
Цитата(defunct @ Mar 18 2006, 23:23)

И обязательно уберите из обработчка таймера громадную задержку, строчка Waitms 20.
Для корректной работы:
1. настройте таймер на длительность отсчета (между запуском таймера и генерацией прерывания) 20ms.
2. по прерыванию от внешнего источника - устанавливайте бит порта, и запускайте таймер.
3. по прерыванию от таймера останавливайте таймер и очищайте содержимое счетчика таймера TCNT.
Я так теперь и делаю.Только импульс генерируется длительностью 20мкс. А время сработки таймера высчитываю как 256- счетчик, где счетчик - инкремент или декремент при нажатии кнопки "+" или "-"
Т.е.Число в диапазоне 2-156.