Регистр XDIV используется для установления коэффициента деления частоты кварцевого генератора в диапазоне от 1 до 129.
Бит 7 - IVEN. Разрешение деления частоты XTAL. При установленном в 1 бите XDIVEN тактовая частота CPU и всей периферии делится в соответствии с установленным битами XDIV6 - XDIV0 коэффициентом деления. Такая возможность может быть использована для снижения потребления, при условии допустимости снижения вычислительной мощности. Этот бит может быть установлен и очищен в процессе выполнения программы тогда, когда это определяется применением.
Биты 6..0 - XDIV6..XDIV0. Биты выбора коэффициента деления. Эти биты устанавливают коэффициент деления тактовой частоты при установленном бите XDIVEN. Если десятичное значение этих семи битов обозначить через d, то результирующая тактовая частота CPU будет определяться по формуле fclk=XTAL/(129-d).
Состояния этих битов можно изменить только когда бит XDIVEN сброшен (в состоянии 0). При установленном бите XDIVEN, записанное единовременно в биты XDIV6..XDIV0 значение будет определять коэффициент деления. При сбросе бита XDIVEN записанные в биты XDIV6..XDIV0 значения игнорируются. Поскольку делитель делит тактовую частоту, поступающую на MCU, то и на периферийные устройства поступает тактовая частота с тем же коэффициентом деления.
Регистр управления микроконтроллером – MCUCR
Разряд | ||||||||
SRE | SRW10 | SE | SM1 | SM0 | SM2 | IVSEL | IVCE | |
W/R | W/R | W/R | W/R | W/R | W/R | W/R | W/R | W/R |
Исходное значение |
Бит 7 – SRE. Разрешение внешней SRAM. Установленный в 1 бит SRE разрешает обращение к внешней SRAM данных и переводит работу выводов AD0-7 (порт A), A8-15 (порт C), WR и RD на выполнение альтернативной функции. Затем бит SRE перенастраивает установки направлений любых выводов в соответствующих регистрах направления данных. Очистка бита SRE (установка в 0) запрещает обращение к внешней SRAM и восстанавливает нормальные установки направлений выводов и данных.
Бит 6 – SRW10. Режим ожидания внешней SRAM. При установленном в 1 бите SRW к циклу обращения к внешней SRAM добавляется один цикл ожидания. При сброшенном в 0 бите SRW10 обращение к внешней SRAM выполняется по трехцикловой схеме.
Бит 5 – SE. Разрешение режима Sleep. Установленный в 1 бит SE разрешает перевод MCU в режим sleep по команде SLEEP. Чтобы исключить перевод MCU в незапрограммированный режим sleep, рекомендуется устанавливать бит SE непосредственно перед выполнением команды SLEEP.
Биты 4,3 - SM1, SM0. Биты выбора режима Sleep. Данные биты позволяют выбрать один из трех возможных режимов sleep, как показано в таблице 2.6.
Таблица 2.6. Выбор режима Sleep
SM1 | SM0 | Sleep Mode | Режим |
Режим Idle | холостой ход | ||
Зарезервировано | |||
Режим Power Down | отключение | ||
Режим Power Save | энергосберегающий |
Бит 1 – IVSEL. Выбор вектора прерывания. Если бит IVSEL сброшен (=0), то векторы прерываний размещаются в начале флэш-памяти. Если данный бит установлен (=1), то векторы прерываний перемещаются в начало загрузочного сектора флэш-памяти. Фактический адрес начала загрузочного сектора определяется значением конфигурационных бит BOOTSZ. Во избежание несанкционированных изменений таблицы векторов прерываний необходимо выполнить специальную последовательность записи при изменении бита IVSEL:
1. Записать 1 в бит разрешения изменения вектора прерывания (IVCE).
2. В течение четырех машинных циклов записать желаемое значение в IVSEL, при этом записывая 0 в IVCE.
Прерывания будут автоматически отключены при выполнении такой последовательности. Прерывания отключаются во время установки IVCE и останутся отключенными до перехода к инструкции следующей за инструкцией записи в IVSEL. Если IVSEL не записан, то прерывания будет находиться в отключенном состоянии 4 такта синхронизации. Состояние бита I в регистре статуса не затрагивается при автоматическом отключении прерываний[3].
Бит 0 – IVCE. Разрешение изменения вектора прерывания. В бит IVCE должна быть записана 1, чтобы разрешить изменение бита IVSEL. IVCE сбрасывается аппаратно через четыре машинных цикла после записи 1 в IVSEL. Установка бита IVCE приведет к отключению прерываний, что описано при рассмотрении бита IVSEL выше.
Пример кода на АссемблереMove_interrupts:; Разрешение изменения векторов прерыванийldi r16, (1<<IVCE)out MCUCR, r16; Перемещение векторов в загрузочный сектор флэш-памятиldi r16, (1<<IVSEL)out MCUCR, r16retКонтрольные вопросы
1. Проанализируйте архитектурные особенности МК семейства AVR.
2. Какие периферийные модули содержит микроконтроллеры семейства AVR?
3. Что означает «гарвардский RISC-процессор»? В чем особенности RISC-процессора?
4. Для чего используется FLASH память в МК семейства AVR?
5. Для чего используется EEPROM в МК семейства AVR?
6. Что означает «Спящий» режим МК?
7. Что с собой представляет регистровый файл? Назначение.
8. На какие группы делятся МК семейства AVR? В чем их отличие?
9. В чем особенность технологии picoPower?
10. Отличительные особенности МК семейства AVR
11. Дайте общую характеристику МК семейства AVR
12. Дайте определение программной модели МК. Состав программной модели.
13. Регистры общего назначения (РОН). Назначение РОН.
14. Указатели памяти и их назначение. Примеры использования указателей памяти. Команды обращения к памяти.
15. Регистр статуса SREG микроконтроллера. Назначение битов регистр статуса SREG.
16. Приведите примеры использования флажков регистра статуса SREG.
17. Назначение бита I (разрешение глобального прерывания) регистра статуса МК.
18. С помощью, каких команд сбрасываться и устанавливаться бит I регистра статуса МК?
19. Приведите примеры использования бита T (бит сохранения копии) регистра статуса МК.
20. Стек. Назначение. Принцип работы.
21. Указатель стека. Назначение. Принцип работы. Команды работы со стеком. Чем ограничивается объем стека?
22. Как меняется содержимое указателя стека, самого стека и счетчика команд (РС) после выполнения команд POP и PUSH?
23. Как меняется содержимое указателя стека, самого стека и счетчика команд (РС) после выполнения команд CALL и RET?
24. Чем отличаются команды RET и RETI?
25. Модуль прерываний МК. Назначение и принципы обработки прерываний. Источники внутренних и внешних запросов прерываний. Примеры.
26. Регистры А и В управления внешними прерываниями и их назначение. Примеры использования регистров.
27. Регистр маски внешнего прерывания EIMSK и его назначение. Пример использования регистра.
28. Регистр флажков внешних прерываний EIFR и его назначение. Пример использования регистра.