AVR и работа прерывания.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

AVR и работа прерывания.

Сообщение demiurg301 »

Подскажите такую вещи коты.

Есть прерывание от будильника. При этом это прерывание генерит как таймер так и RTC будильник. Всё заводится на вход внешнего прерывания. Так вот существует вероятность что эти два события совпадут, т.е. получим два импульса подряд от будильника и от таймера с малым интервалом( несколько мс)

Вопрос , что получится? Отработает подряд два прерывания или одно потеряется?

Контрллер atmega128 прерывание по срезу.
Кроме этого прерывания - других нет.
Реклама
Аватара пользователя
md5sum
Вымогатель припоя
Сообщения: 672
Зарегистрирован: Вт окт 27, 2009 22:39:19
Откуда: Москва

Re: AVR и работа прерывания.

Сообщение md5sum »

demiurg301 писал(а):несколько мс
Это сколько?
Скорее всего два раза.
Program Counter is vectored to the actual interrupt vector in order to execute the interrupt handling routine, and hardware clears the corresponding interrupt flag.
При входе в прерывание флаг прерывания очищается сразу, как только PC установится на новый адрес. Следовательно второй импульс заново "взведет" флаг прерывания. И по выходу из первого (установится бит i), после выполнения одной инструкции основной программы заново пойдем в прерывание.
Если интервал между импульсами (срезами) меньше чем 4 такта (столько надо на вход в прерывание, минимум) то второе прерывание потеряется.

Как-то так.... :)))
— Не говорите мне что делать и я не скажу куда Вам идти...
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: AVR и работа прерывания.

Сообщение Аlex »

Не знаю как в АВРах сделано, там походу флаг события сбрасывается аппаратно. Если сброс флага происходит при переходе программы на вектор, то Вам повезло. Следующее событие установит флаг, и, после выхода из ОП, программа снова вернётся в него. Если сброс флага происходит по выходу из ОП, то делайте обработчик шустрым. Т.е. его время не должно превышать время между двумя прерываниями. Несколько мс - это прилично. За это время можно многое успеть.

PS: Упсс... Уже ответили :roll:
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: AVR и работа прерывания.

Сообщение Satyr »

demiurg301 писал(а):т.е. получим два импульса подряд от будильника и от таймера с малым интервалом( несколько мс)
Вопрос , что получится? Отработает подряд два прерывания или одно потеряется?
Отработает. даже если между ними будет не несколько миллисекунд, а микросекунд -))
Реклама
Эиком - электронные компоненты и радиодетали
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: AVR и работа прерывания.

Сообщение demiurg301 »

Хм, проблема в том что прерыванием выхожу из powerdown. Так что там не 4 такта наверно... (тактирую кварцем)
Хотя если в прерывание ввести опрос часов ( но наверно не желательно) на предмет "типа" импульса и отловить 2 срабатывание программно, то я тут подумал "ну и пусть себе теряется" :)))
Спс, всё что хотел узнать...
Т.е. его время не должно превышать время между двумя прерываниями
В том то и дело что я не знаю этого времени заранее, как карта ляжет и "злой дух" на кварц RTC(PCF8563) повлияет... Может и меньше микросекунд, там же просто логика жёсткая и защёлки в часах...
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»