Читайте также: |
|
Чтобы значительно уменьшить время реакции на внешние события, используются многоуровневые или, что то же самое, векторные прерывания. В векторных прерываниях КАЖДОМУ источнику прерывания соответствует СВОЙ, вполне определенный, адрес процедуры обработки прерывания, который принято называть вектором прерывания.
Вообще, в качестве вектора прерывания могут быть использованы любые данные (адрес подпрограммы,адрес перехода, значение смещения относительно начала таблицы прерываний,специальные инструкции и т.д.), которые позволяют непосредственно перейти к процедуре обработки прерывания, не затрачивая времени на поиск источника прерывания. Какие данные используются в качестве вектора прерывания и каким именно образом они используются зависит от способа реализации системы прерываний в соответствующем процессоре.
PIC vs. AVR vs. MSP vs mcs51. В контроллерах PIC16 реализована одноуровневая система прерывания. При возникновении прерывания, процессор переходит по адресу0x0004 (точка входа по прерыванию). Далее, после контекстного сохранения регистров, выполняется программный опрос признаков прерываний (поллинг). Нужно также отметить, что при обнаружении источника прерывания требуется сбросить соответствующий установленный флажок запроса на прерывания.
В семействе PIC18 используется как одноуровневая (в режиме совместимости с PIC16), так и двухуровневая система прерываний. В режиме совместимости при возникновении прерывания процессор переходит к процедуре обработки прерывания по адресу 0x000008и далее все происходит аналогично PIC16. При двухуровневой системе прерывания имеются два вектора перехода 0x000008 и 0x000018. Присвоение уровня каждому из имеющихся источников прерывания задается программным путем, с помощью соответствующих признаков. Способ организации системы прерывания (одно- или двухуровневая)также определяется значением соответствующего разряда в регистре управления прерываниями.
В контроллерах семейства AVR реализована векторная система прерываний. При обнаружении прерывания, процессор сразу переходит по вектору прерывания к процедуре обработки прерываний от данного источника.Вектора прерываний расположены в начальных адресах программной памяти и представляют из себя команду перехода на обработчик прерывания. Количество векторов прерываний соответствует числу возможных источников прерываний, которые зависят от конкретного типа контроллера. Следует добавить, что сброс флажков запроса на прерывания происходит автоматически при переходе по вектору прерывания и выполнение каких-либо инструкций для этого не требуется.
В контроллерах семейства MSP430 система прерываний также является векторной, т.е.каждому периферийному модулю соответствует свой вектор прерывания. Однако, это не исключает необходимости программного контроля (поллинга), т.к. некоторые периферийные модули имеют множественные источники прерываний. Пример – прерывания от порта ввода/вывода.В данном случае имеется возможность программно разрешать прерывания от индивидуальных выводов порта. Даже в том случае, если разрешены прерывания от более,чем одного входа, они все будут иметь одинаковый вектор прерываний. Определить какой конкретно вход являлся источником прерывания можно только программно. Эта особенность также влияет и на сброс флагов прерываний – флаги прерывания с множественными источниками не сбрасываются автоматически в отличие от флагов прерывания с одним источником. Адрес и количество векторов прерывания зависят от конкретного типа контроллера. Вектора прерываний находятся в конце программной памяти (адресного пространства) и представляют из себя адрес обработчика прерывания.
В контроллерах семейства mcs51 система прерываний также является векторной, но для вектора прерывания зарезервирован довольно большой обьемпамяти (8 байт), что иногда бывает достаточно для его обработчика. Флаги прерывания сбрасываются автоматически при переходе к обработчику прерываний,если у прерывания возможен только один источник и несбрасываются если у прерывания может быть два и более источников. В последнем случае необходимо программно сбросить флаг вызвавший прерывание после выяснения причины прерывания(поллинга). Вектора располагаются в начальных адресах программной памяти.
Дата добавления: 2015-10-24; просмотров: 81 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Системы прерываний. Назначение, принцип работы и организация системы прерываний. | | | Вложенные прерывания |