Работа микроконтроллера и его программирование
Работа микроконтроллера и его программирование Программирование микроконтроллера заключается в записи: ¦ кодов команд программы и констант в 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, и это соединение сохранялось до конца программирования.
Страницы: 1, 2
|