[an error occurred while processing this directive]
|
Переход на вектор прерывания происходит когда соответствующий флаг INTFx = 1 и GIMSK = 1.
Установку флага INTFx в 1 можно запрограммировать по фронту, спаду или по уровню.
Если прерывание работает по фронту/спаду - INTFx будет равен 1 от фронта/спада импульса до начала обработки прерывания.
Если во время выполнения подпрограммы обработки прерывания произойдет еще один фронт/спад - INTFx будет установлен в 1 и после выхода из прерывания МК снова в него ввалится (возможно выполнив прерывание с более высоким приоритетом).
Если вход прерывания запрограммирован на прерывание по уровню, то INTFx будет равен 1 пока на входе будет присутствовать активный уровень (обычно 0, но в некоторых AVR-ax возможен выбор 0 или 1), если во время обработки прерывания внешний сигнал не будет снят, то МК будет снова и снова вызывать подпрограмму обработки прерывания. Чтобы этого не происходило нужно в обработчике сделать что-нибудь, чтобы снять внешний сигнал, или сбросить в 0 соотвествующий флаг INTx в регистре GIMSK, или сидеть в обработчике пока внешний сигнал не будет снят, или перепрограммировать вход на прерывание по фронту ....
E-mail: info@telesys.ru