Робота мікроконтролера і його програмування
Програмування мікроконтролера полягає в запису:
в– кодів команд програми та констант в 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 "