вопрос по прерываниям

Kislorof
Offline
Зарегистрирован: 30.10.2012

Вот такой вопрос возник к знатокам - есть два прерывания по таймеру и одно внешнее. Что будет при одновременном срабатывании? Ну вот в такой ситуауии:
1 поступило внешнее
2 поступил первый таймер (код внешнего не отработал)
3 поступил второй таймер
4 поступило еще одно внешнее
И тут вопрос - мы еще не отработали 1 раз код т.к. время увеличилось за счет таймеров, а тут снова выскочило внешнее. Во внешнем прерывании ч считаю кол-во сигналов и мне надо их не потерять. Вопрос в том - внешнее в такой ситуации посчитает сигнал один раз или два?

Snubist
Offline
Зарегистрирован: 18.02.2013

А. В. Евстифеев "Микроконтроллеры AVR семейств Tiny и Mega фирмы ATMEL" пишет:

При возникновении прерывания флаг I регистра SREG аппаратно сбрасывается, запрещая тем самым обработку следующих прерываний. Однако в подпрограмме обработки прерывания этот флаг можно снова установить в «1» для разрешения вложенных прерываний.

......

Микроконтроллеры семейства Mega поддерживают очередь прерываний, которая работает следующим образом: если условия генерации одного или более прерываний возникают в то время, когда флаг общего разрешения прерываний сброшен (все прерывания запрещены), соответствующие флаги устанавливаются в «1» и остаются в этом состоянии до установки флага общего разрешения прерываний. После разрешения прерываний выполняется их обработка в порядке приоритета.
 
.......
 
После выхода из прерывания процессор всегда выполняет одну команду основной программы, прежде чем обслужить любое отложенное прерывание.