ВУЗ:
Составители:
Рубрика:
140
Перемещение между секторами загрузочной и прикладной программы.
Общий регистр управления прерываниями задает размещение таблицы
векторов прерываний.
Регистр управления микроконтроллером – MCUCR
Разряд 7 6 5 4 3 2 1 0
SRE SRW10 SE SM1 SM0 SM2 IVSEL IVCE MCUCR
Чтение/запись Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп. Чт./Зп.
Исх. значение 0 0 0 0 0 0 0 0
Разряд 1 – IVSEL: Выбор вектора прерывания
Если бит IVSEL сброшен (=0), то векторы прерываний размещаются в на-
чале флэш-памяти. Если данный бит установлен (=1), то векторы прерываний
перемещаются в начало загрузочного сектора флэш-памяти. Фактический адрес
начала загрузочного сектора определяется значением конфигурационных бит
BOOTSZ. Во избежание несанкционированных изменений таблицы векторов
прерываний необходимо выполнить специальную последовательность
записи
при изменении бита IVSEL:
1. Записать лог. 1 в бит разрешения изменения вектора прерывания
(IVCE).
2. В течение четырех машинных циклов записать желаемое значение в
IVSEL, при этом записывая лог. 0 в IVCE.
Прерывания будут автоматически отключены при выполнении такой по-
следовательности. Прерывания отключаются во время установки IVCE и оста-
нутся отключенными до перехода к инструкции следующей
за инструкцией за-
писи в IVSEL. Если IVSEL не записан, то прерывания будет находиться в от-
ключенном состоянии 4 такта синхронизации. Состояние бита I в регистре ста-
туса не затрагивается при автоматическом отключении прерываний.
Прим.: Если векторы прерываний помещаются в загрузочный сектор и
бит защиты загрузочного сектора BLB02 запрограммирован, то прерывания бу-
дут отключены при
выполнения программы с секторе прикладной программы.
Если векторы прерываний размещены в прикладном секторе и бит защиты
BLB12 запрограммирован, то прерывания становятся отключенными при вы-
полнении программы в загрузочном секторе.
Разряд 0 – IVCE: Разрешение изменения вектора прерывания
В бит IVCE должна быть записана лог. 1, чтобы разрешить изменение би-
та IVSEL. IVCE сбрасывается аппаратно через четыре машинных цикла
после
записи лог. 1 в IVSEL. Установка бита IVCE приведет к отключению прерыва-
ний, что описано при рассмотрении бита IVSEL выше. Ниже приведен пример
кода.
Пример кода на Ассемблере
Move_interrupts:
; Разрешение изменения векторов прерываний
ldi r16, (1<<IVCE)
Страницы
- « первая
- ‹ предыдущая
- …
- 139
- 140
- 141
- 142
- 143
- …
- следующая ›
- последняя »