Смекни!
smekni.com

Работа микроконтроллера и его программирование (стр. 1 из 2)

Работа микроконтроллера и его программирование


Программирование микроконтроллера заключается в записи:

■ кодов команд программы и констант в 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.

Таблица 3

BOOTSZ1 BOOTSZ0 Объем BLS (слов) Начальный адрес BLS
0 0 1024 $ 1С00
0 1 512 $ 1Е00
1 0 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.