Регистр состояния микроконтроллера
Регистр состояния – SREG является частью пространства ввода/вывода и расположен по адресу $3F. В нем устанавливаются признаки результата арифметических операций. Отдельные биты регистра имеют следующее назначение (см. рис. 2.5)
Рис. 2.5.Регистр состояния SREG (Status Register). o Бит 0 – С(carry) Флаг переноса. Устанавливается, если во время выполнения операции был перенос из старшего разряда результата; o Бит 1 – Z(zero) Флаг нулевого результата. Устанавливается, если результат операции равен 0; o Бит 2 – N Флаг отрицательного результата. Устанавливается, если MSB (Most Significant Bit - старший бит) результата равен 1 (правильно показывает знак результата, если не было переполнения разрядной сетки знакового числа); o Бит 3 – V Флаг переполнения дополнения до двух. Устанавливается, если во время выполнения операции было переполнение разрядной сетки знакового результата; o Бит 4 – : Бит знака, S = N XOR V. Бит S всегда равен исключающему ИЛИ между флагами N (отрицательный результат) и V (переполнение дополнения до двух). Правильно показывает знак результата и при переполнении разрядной сетки знакового числа; o Бит 5 – H Флаг половинного переноса. устанавливается, если во время выполнения операции был перенос из 3-го разряда результата. o Бит 6 - T: Хранение копируемого бита. Команды копирования битов BLD (Bit LoaD) и BST (Bit STore) используют этот бит как источник и приемник обрабатываемого бита. Бит из регистра регистрового файла может быть скопирован в T командой BST, бит T может быть скопирован в бит регистрового файла командой BLD. o Бит 7 - I: Общее разрешение прерываний. Для разрешения прерываний этот бит должен быть установлен в единицу. Управление отдельными прерываниями производится регистром маски прерываний - GIMSK/TIMSK. Если флаг сброшен (0), независимо от состояния GIMSK/TIMSK, прерывания не разрешены. Бит I очищается аппаратно после входа в прерывание и восстанавливается командой RETI, для разрешения обработки следующих прерываний. |
Прерывания в микроконтроллере
Описать, что происходит внутри процессора во время выполнения прерывания очень просто. Если произошел запрос прерывания, и флаг I в регистре состояния установлен в 1, то адрес следующий команды сохраняется в стеке, а выполнения программы продолжается с адреса, хранящимся в соответствующем векторе прерывания. Когда запрос прерывания получен, и программа перешла по этому вектору (адресу), флаг I сбрасывается в 0, чтобы предотвратить возможность вызова нового прерывания во время обработки текущего прерывания. Флаг I будет снова установлен в 1 в конце обработчика прерывания, когда выполняется команда возврата RETI. Он также может быть установлен в 1 в процессе обработки (после сохранения контекстовых регистров), чтобы разрешить вложенные прерывания. Средние и старшие модели AVR могут обрабатывать столько вложенных прерываний, на сколько хватит объема стека для хранения содержимого счетчика команд и регистров контекста. Младшие модели имеют ограниченный объем стека (три позиции), который может быстро переполниться при выполнении вложенных прерываний или подпрограмм. |
Аппаратные средства AVR
Системный тактовый генератор AVR. AVR может использовать три различных источника системной частоты: кварцевый или керамический резонатор, внешний тактовый сигнал или встроенный RC-генератор (имеется не во всех моделях). Обычный диапазон частот для AVR – от 0 до 16 МГц. Кварцевый или керамический резонатор может быть подключен к AVR (см. рис. 2.6). Если используется одна из этих схем, то не следует подключать какие-либо другие устройства ни к одному из выводов XTAL. ![]() ![]() ![]() ![]()
Определить текущее состояние выхода компаратора можно путем опроса значения бита ACO в ACSR. Для уменьшения мощности потребления можно отключить компаратор, установив в 1 бит ACD в регистре ACSR. Перед тем, как включить или выключить компаратор, надо запретить все его прерывания путем сброса в 0 бита ACIE в регистре ACSR, чтобы предотвратить возможность поступления ложных запросов прерывания от компаратора. В МК AT90S8515 к выходу компаратора можно подключить вход захвата таймера. При этом можно зафиксировать момент изменения сигнала на выходе компаратора, если в регистре ACSR бит ACIC установлен в 1. Такая возможность позволяет измерять длительность сигнала, поступающего на компаратор. |
Конфигурирование МК
В AVR есть два типа битов, задающих конфигурацию МК. Биты конфигурирования «fuses bits» (плавкие перемычки) используются для выбора режима работы AVR, тогда как биты защиты «lock bits» используются для запрещения доступа к памяти.
. Биты конфигурирования различны для разных типов AVR. В AT90S1200 установка в 1 бита RCEN подключает встроенный RC-генератор, при этом внешние тактовые импульсы игнорируются. Когда бит SPIEN сброшен в 0, разрешается программирование МК по последовательному интерфейсу через порт SPI. Во всех этих моделях биты SPIEN и RCEN по умолчанию сброшены в 0.
МК AT90S8515 имеет биты SPIEN и FSTRT, которые позволяют при использовании внешнего тактового генератора производить быстрое включение МК без обычной задержки в 16мс.
Биты конфигурирования «fuses bits» могут быть установлены или сброшены только при параллельном программировании.
Биты защиты «lock bits» используются для запрещения/разрешения доступа к памяти программ в EEPROM, при этом достигаются свойства приведенные в таблице 2.2.
Таблица 2.2. Режимы защиты и биты блокировки
Биты блокировки | Тип защиты | ||
Режим | LB1 | LB2 | |
Защита не установлена | |||
Дальнейшее программирование флэш-памяти запрещено | |||
Как режим 2, но запрещено и чтение |
Примечание: биты блокировки стираются только при полном стирании памяти
Память данных EEPROM.
Операции чтения и записи области данных EEPROM довольно просты и надежны. Обращение к EEPROM производится при помощи команд с индексной адресацией, которые используют адрес, хранящийся в регистре EEAR.
Если EEPROM имеет емкость больше 256 байт, как у AT90S8515, то используются два адресных регистра: EEARH для хранения старшей части адреса и EEARL – для хранения младшей части. Эти регистры должны сохранять правильный адрес до тех пор, пока не буде закончена операция чтения или записи.
Запись в память данных EEPROM производится следующим образом:
1. Ожидание сброса в 0 бита EEWE в регистре управления EECR памяти EEPROM;
2. Запись в EEAR нужного адреса;
3. Запись в регистр данных EEDR нужных данных;
4. Установка в 1 бита EEMWE в регистре EECR. (Бит EEMWE не используется в AT90S1200);
5. В течении четырех тактов после установки бита EEMWE установить бит EEWE в 1 для начала записи в EEPROM. Операция записи занимает от 2,5 до 4мс.
Бит EEMWE регистра EECR обеспечивает аппаратную блокировку записи для того, чтобы уменьшить возможность случайного изменения EEPROM.
Чтение из EEPROM выполняется аналогичным образом.
1. Ожидание сброса в 0 бита EEWE в регистре управления EECR;
2. Запись в EEAR нужного адреса;
3. Установка в 1 бита EERE в регистре EECR;
4. Чтение данных из EEDR.
Операция записи должна быть закончена до того, как программа произведет попытку чтения из EEPROM. После установки в 1 бита EERE процессор переходит в состояние ожидания в течении двух тактов, пока данные выбираются из EEPROM. Это означает, что выполнение команды «SBI EECR, EERE», которая инициализирует операцию чтения, занимает не один такт, а три.