Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено mandigit 28 июля 2004 г. 11:05
В ответ на: Не совсем так. отправлено Bill 28 июля 2004 г. 10:48

Возьмем прерывание $004 TIM_COMP1 (Обработка совпадения таймера 1).
Таймер подключен через предделитель 1024.
Я так понимаю, что uС в каждом такте проверяет
if(OCR1 == TCNT1) SETBIT(TIFR, OCF1A)
Теперь возьмем обработчик прерывания, выполняемый за 100 тактов.

1. Таймер увеличился на 1 и совпал с регистром сравнения.
+SETBIT(TIFR, OCF1A)
2. Вызвалось прерывание TIM_COMP1 + CLEARBIT(TIFR, OCF1A) + CLI
3. Поскольку, по-прежнему OCR1 == TCNT1, то SETBIT(TIFR, OCF1A)
...
1025 такт
n. IRET + SEI
после этого выполнится одна инструкция и вновь будет вызвано прерывание (ведь бит OCF1A в TIFR установлен), несмотря на то, что условие возникновения прерывания к этому моменту отсутствует!


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru