Регистр состояния микроконтроллера

 

Регистр состояния – SREG является частью пространства ввода/вывода и расположен по адресу $3F. В нем устанавливаются признаки результата арифметических операций. Отдельные биты регистра имеют следующее назначение (см. рис. 2.5)

  SREG
Символьное обозначение I T H S V N Z C
Бит

Рис. 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. Регистр состояния микроконтроллера - student2.ru а) б) Рис. 2.6.Схемы подключения к AVR керамического и кварцевого резонаторов а) без встроенных конденсаторов и б) со встроенными конденсаторами. Также AVR может синхронизироваться внешним тактовым сигналом, поступающим на вход XTAL1. Последний способ синхронизации – использование встроенного RC-генератора. Такой генератор на данный момент есть только в AT90S1200, он обеспечивает тактовую частоту 1 МГц. Этот режим задается при помощи одного из битов конфигурации (fuse bit) только при параллельном программировании МК.   Таймеры AVR. Источником сигнала переключения таймеров/счетчиков является либо тактовая частота процессора, либо внешний синхросигнал. Тактовая частота процессора может использоваться непосредственно или предварительно делиться. Выбор источника сигнала и коэффициента деления производится с помощью мультиплексора (см. рис. 2.8). Биты CSxn, управляющие мультиплексором, расположены в регистре управления таймера TCCR0. В AT90S8515, который содержит два таймерных блока, имеется два мультиплексора – по одному на каждый блок. В AT90S1200 есть только один таймерный блок и один мультиплексор. Содержимое таймера инкрементируется при поступлении переднего фронта переключающего сигнала. Поэтому синхросигнал со внешнего вывода МК поступает в мультиплексор в прямом и инвертированном. Значение внешнего сигнала проверяется при поступлении переднего фронта тактового сигнала процессора. На рис. 2.7 показан Таймер 0 – простой 8-разрядный таймер, содержимое которого может быть считано или записано. Отключение входного сигнала происходит путем выбора «заземленного» входа при помощи мультиплексора. При переполнении счетчика реализуется маскируемое прерывание. Таймер 1 – более сложный 16-разрядный таймер. Он может выдавать на выход импульсы и ШИМ-сигналы. Его большим достоинством является возможность реализации дополнительных функций, таких как таймер событий. Регистр состояния микроконтроллера - student2.ru Рис. 2.7. Структура таймера 0.   Сторожевой таймер. Сторожевой таймер представляет собой отдельный таймер с собственной частотой на 1 МГц, который при включении будет отсчитывать нужный интервал времени. Если произойдет переполнение до того, как команда WDR сбросит таймер в 0, то производиться перезапуск МК. Сторожевой таймер включается при установке в 1 бита WDE в регистре управления сторожевого таймера WDTCR. Содержимое битов WDPn этого регистра определяет интервал времени до того, как сторожевой таймер произведет перезапуск МК.   Устройство внешнего вывода. Схема подключения внешнего вывода, показанная на рис. 2.8, дает представление о его работе. С каждым набором линий («портом») связано три адреса ввода/вывода, которые позволяют определять значения данных, записанных в порт, направление передачи данных (1- вывод, 0 - ввод) и реальное значение сигнала на внешнем выводе. Вследствие этого есть возможность «подтянуть» выводы порта к высокому потенциалу для работы в режиме ввода данных, и использовать состояние некоторых выводов в качестве запросов прерываний. Чтение данных может быть либо непосредственно с внешнего вывода, либо с выхода регистра данных порта. Такая возможность является важной особенностью работы порта. Если внешняя линия перегружена или случайно закорочена на «землю», то состояние внешнего выхода никогда не будет меняться. Поэтому в некоторых случаях очень важно иметь возможность прочитать содержимое регистра порта и сравнить его с реальным состоянием внешнего вывода. Регистр состояния микроконтроллера - student2.ru Рис. 2.8. Схема внешнего вывода. «Подтягивание» внешнего вывода к высокому потенциалу управляется не отдельными битами регистра, а для этого используется специальная комбинационная схема. Эта схема разрешает «подтягивание» только, когда внешний вывод работает в режиме ввода данных, т.е. когда бит регистра направления данных сброшен в 0, а бит регистра данных порта установлен в 1.   Аналоговый ввод/вывод. Встроенный аналоговый компаратор напряжений дает возможность не только сравнивать входное напряжение с опорным, но и измерять длительность импульса при помощи встроенного таймера. Выход компаратора (см. рис. 2.9.) будет находиться в состоянии 1, если значение напряжения на положительном (не инвертирующем) входе AIN0 больше, чем на отрицательном (инвертирующем) AIN1. Регистр состояния микроконтроллера - student2.ru Рис. 2.9. Устройство компаратора напряжения. Состояние может использоваться для реализации различных вариантов запроса прерывания, которые задаются при помощи битов ACIS1 и ACIS0 (см. таблицу 2.1.) в регистре прерывания и состояния аналогового компаратора ACSR. Таблица 2.1. Установки битов ACIS1 и ACIS0.
ACIS1 ACIS0 Тип прерывания
Прерывание по переключению выхода компаратора
Зарезервировано
Прерывание по спадающему фронту (из 1 в 0)
Прерывание по нарастающему фронту (из 0 в 1)

Определить текущее состояние выхода компаратора можно путем опроса значения бита 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», которая инициализирует операцию чтения, занимает не один такт, а три.

Наши рекомендации