МИКРОКОНТРОЛЛЕР AVR - Страница 58

МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

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

Рис. 35.1. Распределение РОН между основной программой и обработчиками прерываний в AVR

Например, в прикладной программе, использующей два обработчика прерываний, которые могут быть вложенными, я произвел разделение регистров, как показано на рис. 35.1. Такое разделение позволяет обработчикам прерываний работать без сохранения содержимого каких-либо РОН, используемых основной программой, так как обработчики прерываний имеют отдельные индексные регистры и регистры общего назначения. Единственным регистром, содержимое которого надо сохранять в этом примере, является регистр состояния, который сохраняется в сегменте «Сохраненное содержимое SREG» блока регистров каждого обработчика. При таком способе разделения регистров обработчик прерываний может быть очень простым.

Go to Top