Микроконтроллеры для систем автоматики - часть 26

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  24  25  26  27   ..

 

 

Микроконтроллеры для систем автоматики - часть 26

 

 

 

103 

В  активном  режиме  при  напряжении  питания  3В  и  тактовой  частоте 4 МГц 

микроконтроллер  потребляет  ток 5 мА.  Для  снижения  энергопотребления  в  нем 
предусмотрено 4 различных  режима.  Для  перевода  в  любой  из  этих  режимов 
энергосбережения  бит SE (Sleep Enable)  в  регистре MCUCR должен  быть  установлен  в 
состояние  1.  Биты SM1  и SM0 (Sleep Mode Select bits 1 and 0

регистра MCUCR 

определяют, какой из четырех режимов: 

º 

Idle, 

º 

ADC Noise Reduction, 

º 

Power Down или  

º 

Power Save  

будет запущен командой SLEEP. Выбор режима осуществляется в соответствии с 

таблицей 14.1.  

Таблица 14.1.  

Выбор режимов энергосбережения микроконтроллера ATmega163 

SM1 SM0 Режим энергосбережения 

0 0 

Холостого хода (Idle) 

Шумоподавления (ADC Noise Reduction) 

1 0 

Ожидания (Power-down) 

Экономии (Power Save) 

В  любом  из  четырех  режимов  процессорное  ядро  контроллера  останавливается. 

При возникновении разрешенного прерывания во время режима энергосбережения, ядро 
включается,  выполняет  подпрограмму  обработки  прерывания  и  продолжает  работу  в 
активном режиме. Если во время режима энергосбережения происходит сброс, ядро также 
активизируется  и  начинает  работу  по  вектору  сброса.  Содержимое  регистров  общего 
назначения,  памяти  данных  и  регистров  ввода/вывода  в  процессе  активизации  не 
изменяется. 

 

14.1. Режим Idle 

Если  биты SM1/SM0  находятся  в  состоянии 00, то  команда SLEEP переводит 

микроконтроллер в режим ожидания Idle. В этом режиме его ток потребления уменьшается 
примерно  в 2,5 раза  (при Vcc = 3В  и  Fск= 4 Мгц  ток  равен  примерно  1,9  мА).  При  этом 
останавливается  процессорное  ядро,  но  остаются  активными  таймеры/счетчики, 
сторожевой таймер и система прерываний. Это обеспечивает последующую активизацию 
ядра  внешними  прерываниями  и  такими  внутренними  прерываниями,  как  переполнение 
таймера и завершение приема UART. При активизации микроконтроллера из Idle режима 
программа начинает выполняться незамедлительно. 

14.2. Режим ADC Noise Reduction 

Когда SM1/SM0 биты установлены в 01, команда SLEEP заставит микроконтроллер 

ввести режим шумоподавления ADC Noise Reduction. В этом режиме процессорное ядро 
останавливается,  но  разрешается  работа  аналого-цифрового  преобразователя,  внешних 
прерываний, 2-проводного  последовательного  интерфейса,  таймера/счетчика  и 
сторожевого таймера.  

Режим ADC Noise Reduction улучшает  шумовую  среду  для  аналого-цифрового 

преобразователя,  повышая  его  разрешающую  способность.  Аналого-цифровой 
преобразователь при введении этого режима запускается автоматически.  

 

104 

Активизация  процессорного  ядра  происходит  при  прерываниях  от  аналого-

цифрового  преобразователя,  от  двухпроводного  интерфейса  и  любом  сбросе 
микроконтроллера.  

14.3. Режим Power Down 

При  установке  битов SM1/SM0  в  состояние  10  команда SLEEP переводит 

микроконтроллер в режим останова Power Down. В этом режиме его ток потребления менее 
1  мкА.  При  этом  останавливается  внешний  генератор.  Пользователь  может  разрешить 
работу  сторожевого  таймера.  Если  сторожевой  таймер  разрешен,  то  активизация 
процессорного  ядра  произойдет  по  завершении  установленного  в  сторожевом  таймере 
периода времени.  

14.4. Режим Power Save  

При  установке  битов SM1/SM0  в  состояние  11  команда SLEEP переводит 

микроконтроллер  в  режим  экономии  Power Save.  Этот  режим  аналогичен  режиму  Power 
Down,  но  если  таймер/счетчик 0 тактируется  асинхронно,  т.е.  бит AS0 в  регистре ASSR 
установлен,  то в этом режиме таймер/счетчик 0 будет работать и микроконтроллер будет 
активироваться  прерываниями  по  переполнению  или  совпадению  с  выхода 
таймера/счетчика 0. 

15. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ МИКРОКОНТРОЛЛЕРОВ 

15.1. Способы программирования энергонезависимой памяти 

В процессе программирования микроконтроллеров разработанная пользователем 

программа  заносится  в  энергонезависимую  память.  При  этом  выполняются  операции  по 
стиранию, чтению и записи различных элементов памяти кристалла. Типовыми операциями 
являются: 

º 

операция “Chip erase” (стирание кристалла); 

º 

чтение/запись FLASH-памяти программ; 

º 

чтение/запись EEPROM памяти данных; 

º 

чтение/запись конфигурационных FUSE-битов; 

º 

чтение/запись LOCK-битов защиты программной информации; 

º 

чтение SYGNATURE-битов идентификации кристалла; 

Микроконтроллеры  обычно  поставляются  со  стертыми  встроенными FLASH и 

EEPROM блоками памяти (содержимое всех ячеек = $FF), готовыми к программированию. 
Программирование кристалла, как правило, может выполняться различными способами: 

º 

Параллельное 

программирование – информация 

заносится 

в 

энергонезависимую  память  через  параллельные  порты  ввода/вывода. 
Обычно  эта  операция  выполняется  на  специальных  приборах – 
программаторах. 

º 

Последовательное  программирование – информация  заносится  в 
энергонезависимую  память  через  схему  последовательного  интерфейса. 
Операция,  как  правило,  может  выполняться  непосредственно  в 
микропроцессорной системе (In System Programming). 

º 

Самопрограммирование  может  осуществляться  самим  микроконтроллером 
под  управлением  программы,  записанной  в  Boot Program Section  флэш-
памяти программ.  

 

105 

П

А Р А Л Л Е Л Ь Н О Е   П Р О Г Р А М М И Р О В А Н И Е

 

При параллельном программировании информация поступает на микроконтроллер 

в  параллельном  коде  через  один  из  его портов. Ряд других контактов микроконтроллера 
используется  для  управления  записью  и  чтением  данных.  На  рис.  15.1.  показана  схема 
подключения микроконтроллера ATmega163 при параллельном программировании. 

 

Рис. 15.1. Параллельное программирование микроконтроллера ATmega163 

Для перевода устройства в режим параллельного программирования необходимо: 

º 

Подать напряжение  4.5 - 5.5V на контакт Vcc. 

º 

Установить на контактах #RESET, BS0 и BS1 сигнал низкого уровня на время 
не менее 100 нс.. 

º 

Подать напряжение 11.5 - 12.5V на контакт #RESET.  

В  каждом  такте  программирования  импульс  синхронизации  длительностью  не 

менее 500 нс подается на контакт XTAL1. Совокупность остальных сигналов (табл. 15.1 и 
табл.  15.2)  описывает  операцию,  выполняемую  в  момент  прихода  синхроимпульса.  В 
зависимости  от  сочетания  сигналов  информация  на  линиях  порта  В  микроконтроллера, 
может  быть  восприняты  как  команда  управления  процессом  записи,  как  данные  или  как 
один из байтов адреса ячейки памяти. 

Таблица 15.1. 

Назначение сигналов при параллельном программировании 

Наименование  

сигнала в режиме 

программирования  

Контакт  

Вход/ 

выход 

(I/O) 

Функция сигнала 

RDY/BSY  

PD1  

0: Программирование, 
1: Чтение команды 

OE  

PD2 

Включение выхода (активный 
низкий уровень) 

WR  

PD3 

Импульс записи (активный низкий 

 

106 

уровень) 

BS1 PD4 

Выбор байта 1 (‘0’ – младший байт, 
‘1’ – старший байт) 

XA0 PD5 

Операция (бит 0) 

XA1 PD6 

Операция (бит 1) 

PAGEL PD7 

Загрузка страницы памяти 
программ 

BS2 PA0 

Выбор байта 2 (‘0’ – младший байт, 
‘1’ – старший байт) 

DATA  

PB7 

Двунаправленный ввод/вывод 
(вывод при OE=0) 

 

Таблица 15.2. 

Выбор операции при параллельном программировании 

XA1 XA0 

Операция при импульсе на входе XTAL1 

0  

Загрузка адреса Flash или EEPROM памяти (байт адреса задается 
сигналом BS1) 

0  

Загрузка данных (байт адреса задается сигналом BS1 

1  

Загрузка команды 

1  

1   Ожидание 

В  таблице  15.3  приведены  команды  параллельного  программирования 

микроконтроллера  ATmega163,  различаемые  микроконтроллером  при  выполнении 
операции «Загрузка команды» (ХА1=1, ХА0=0). 

Таблица 15.3. 

Команды параллельного программирования микроконтроллера ATmega163 

Байт 

Команда 

1000 0000 

Очистка кристалла 

0100 0000 

Запись Fuse битов 

0010 0000 

Запись Lock битов 

Окончание табл. 15.3. 

Байт 

Команда 

0001 0000 

Запись Flash памяти 

0001 0001 

Запись EEPROM 

0000 1000 

Чтение байта Signature 

0000 0100 

Чтение Fuse и Lock битов 

0000 0010 

Чтение Flash памяти 

0000 0011 

Чтение EEPROM 

 
FLASH и EEPROM блоки памяти программируются байт за байтом.  

 

 

 

 

 

 

 

содержание   ..  24  25  26  27   ..