В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Обзоры по типам > Микроконтроллеры > AVR > Архитектура
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Алгоритм программирования по последовательному каналу

Для программирования и проверки микроконтроллера ATmega103/L в последовательном режиме рекомендуется следующий алгоритм (формат 4-байтовых команд см. в таблице 39):

  1. Выполнить последовательность включения питания:
    Подать на выводы VCC и GND напряжение питания, причем выводы RESET и SCK во время подачи питания должны быть на уровне 0. Если к выводам XTAL1 и XTAL2 не подсоединен кварцевый кристалл, то тактовый сигнал подается на вывод XTAL1. В ряде систем программирующий не может гарантировать нахождение вывода SCK на низком уровне в течение всего периода подачи питания. В этом случае на вывод RESET должен быть подан положительный импульс длительностью не менее двух циклов XTAL1 после того как на SCK будет установлен уровень 0.
  2. Сделать выдержку не менее 20 мс и разрешить программирование в последовательном режиме посылкой на вывод PE0 (PDI/RXD).последовательной команды «Разрешить программирование».
  3. При выдаче третьего байта команды «Разрешить программирование»., значение, установленное как вторым байтом ($ 53), будет возвращено в течение передачи третьего байта. Если значение $53 не будет возвращено необходимо подать на вывод SCK положительный импульс и вновь послать команду «Разрешить программирование». Если возврат значения $53 не будет получен в течение 32 попыток, то связь устанавливалась с неработающим устройством.
  4. Если была выполнена очистка кристалла (выполняется если необходимо очистить Flash память) делается выдержка 10 мс, подается положительный импульс на вывод RESET и начинается выполнение алгоритма с пункта 2.
  5. Flash память программируется сразу по одной странице. Страница загружается по одному байту подачей 7 младших битов адреса и байта данных вместе с командой «Загрузить страницу памяти программ». Страница памяти программ сохраняется загрузкой команды «Записать страницу памяти программ» вместе с 9 старшими битами адреса.
  6. Матрица EEPROM программируется по одному байту загрузкой адреса и данных вместе с с соответствующей командой «Записать». Соответствующие ячейки памяти EEPROM, перед записью новых данных, автоматически очищаются. Следующий байт может быть записан через 4 мс (при напряжении питания 2,7 В) или через 1 мс мс (при напряжении питания 5,0 В).
  7. Любой байт в области памяти может быть проверен командой «Читать», которая возвращает содержимое по заданному адресу через последовательный выход вывода PE1(PDO/TXD).
  8. По полном завершении сеанса программирования, для перехода к нормальной работе, вывод RESET должен быть установлен на высокий уровень.
  9. Выполнить последовательность отключения питания (при необходимости) Установить низкий уровень на выводе XTAL1 (если не использовался кварцевый кристалл).
    Установить высокий уровень на выводе RESET.
    Отключить напряжение питания VCC.

Таблица 38. Система команд программирования в последовательном режиме

Команда Формат команды Описание
Байт 1 Байт 2 Байт 3 Байт 4
Разрешить программирование (Programming Enable) 1010 1100 0101 0011 xxxx xxxx xxxx xxxx Разрешает последовательное программирование после установки RESET на низкий уровень
Очистить кристалл (Chip Erase) 1010 1100 100x xxxx xxxx xxxx xxxx xxxx Очищает Flash и EEPROM память
Читать память программ (Read Program Memory) 0010 H000 aaaa aaaa bbbb bbbb oooo oooo Читает H (1 или 0) и данные o памяти программ по слову адреса a:b
Загрузить страницу памяти программ (Load Program Memory Page) 0100 H000 xxxx xxxx xbbb bbbb iiii iiii Записывает H (1 или 0) и данные i в память программ по слову адреса b
Записать страницу памяти программ (Write Program Memory Page) 0100 1100 aaaa aaaa bxxx xxxx xxxx xxxx Записывает страницу памяти программ по адресу a:b
Читать EEPROM память (Read EEPROM Memory) 1010 0000 xxxx aaaa bbbb bbbb oooo oooo Читает данные o из EEPROM памяти по адресу a:b
Записать в EEPROM память (Write EEPROM Memory) 1100 0000 xxxx aaaa bbbb bbbb iiii iiii Записывает данные i в EEPROM память по адресу a:b
Читать биты блокировки (Read Lock Bits) 01011000 xxxx xxxx xxxx xxxx xxxx x 21x Читает биты блокировки.0 - запрограммирован, 1 - незапрограммирован
Записать биты блокировки (Write Lock Bits) 1010 1100 111x x 21x xxxx xxxx xxxx xxxx Записывает биты блокировки. При программировании биты 1,2 = 0
Читать биты-предохранители (Read Fuse Bits) 01010000 xxxx xxxx xxxx xxxx xx 5x 61 43 Читает биты-предохранители. 0 - запрограммирован, 1 - незапрограммирован
Записать биты-предохранители (Write Fuse Bits) 1010 1100 101x 61 43 xxxx xxxx xxxx xxxx Записывает биты-предохранители.Устанавливает биты 6, 4,3=0 для программирования битов, 1 для очистки битов
Читать байт сигнатуры (Read Signature Byte) 0011 0000 xxxx xxxx xxxx xxbb oooo oooo Читает байт сигнатуры o по адресу b

Примечания:

a = старшие биты адреса
b = младшие биты адреса
H = 0 - младший байт, 1 - старший байт
o = выход данных
i = вход данных
x = состояние значения не имеет
1 = бит блокировки 1
2 = бит блокировки 2
3 = бит-предохранитель SUT0
4= бит-предохранитель SUT1
5= бит-предохранитель SPIEN
6= бит-предохранитель EESAVE

При последовательной записи в микроконтроллеры ATmega603/103 данные микроконтроллером ATmega 103 выбираются по нарастающему фронту на SCK.

При последовательном чтении данных из микроконтроллеров ATmega603/103 данные тактируются по падающему фронту на SCK. Объяснение представлено на Рис. 67.

Временные диаграммы режима последовательного программирования

Рис. 67. Временные диаграммы режима последовательного программирования



<-- Предыдущая страница Оглавление Следующая страница -->