Подскажите такую вещи коты.
Есть прерывание от будильника. При этом это прерывание генерит как таймер так и RTC будильник. Всё заводится на вход внешнего прерывания. Так вот существует вероятность что эти два события совпадут, т.е. получим два импульса подряд от будильника и от таймера с малым интервалом( несколько мс)
Вопрос , что получится? Отработает подряд два прерывания или одно потеряется?
Контрллер atmega128 прерывание по срезу.
Кроме этого прерывания - других нет.
AVR и работа прерывания.
-
demiurg301
- Опытный кот
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
- Реклама
Re: AVR и работа прерывания.
Это сколько?demiurg301 писал(а):несколько мс
Скорее всего два раза.
При входе в прерывание флаг прерывания очищается сразу, как только PC установится на новый адрес. Следовательно второй импульс заново "взведет" флаг прерывания. И по выходу из первого (установится бит i), после выполнения одной инструкции основной программы заново пойдем в прерывание.Program Counter is vectored to the actual interrupt vector in order to execute the interrupt handling routine, and hardware clears the corresponding interrupt flag.
Если интервал между импульсами (срезами) меньше чем 4 такта (столько надо на вход в прерывание, минимум) то второе прерывание потеряется.
Как-то так....
— Не говорите мне что делать и я не скажу куда Вам идти...
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: AVR и работа прерывания.
Не знаю как в АВРах сделано, там походу флаг события сбрасывается аппаратно. Если сброс флага происходит при переходе программы на вектор, то Вам повезло. Следующее событие установит флаг, и, после выхода из ОП, программа снова вернётся в него. Если сброс флага происходит по выходу из ОП, то делайте обработчик шустрым. Т.е. его время не должно превышать время между двумя прерываниями. Несколько мс - это прилично. За это время можно многое успеть.
PS: Упсс... Уже ответили
PS: Упсс... Уже ответили
Re: AVR и работа прерывания.
Отработает. даже если между ними будет не несколько миллисекунд, а микросекунд -))demiurg301 писал(а):т.е. получим два импульса подряд от будильника и от таймера с малым интервалом( несколько мс)
Вопрос , что получится? Отработает подряд два прерывания или одно потеряется?
-
demiurg301
- Опытный кот
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Re: AVR и работа прерывания.
Хм, проблема в том что прерыванием выхожу из powerdown. Так что там не 4 такта наверно... (тактирую кварцем)
Хотя если в прерывание ввести опрос часов ( но наверно не желательно) на предмет "типа" импульса и отловить 2 срабатывание программно, то я тут подумал "ну и пусть себе теряется"
Спс, всё что хотел узнать...
Хотя если в прерывание ввести опрос часов ( но наверно не желательно) на предмет "типа" импульса и отловить 2 срабатывание программно, то я тут подумал "ну и пусть себе теряется"
Спс, всё что хотел узнать...
В том то и дело что я не знаю этого времени заранее, как карта ляжет и "злой дух" на кварц RTC(PCF8563) повлияет... Может и меньше микросекунд, там же просто логика жёсткая и защёлки в часах...Т.е. его время не должно превышать время между двумя прерываниями
- Реклама

