Работа микроконтроллера иего программирование
Программированиемикроконтроллера заключается в записи:
■ кодовкоманд программы и констант в FlashROM;
■ кодовисходных данных в EEPROM;
■требуемых значений установочных битов (Fuse Bits);
■требуемых значении битов защиты (Lock Bits).
Вмикроконтроллерах, поступающих в продажу, во всех ячейках FlashROM записан код$FFFF, во всех ячейках EEPROM — код $FF, биты защиты имеют единичное значение,а установочные биты могут иметь разные значения. Исходные значения установочныхбитов у микроконтроллеров разных типов указаны в приложении П6. Кроме того, втрех специальных ячейках памяти записаны сигнатурные байты, определяющие типмикроконтроллера.
Коды,записанные в FlashROM и EEPROM, сигнатурные байты и значения установочных битови битов защиты могут быть прочитаны для контроля правильности записи иопределения типа и состояния микроконтроллера.
Вмикроконтроллерах семействах AVR имеются два бита защиты — LB1 и LB2. Приединичном значении обоих битов возможны и запись, и чтение кодов. Послепрограммирования бита LB1 (LB1=O) дальнейшая запись кодов в FlashROM и EEPROM иизменение значения установочных битов невозможны. После программирования битаLB2 (LB1=O, LB2 = 0) невозможно также чтение кодов, записанных в FlashROM иEEPROM, и значений установочных битов.
Приперепрограммировании микроконтроллера (программировании микроконтроллера, ранеепрошедшего программирование) необходимо предварительно «стереть»прежнюю запись.
При стиранииво всех ячейках FlashROM и EEPROM восстанавливаются коды $FFFF и $FFсоответственно, биты защиты принимают единичное значение, а установочные биты исигнатурные байты остаются без изменения. Допускается выполнить до 1000 циклов«стирание-запись» для ячеек FlashROM и до 100000 циклов для ячеекEEPROM.
Запись ичтение кодов при программировании выполняются побайтно. Ввод и вывод битов вбайте могут выполняться параллельно или последовательно.
Вмикроконтроллерах семейства AVR реализуются следующие способы программирования:
1.Параллельное программирование с использованием дополнительного источниканапряжения +12 В (High-Voltage Parallel Programming, HVPP);
2.Последовательное программирование с использованием дополнительного источниканапряжения +12 В (High-Voltage Serial Programming, HVSP);
3.Последовательное программирование без использования дополнительного источниканапряжения {Low-Voltage Serial Programming, LVSP).
Самопрограммирование(Self-Programming, SLFP). Возможность использования названных способовпрограммирования в микроконтроллерах разных типов отмечена знаком "+"в табл. 1.
Программированиес использованием дополнительного источника напряжения (HVPP и HVSP) выполняетсяс помощью программатора до установки микроконтроллера в аппаратуре, где емупредстоит работать. Последовательное программирование без использованиядополнительного источника напряжения (LVSP) может выполняться после установкимикроконтроллера в аппаратуре (In-System Programming). Программирование поспособу LVSP возможно при нулевом значении установочного бита SPIEN.
Припрограммировании по способу LVSP микроконтроллер находится в рабочем состоянии,значения напряжения питания и тактовой частоты лежат в пределах, установленныхдля микроконтроллера данного типа (приложение Ш). Вывод RESET соединен с шинойGND. Ввод и вывод байтов при программировании выполняются с использованием трехвыводов — MOSI, MISO и SCK.
Таблица 1Тип МК Способ программирования Выводы порта SPI HVPP HVSP LVSP* SLFP MOSI MISO SCK t11 + t12 + + PBO PB1 PB2 t15 + + PBO PB1 PB2 2323 + + PBO PB1 PB2 2343 + + PBO PB1 PB2 1200 + + PB5 PB6 PB7 2313 + + PB5 PB6 PB7 t28 + 4433 + + PB3 PB4 PB5 8515 + + PB5 PB6 PB7 8535 + + PB5 PB6 PB7 m163 + + + PB5 PB6 PB7 m103 + + PB2** PB3" PB1
* —выполняется при SPIEN = 0;
1 — припрограммировании RXD и TXD
Вмикроконтроллерах, имеющих последовательный порт ввода-вывода SPI (табл. 1),используются выводы этого порта. В микро-Контроллерах без порта SPI находитсявспомогательный порт SPI, работающий только при программировании в режимеведомого устройства. Функции выводов MOSI, MISO и SCK выполняют выводыпараллельных портов ввода-вывода.
Выводымикроконтроллера, используемые в качестве входов MOSI и SCK и выхода MISO умикроконтроллеров разных типов указаны в табл. 1. В микроконтроллере типа m10Звместо выводов MOST и MISO используются выводы RXD и TXD соответственно.
Умикроконтроллеров типа ml63 и ml03 запись байтов в FlashROM выполняется за дваэтапа. На первом этапе байты записываются в буферное запоминающее устройство.На втором этапе выполняется перепись всех кодов из буферного запоминающегоустройства в страницу FlashROM. Страница у микроконтроллеров типа т163 и ml03имеет емкость 128 и 256 байтов соответственно.
Припрограммировании по способу LVSP в микроконтроллере могут выполняться следующиеоперации:
1) разрешениеLVSP (Programming Enable);
2) стираниезаписи (Chip Erase);
3) записьбайта в FlashROM (Write Program Memory);
4) записьбайта в буферные ЗУ (Load Flash Page);
5) переписьиз буферного ЗУ в FlashROM (Write Flash Page);
6) чтениебайта из FlashROM (Read Program Memory);
7) записьбайта в EEPROM (Write EEPROM);
8) чтениебайта из EEPROM (Read EEPROM);
9) записьбитов защиты (Write Lock Bits);
10) чтениебитов защиты (Read Lock Bits);
11) записьустановочных битов (Write Fuse Bits);
12) чтениеустановочных битов (Read Fuse Bits);
13) чтениесигнатурного байта (Read Signature Byte);
14) чтениекалибровочного байта (Read Calibration Byte).
Операции №№10 и 12 у микроконтроллеров некоторых типов
объединены водну операцию. При выполнении операции «Запись байта в EEPROM» автоматическиперед записью выполняется стирание соответствующей ячейки EEPROM.
Операции №№1, 2, 6, 7, 8, 9, 13 выполняются в микроконтроллерах всех типов. Возможностьвыполнения других операций у микроконтроллеров разных типов отмечена знаком"+" в табл. 2.
Таблица 2 Тип МК t12 t15 2323 2343 1200 2313 4433 8515 8535 m163 m103 Write Program Memory + + + + + + + + + Load Flash Page + + Write Flash Page + + Read Lock Bits + + + + + + + + Write Fuse Bits + + +* +* +* +* +* +* Read Fuse Bits + + + + + + + + Read Calibration Byte + + +
Если операция«запись установочных битов» в микроконтроллере не выполняется, азначения этих битов перед программированием (перепрограммированием) отличаютсяот требуемых, необходимо до установки микроконтроллера в аппаратуре выполнитьзапись требуемых значений установочных битов с помощью программатора.
Длявыполнения любой операции в микроконтроллер через вход MOSI вводитсяпоследовательность из четырех байтов, в которую входят один или два байта,определяющие тип операции, и байты, используемые при выполнении операции(адресный байт, записываемый байт, байт, содержащий значения установочных битови битов защиты, холостой байт).
Привыполнении операции чтения одновременно с вводом одного из байтов выводитсясчитанный байт через выход MISO. Байты вводятся и выводятся, начиная состаршего бита. Частота следования импульсов на входе SCK должна быть не более1/4 частоты тактового сигнала микроконтроллера. Сигнал на входе SCK приотсутствии импульсов должен иметь низкий уровень.
Послезавершения программирования по способу LVSP при размыкании ключа К микроконтроллерпереходит к выполнению записанной программы, начиная с команды, записанной ноадресу $0000.
Вмикроконтроллере типа m103 программирования но способу LVSP может выполнятьсяпри высоком уровне напряжения на входе RESET, если при подаче напряженияпитания вывод PEN был соединен с шиной GND, и это соединение сохранялось доконца программирования.
Самопрограммированиемикроконтроллера осуществляется в процессе сго работы. Самопрограммированиеможет выполняться в микроконтроллере типа m163. В этом микроконтроллереFlashROM разделена на две секции. Одна секция (Application Section, APS)предназначена для рабочей программы. В другой секции (Boot Loader Section, BLS)размещается программирующая программа (Flash-Resident Boot Loader), введеннаяранее в FlashROM.
ДелениеFlashROM на две секции определяется комбинацией значений установочных битовBOOTSZ1 и BOOTSZ0 в соответствии с табл. 3.
Таблица 3BOOTSZ1 BOOTSZ0 Объем BLS (слов) Начальный адрес BLS 1024 $ 1С00 1 512 $ 1Е00 1 256 $ 1F00 - 1 1 128 $ 1F80
Еслиустановочный бит BOOTRST имеет нулевое значение, при пуске микроконтроллерапервая команда программы выбирается не по адресу $0000, а по адресу, указанномув табл. 3.
Программированиеосуществляется с использованием команды SPM (№ 131), выполнение которой зависитот кода, записанного в регистр SPMCR (№ $37) не ранее, чем за четыре такта довыборки кода команды SPM из FlashROM.
Программирующаяпрограмма может записывать коды в обе секции FlashROM и модифицировать самусебя.
Для защитысекций FlashROM кроме битов защиты LB1 и LB2 в микроконтроллере типа ml63используются дополнительные биты за-щиты — BLB01 и BLB02 для защиты секции APSи BLB11 и BLB12 для защиты секции BLS.
Пускмикроконтроллера происходит при нодаче напряжения питания на его выводы VCC иRESET (Power-On Reset, POR). Перезапуск в процессе работы выполняется припоявлении на выводе RESET нулевого уровня сигнала с последующим возвращением квысокому уровню (External Reset, EXR) и при переполнении сторожевого таймера(Watchdog Reset, WDTR). В микроконтроллерах типа t12, t15, 4433 и m163перезапуск происходит также при понижении напряжения питания на выводе VCC нижеопределенного уровня с последующим возвращением к рабочему уровню (Brown-OutReset, BOR).
При пуске иперезапуске принимает активное значение внутренний сигнал Internal Reset,который сохраняет это значение в течение определенного интервала времени(Start-Up Time). При активном значении сигнала все регистры ввода-выводапереводятся в исходное состояние и в счетчик команд (PC) записывается код числа0.
По истеченииинтервала Start-Up Time микроконтроллер приступает к выполнению программы,начиная с команды, записанной в FlashROM по нулевому адресу.
В исходномсостоянии регистров ввода-вывода все разряды регистров находятся в нулевомсостоянии.
Исключениемявляются:
■регистр состояния USR или UCSRA (№ $0В) в порте UARX в который заносится код$20 (UDRE = 1);
■регистр управления UCR или UCSRB (№ $0А) в порте UARX в который заносится код$02 (RXB8 =1);
■ регистрOCR1B (№ $2D) в таймере-счетчике Т/С1 микроконтроллера типа tl5, в которыйзаносится код $FF;
■регистр SPDR в порте SPI, исходное состояние которого является неопределенным;
■регистры EEAR, EEARL и EEARH (№№ $1Е и $1F) в блоке управления EEPROMмикроконтроллеров типа tl2, tl5, 2323, 4423, 4433, 8535 и ml63, исходноесостояние которых является неопределенным;
■регистр PORTA (№$1В) микроконтроллера типа t28, в который заносится код $0
В табл. 4отмечено наличие таких элементов у микроконтроллеров разных типов и указаны иххарактеристики.
При пускемикроконтроллера при достижении напряжением питания уровня VP0TR с помощьюсхемы PORC устанавливается в единичное состояние триггер Т и сигнал InternalReset принимает активное значение. При достижении уровня Vrst запускается схемавременной задержки, выполненная па базе счетчика (Counter). По истечениивремени задержки tTOUT сигнал на выходе триггера принимает пассивное значение.
Таблица 4
Элемент
схемы Тип МК t11 t12 t15 2323 2343 1200 2313 t28 4433 8515 8535 m163 MCUSR 2 4 4 2 2 3* 4 2 4 BORC + + + + CK + + + + CKSEL 2 – 0 3 – 0 1 – 0 3 – 2 2 – 0 3 – 0 FSTRT + + + + + SUT *d – MCUCS (№ 07)
Приперезапуске с использованием вывода RESET активное значение сигнала InternalReset устанавливается с использованием схемы EXRC при переходе напряжения навыводе RESET через пороговое значение Vrst в сторону понижения напряжения, асхема задержки запускается при переходе этого напряжения через значение VRST всторону повышения.
Припереполнении сторожевого таймера WDT формируется короткий импульс, по переднемуфронту которого устанавливается активное значение сигнала, а по заднему фронтузапускается схема задержки.
При наличиисхемы BORC (табл. 4) и нулевом значении установочного бита BODEN активноезначение сигнала Internal Reset устанавливается при переходе напряжения навходе VCC через пороговое значение VBOT в сторону понижения, а запуск схемызадержки происходит при переходе напряжения через пороговое значение VBOT всторону повышения. Уровень VBOT может иметь одно из двух знамени» в зависимостиот значения установочного бита BODLEVLL.
Вмикроконтроллерах, не имеющих схемы BORC (табл. 4), после выключения напряженияпитания повторный пуск микроконтроллера путем подачи напряжения питания (POR)возможен, если напряжение питания на выводе VCC упало ниже уровня Vpotf- Еслиэтот уровень не пройден, микроконтроллер начнет выполнять случайнуюпроизвольную программу.
Ориентировочныезначения пороговых уровней указаны в табл. 5.
Таблица 5
VPORT
(B)
VPORF
(B)
VPST
(B) VBOT(B) BODLVEL 1 1,2 – 1,4 0,4 – 0,6 (0,6 – 0,8)VCC 2,7 4,0
Величинавременной задержки tTOUT может быть постоянной или задаваться разработчикамипутем изменения значений установочных битов CKSEL, которых у микроконтроллеровразных типов может быть от двух до четырех, и установочного бита FSTRT, а умикроконтроллера типа тЮЗ — установочных битов SUT1 л SUT0 (табл. 4).
В качествесигнала, подаваемого на счетный вход счетчика Count, могут использоватьсясигнал генератора сторожевого таймера GWDT или тактовый сигнал микроконтроллераСК. Выбор источника сигнала выполняется с помощью схемы управления СУ1 путемизменения значении установочных битов CKSEL. Величина задержки tTOUT можетизменяться от нескольких десятков мке до нескольких сотен мс.
Вмикроконтроллерах, имеющих регистр MCUSR (№ $34), имеется возможностьпрограммными средствами определять способ запуска/перезапуска микроконтроллера,по которому началось выполнение текущей программы. В регистре MCUSR в этихцелях используются 2, 3 или 4 разряда (табл. 4). При наличии четырех или трехразрядов способам запуска POR, EXR, WDTR и BOR соответствует единичноесостояние разрядов PORF, EXTRF, WDRF и BORF регистра MCUSR соответственно.
При наличиидвух разрядов (PORF и EXTRF) способ записи (POR, EXR или WDTR) определяетсяпутем опроса состояния разрядов в начале запущенной/перезапущенной программы сосбросом обоих раз-Рядов в нулевое состояние.
Если приопросе PORF = 1, был пуск POR, если EXTRF = 1, был перезапуск EXR, если обаразряда имеют пулевое состояние, был перезапуск WDTR.
При медленномнарастании напряжения питания на входе VCC после Включения источника напряженияпитания в процессоре (CPU) и EEPROM выполняются случайные операции, врезультате которых может произойти произвольная запись случайного байта вEEPROM Для предотвращения этого явления следует удерживать нулевой уровеньсигнала на выводе RESET до появления рабочего значения напряжения на выводеVCC. Эту операцию можно выполнить с помощью внешней схемы формирования сигналаRESET (Brown-Out Detector, BOD).
Микроконтроллерысемейства AVR могут быть переведены в энергосберегающие режимы работы. Умикроконтроллеров всех типов возможны два энергосберегающих режима — режимхолостого хода (Idle Mode, IM) и режим пониженного энергопотребления(Power-Down Mode, PDM). Микроконтроллеры, имеющие таймеры-счетчики с режимомсчета реального времени (8535, ml63, ml03), кроме того, могут быть переведены врежим энергосохранения (Power Save Mode, PSM). Микроконтроллеры типа t15 иml63, имеющие аналого-цифровой преобразователь, кроме того, могут переводитьсяв режим подавления помех работе АЦП (ADC Noise Reduction Mode, ANRM).
Переход вэнергосберегающий режим происходит в ходе программы при выполнении команды смнемокодом SLEEP, если разряд SE регистра MCUCR (№$35) установлен в единичноесостояние.
Выбор режимав микроконтроллерах, которые могут находиться в двух энергосберегающих режимах,определяется состоянием разряда SM регистра MCUCR. При SM = 0 устанавливаетсярежим холостого хода, при SM = 1 — режим пониженного энергопотребления. Вмикроконтроллерах, которые могут находиться в трех и четырех энергосберегающихрежимах, выбор режима определяется комбинацией состояний разрядов SM1 и SM0регистра MCUCR в соответствии с табл. 6.SM1 SM0 ТипМК t15 8535 m163 m103
1
1
1
1
IM
ANRM PDM
IM
PDM
PSM
IM
ANRM
PDM
PSM
IM
PDM
PSM
Выход изэнергосберегающего режима происходит при поступлении разрешенного запросапрерывания или перезапуске микроконтроллера. При выходе по запросу прерываниявыполняется прерывающая программа и далее совершается переход к команде,расположенной после команды SLEEP, по которой произошел переход в данный режим.
В режимехолостого хода (IM) процессор остановлен, периферийные устройства продолжаютработать, коды в регистрах общего назначения, ячейках SRAM и регистрахввода-вывода, расположенных в пассивных периферийных устройствах, сохраняютсянеизменными. Ток потребления Icc У микроконтроллеров разных типов уменьшается в2—4 раза. Если аналоговый компаратор не используется для выхода из режима,разряд ACD в регистре ACSR (№ $28) для уменьшения тока потребления должен бытьустановлен в единичное состояние.
В режимепониженного энергопотребления (PDM) остановлен процессор и генератор тактовогосигнала. Периферийные устройства, кроме сторожевого таймера и блока прерываний,не работают. Коды в регистрах общего назначения, ячейках SRAM и регистрахввода-вывода сохраняются неизменными. Ток потребления Iсс у микроконтроллеровразных типов имеет величину от нескольких единиц до нескольких десятков мкА.Напряжение питания Vcc может быть снижено до величины 2 В.
Выход изрежима возможен при перезапуске микроконтроллера и по разрешенному запросупрерывания из внешнего источника при представлении запроса уровнем сигнала.Сигнал должен сохранять низкий уровень в течение некоторого времени, покагенератор тактового сигнала входит в установившийся режим. В микроконтроллеретипа m163, имеющем порт TWSI, выход из режима возможен также по запросупрерывания при опознании портом собственного адреса в поступившем адресномбайте.
Режимэнергосохранения (PSM) в микроконтроллерах, имеющих таймер-счетчик с режимомсчета реального времени, отличается от режима пониженного энергопотреблениявозможностью сохранения работы данного таймера после перехода в режим ивозможностью выхода из режима по запросу прерывания от этого таймера при егоработе в режиме счета реального времени.
В режимеподавления помех работе АЦП (ANRM) процессор остановлен. Работают толькоаналого-цифровой преобразователь, блок прерываний и сторожевой таймер. Выход изрежима происходит по запросу прерывания из внешнего источника при представлениизапроса уровнем сигнала, по запросу прерывания от АЦП и при перезапускемикроконтроллера. В микроконтроллере типа m163 выход из режима возможен такжепо запросу прерывания при опознании портом TWSI собственного адреса.
Литература
1. Кибернетика – основа наук–под ред. проф. Карул К.В. — К. – 2009 г.
2. Основы микропроцессорныхисчислений – под ред. Мозаев Г.Н. – М. – 2007 г.
3. Микроконтроллеры – подред. д.т.н. Нелипова А.С. – Х. ХИРЕ – 2008 г.
4. Невлюдов И.Я. –Компьютеризация общества – Х. ХИРЕ – 2007 г.
5. Компьютерная техника итехнологии – нпж — К. – 2008-2009 г.г.