| Микроконтроллеры AVR |
|---|
Для ознакомления с AVR стоит посетить соответствующий раздел ATMEL Russian Home - AVR микроконтроллеры
Блок регистров быстрого доступа состоит из 32-х 8-битных регистров общего назначения. Операции с регистрами выполняются за один цикл. В течение цикла два операнда читаются из блока регистров, выполняется инструкция, результат сохраняется в блок регистров.
АЛУ поддерживает арифметические и логические операции между регистрами или между константой и регистром. Также существуют инструкции с одним операндом. AVR использует Гарвардскую архитектуру: у программы и данных раздельные шины и память. Выборка инструкции из памяти программ осуществляется двуступенчатым конвейером. Пока одна инструкция выполняется, следующая инструкция выбирается из памяти программ. Такая концепция позволяет выполнять инструкцию за один цикл. Программная память является памятью типа Flash.
Инструкции относительного перехода и относительного вызова имеют доступ к адресному пространству размером, зависящим от типа процессора (512...8К адресов). Каждый адрес программной памяти содержит одну 16- или 32-битную инструкцию.
Во время прерываний и вызовов процедур, адрес возврата сохраняется в стеке. В процессорах AT90S1200, ATtiny10/11/12, ATtiny28L стек реализован аппаратно, имеет глубину 3 уровня и предназначен для процедур и прерываний. Указатель стека недоступен. В остальных моделях, стек использует память SRAM, и поэтому ограничен только размером SRAM и использованием ячеек SRAM программой. Программы должны инициализировать указатель стека при сбросе. Указатель стека SP доступен для чтения-записи в пространстве ввода-вывода.
Многие модели микроконтроллеров имеют память данных SRAM, которая доступна пятью режимами адресации, поддерживаемыми архитектурой AVR.
Пространство ввода-вывода содержит 64 адреса для периферии: регистры управления, таймеры, счетчики, аналого-цифровые преобразователи, другие функции ввода-вывода.
Гибкий модуль прерываний имеет свои регистры управления в пространстве ввода-вывода с дополнительным битом глобального разрешения прерываний в регистре состояния. Каждый источник прерывания имеет собственный вектор прерывания в таблице векторов, которая расположена в начале программной памяти. Прерывания имеют приоритет в соответствии с позицией вектора в таблице. Вектор с младшим адресом имеет наивысший приоритет.
| Регистры общего назначения | R0 |
| R1 | |
| R2 | |
| ... | |
| ... | |
| R28 | |
| R29 | |
| R30 (Z-Register) | |
| R31 |
Все инструкции работы с регистрами имеют прямой доступ ко всем регистрам. Исключением являются пять арифметических и логических инструкций SBCI, SUBI, CPI, ANDI, ORI, работающих с константой и регистром, и инструкция LDI для загрузки константы в регистр. Эти инструкции работают только с регистрами второй половины блока - R16..R31. Обычные SBC, SUB, CP, AND, OR и все другие операции между двумя регистрами или с одним регистром работают с любыми регистрами блока.
Регистры 26...31 в зависимости от модели процессора могут служить также в качестве указателей для косвенной адресации блока регистров.
Высокоэффективное AVR АЛУ работает напрямую с блоком регистров общего назначения. Операции между регистрами блока выполняются за один цикл. Операции разделены на три главных категории: арифметические, логические и побитовые.
Пример программы:
В данной схеме подключения программа заставит светодиод мигать с периодом около 400 миллисекунд.
Продолжение следует...