Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR > Архитектура ATMega128 |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Системное управление и сбросСброс микроконтроллера В процессе сброса во все регистры ввода-вывода записываются их начальные значения и выполнение программы начинается с вектора сброса. По вектору сброса должна хранится инструкция абсолютного перехода JMP на метку процедуры обработки сброса. Если в программе не используются источники прерывания, то векторы прерываний не используются, а зарезервированные под них ячейки памяти могут использоваться для равномерного расположения кода программы. Имеется также случай, когда вектор сброса расположен в секции прикладной программы, а векторы прерываний находятся в загрузочном секторе или наоборот. На рисунке 22 показана схема организации логики сброса. В таблице 19 приведены электрические характеристики схемы сброса. Порты ввода-вывода AVR-микроконтроллера немедленно возвращаются к их первоначальному состоянию, как только один из источников сброса становится активным. Для этого не требуется работа какой-либо синхронизации. После прекращения действия всех источников сброса вступает в силу счетчик задержки, продлевающий внутренний сброс. Данная последовательность требуется для гарантирования запуска микроконтроллера при достижении напряжением питания стабильного уровня. Длительность задержки при старте определяется конфигурационными битами CKSEL. Различные варианты установок длительностей задержек представлены в разделе “Источники синхронизации”. Источники сброса9 ATmega128 имеет пять источников сброса:
Таблица 19 – Характеристики сброса
Примечания:
Сброс при подаче питания Импульс сброса при подаче питания (POR) генерируется встроенной схемой. Пороговый уровень сброса приведен в таблице 19. POR инициируется всякий раз, когда VCC ниже порогового уровня. Схема POR может использоваться для запуска микроконтроллера, а также для выявления нарушения режима питания. Функцией схемы сброса при подаче питания (POR) является удержание микроконтроллера в состоянии сброса в течение определенного времени после того, как напряжение достигло уровня сброса при подаче питания. Если напряжение питания снизится ниже определенного уровня, то микроконтроллер снова сбросится без всяких задержек. Рисунок 23 – Запуск микроконтроллера (RESET соединен с VCC).
Внешний сброс Внешний сброс генерируется, если на вход RESET подать низкий уровень. Если подать импульс сброса длительностью более tRST (см. табл. 19), то будет генерирован сброс, даже если синхронизация не запущена. При подаче импульса сброса длительностью менее tRST сброс не гарантируется. Если сигнал на выводе RESET достигает порогового напряжения сброса VRST на его положительном фронте, то запускается счетчик задержки и микроконтроллер начнет работу только по истечении периода tTOUT.
Контроль напряжения питания ATmega128 содержит встроенную схему контроля питания (BOD), которая выполняет сравнение уровня VCC с фиксированным пороговым значением. Порог срабатывания схемы BOD может выбираться с помощью конфигурационного бита BODLEVEL. Порог равен 2.7В, когда BODLEVEL незапрограммирован, или 4.0В, когда BODLEVEL запрограммирован. Для исключения автоколебательного режима схема BOD характеризуется гистерезисом. С учетом гистерезиса результирующие пороги срабатывания следующие: VBOT+ = VBOT + VHYST/2 и VBOT- = VBOT - VHYST/2. Схема BOD может быть включена или отключена с помощью конфигурационного бита BODEN. Если разрешена работа BOD (BODEN запрограммирован) и уровень VCC снизился ниже порога срабатывания (VBOT- на рисунке 26), то схема BOD переводит микроконтроллер в состояние сброса. Когда VCC достигает значения выше порога срабатывания (VBOT+ на рисунке 26), то запускается счетчик задержки и микроконтроллер начнет работу по истечении времени tTOUT. Схема BOD реагирует на снижение VCC, если напряжение остается меньшим порога срабатывания дольше чем период времени tBOD (см. табл. 19).
Сторожевой таймер По истечении периода переполнения сторожевого таймера генерируется короткий импульс сброса длительностью равной одному периоду системной синхронизации (1 CK). Падающим фронтом этого импульса запускается счетчик задержки tTOUT.
Регистр управления и статуса микроконтроллера – MCUCSR В регистре управления и статуса микроконтроллера хранится информация об источнике, который вызвал сброс микроконтроллера. Обратите внимание, что в режиме совместимости с ATmega103 доступны только биты EXTRF и PORF. Разряд 4 – JTRF: Флаг индикации сброса через JTAG-интерфейс Данный бит принимает единичное состояние, если сброс был вызван записью лог. 1 в регистр JTAG Reset JTAG-инструкцией AVR_RESET. Данный бит сбрасывается автоматически при подаче питания или путем непосредственной записи лог. 0 в данный флаг. Разряд 3 – WDRF: Флаг индикации сброса сторожевым таймером Данный бит устанавливается после сброса сторожевым таймером. Данный бит сбрасывается при подаче питания или путем записи лог. 0 в данный флаг. Разряд 2 – BORF: Флаг индикации сброса схемой контроля напряжения питания Данный флаг принимает единичное состояние, если схема контроля напряжения питания перевела микроконтроллер в состояние сброса. Данный бит сбрасывается при подаче питания и путем записи лог. 0 в данный флаг. Разряд 1 – EXTRF: Флаг внешнего сброса Данный бит устанавливается при возникновении внешнего сброса. Флаг сбрасывается при подаче питания или путем записи лог. 0 в данный флаг. Разряд 0 – PORF: Флаг сброса при подаче питания Данный флаг устанавливается, если сброс был инициирован подачей питания. Данный бит сбрасывается только путем записи лог. 0 в данный флаг. Если флаги сброса необходимо использовать для определения причины сброса, то программист должен предусмотреть сброс значений флагов MCUCSR желательно сразу после опроса их значений. Если регистр очищается перед возникновением другого сброса, то источник данного сброса может быть найден среди флагов сброса. Встроенный источник опорного напряжения ATmega128 содержит встроенный источник опорного напряжения (ИОН). ИОН используется схемой контроля питания и может быть подключен ко входу аналогового компаратора или к АЦП. Опорное напряжение АЦП 2.56В генерируется встроенным ИОН. Сигналы разрешения и длительность запуска ИОН ИОН характеризуется задержкой при включении, которая может оказать негативное влияние, если не будет учтена. Длительность задержки приведена в таблице 20. Для оптимизации энергопотребления ИОН не всегда находится во включенном состоянии. ИОН остается во включенном состоянии в следующих случаях:
Следовательно, когда работа BOD запрещена и установлен бит ACBG или разрешена работа АЦП, программист должен предусмотреть задержку на время запуска ИОН перед использованием выходных данных аналогового компаратора или АЦП. В целях снижения потребляемой мощности в режиме выключения (Power-down) программист должен избежать приведенных выше трех условий для гарантирования, что ИОН будет отключен после перевода микроконтроллера в режим выключения. Таблица 20 – Характеристики встроенного ИОН
Сторожевой таймер Сторожевой таймер тактируется от отдельного встроенного генератора частотой 1 МГц. Данное значение типично для напряжения питания VCC = 5В. Значение частоты при другом напряжении питания см. на рис. 194. Период переполнения сторожевого таймера можно задавать путем управления предделителем (см. табл. 22). Инструкция WDR выполняет сброс сторожевого таймера. Сторожевой таймер также сбрасывается при выключении или во время сброса микроконтроллера. Период переполнения определяют восемь различных коэффициентов деления предделителя. Если инструкция сброса сторожевого таймера WDR не выполняется в течение времени равного периоду переполнения сторожевого таймера, то ATmega128 сбрасывается и начинает выполнение программы по вектору сброса. Для предотвращения неумышленного изменения периода переполнения или выключения сторожевого таймера могут быть использованы 3 различных уровня безопасности, которые выбираются конфигурационными битами M103C и WDTON в соотв. с табл. 21. Уровень безопасности 0 соответствует установкам в ATmega103. Для разрешения работы сторожевого таймера не требуются какие-либо специальные меры независимо от уровня безопасности (см. “Временные последовательности изменения конфигурации сторожевого таймера ”). Таблица 21 – Конфигурация сторожевого таймера при различных настройках бит M103C и WDTON
Регистр управления сторожевого таймера – WDTCR Разряды 7..5 – Зарезервированы Данные разряды являются зарезервированными и всегда считываются как 0. Разряд 4 – WDCE: Разрешение изменения сторожевого таймера Данный бит необходимо установить непосредственно перед записью лог. 0 в бит WDE. В противном случае запретить работу сторожевого таймере невозможно. После записи в данный бит лог. 1 он автоматически аппаратно сбросится по истечении четырех тактов синхронизации микроконтроллера. На уровнях безопасности 1 и 2 данный бит необходимо устанавливать также перед изменением настроек предделителя. См. “Временные последовательности изменения конфигурации сторожевого таймера”. Разряд 3 – WDE: Разрешение сторожевого таймера Работа сторожевого таймера разрешается (запрещается) путем установки (сброса) бита WDE. Сбросить бит WDE возможно, только если предварительно установить бит WDCE. Для выключения сторожевого таймера необходимо выполнить следующую последовательность:
На 2-ом уровне безопасности запретить работу сторожевого таймера невозможно даже с помощью указанной выше последовательности. См. “Временные последовательности изменения конфигурации сторожевого таймера”. Разряд 2..0 – WDP2, WDP1, WDP0: Выбор коэффициента деления Биты WDP2, WDP1 и WDP0 задают коэффициент деления частоты генератора сторожевого таймера после разрешения работы последнего. Значения коэффициентов деления и соответствующих периодов переполнения приведены в табл. 22. Таблица 22 – Настройка предделения генератора сторожевого таймера
В следующих примерах приведены функции выключения сторожевого таймера на Ассемблере и Си. В примерах предполагается, что система прерываний настроена таким образом, чтобы во время выполнения функции не возникло прерывание (например, с помощью общего запрета прерываний инструкцией cli ). Пример кода на Ассемблере WDT_off: ; Запись лог. 1 в WDCE и WDE ldi r16, (1<<WDCE)|(1<<WDE) out WDTCR, r16 ; Выкл. сторожевого таймера ldi r16, (0<<WDE) out WDTCR, r16 ret Пример кода на Си void WDT_off(void) { /* Запись лог. 1 в WDCE и WDE */ WDTCR = (1<<WDCE) | (1<<WDE); /* Выкл. сторожевого таймера */ WDTCR = 0x00; } Временные последовательности изменения конфигурации сторожевого таймера Последовательность изменения настройки сторожевого таймера плавно изменяется между тремя уровнями безопасности. Ниже описаны процедуры изменения настроек для каждого из уровней. Уровень безопасности 0 Данный режим совместим с работой сторожевого таймера ATmega103. Сторожевой таймер первоначально отключен, но может быть активизирован путем записи в бит WDE лог. 1 без каких-либо ограничений. Период переполнения таймера также может быть изменен без всяких ограничений. Для выключения активизированного сторожевого таймера должна быть выполнена процедура, описанная при рассмотрении бита WDE. Уровень безопасности 1 В данном режиме сторожевой таймер первоначально отключен. Его работа может быть разрешена путем записи лог. 1 в бит WDE без каких-либо ограничений. Временная последовательность должна быть соблюдена при изменении периода переполнения сторожевого таймера или выключении разрешенного сторожевого таймера. В данном случае должна быть выполнена следующая последовательность:
Уровень безопасности 2 В данном режиме сторожевой таймер всегда включен а значение бита WDE всегда считывается как лог. 1. Временная последовательность должна быть соблюдена при изменении периода переполнения сторожевого таймера. При этом, должна быть выполнена следующая последовательность:
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|