Микроконтроллеры AVR

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

?ие устройства:

0 занято (выполняется предыдущая команда);

1 готово к приему следующей команды.ОЕPD2ВходУправление режимом работы шины данных РВ7...РВ0:

0 выход, 1 входWRPD3ВходСигнал записи (активный уровень лог. 0)BS1PD4ВходВыбор байта (см. Табл. 14.14)ХАОPD5ВходОпределяют действие, выполняемое по положительному импульсу на выводе XTAL1 ХА1PD6ВходPAGELPD7ВходСигнал загрузки страницы памятиBS2РАОВходВыбор байта (см. Табл. 14.14)DATAРВ7...РВ0Вход/ВыходДвунаправленная шина данных

В общих чертах процесс программирования в этом режиме состоит из многократного выполнения следующих операций:

  1. загрузка команды;
  2. загрузка адреса;
  3. загрузка данных;
  4. выполнение команды.

Последовательность подачи сигналов на выводы микроконтроллера при выполнении различных базовых операций приведена в табл. 9.8.

 

Таблица 14.7. Базовые операции программирования в параллельном режиме

№Название операцииДействия1Загрузка команды1.Установить выводы ХА1, ХАО в состояние 10.

2.Подать на вывод BS1 напряжение лог. 0.

3.Выставить на шину DATA код команды.

4.Подать на вывод XTAL1 положительный импульс.2Загрузка адреса1.Установить выводы ХА1, ХАО в состояние 00 (загрузка адреса).

2.Установить выводы BS2:BS1 в состояние 00 (загрузка младшего

байта), 01 (загрузка старшего байта) или 10 (загрузка дополнительного

байта).

3.Выставить на шину DATA байт адреса.

4.Подать на вывод XTAL1 положительный импульс.3Загрузка данных1.Установить выводы ХА1, ХАО в состояние 01 (загрузка данных).

2.Подать на вывод BS1 напряжение лог. 0 (загрузка младшего байта) или лог.

1 (загрузка старшего байта).

3.Выставить на шину DATA содержимое байта данных.

4.Подать на вывод XTAL1 положительный импульс.4Запись данных в буфер страницы1.Подать на вывод BS1 напряжение лог. 1.

2.Подать на вывод PAGEL положительный импульс.5Запись байта конфигурации1.Установить выводы BS2:BS1 в состояние 00 (запись младшего байта),

01 (запись старшего байта) или 10 (запись дополнительного байта). 2.Подать на вывод WR отрицательный импульс; при этом на выводе

RDY/BSY появляется сигнал НИЗКОГО уровня.

3.Ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.

Запись страницы1.Установить выводы BS2:BS1 в состояние 00.

2.Подать на вывод WR отрицательный импульс; при этом на выводе

RDY/BSY появляется сигнал НИЗКОГО уровня.

3.Ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.

Переключение в режим параллельного программирования

 

Первой операцией при программировании микроконтроллера является его перевод в режим программирования. Для перевода микроконтроллера в режим программирования необходимо выполнить следующие действия:

  1. подать на микроконтроллер напряжение питания;
  2. подать на вывод RESET напряжение НИЗКОГО уровня и сформировать не менее трех импульсов на выводе XTAL1;
  3. подать на выводы PAGEL, XA1, ХА0, BS1 напряжение НИЗКОГО уровня на время не менее 100 нс;
  4. подать напряжение 11.5... 12.5 В на вывод RESET и удерживать напряжение НИЗКОГО уровня на выводах PAGEL, XA1, ХА0, BS1 в течение, как минимум, 10 мкс. Любая активность на указанных выводах в течение этого времени приведет к тому, что микроконтроллер не перейдет в режим программирования выждать не менее 300 мкс перед посылкой следующей команды.

 

Стирание кристалла

 

Команда “Стирание кристалла” должна выполняться перед каждым перепрограммированием микроконтроллера. Данная команда полностью уничтожает содержимое FLASH- памяти и EEPROM-памяти, а затем сбрасывает ячейки защиты (записывает в них 1). Однако на состояние конфигурационных ячеек данная команда не влияет. Кроме того, в ряде моделей микроконтроллеров семейства Mega можно предотвратить стирание EEPROM-памяти путем программирования конфигурационной ячейки EESAVE.

Для выполнения команды “Стирание кристалла” необходимо выполнить следующие действия:

  1. загрузить команду “Стирание кристалла”;
  2. подать на вывод WR сигнал НИЗКОГО уровня;
  3. ждать появления на выводе RDY/BSY сигнала ВЫСОКОГО уровня.

 

Программирование FLASH-памяти

 

Запись FLASH-памяти производится в следующей последовательности:

  1. загрузить команду “Запись FLASH-памяти”;
  2. загрузить младший байт адреса (положение ячейки внутри страницы);
  3. загрузить младший байт данных;
  4. загрузить старший байт данных;
  5. запомнить данные в буфере;
  6. повторить пп. 2...5 до полного заполнения буфера страницы;
  7. загрузить старший байт адреса (номер страницы);
  8. записать страницу.
  9. повторить все пункты для записи остальных страниц памяти программ;
  10. завершить программирование, загрузив команду “Нет операции”.

Необходимо отметить, что если для адресации ячейки памяти внутри страницы требуется меньше 8 битов (при размере страницы менее 256 слов), то оставшиеся старшие биты младшего байта адреса используются для адресации страницы при выполнении команды “Запись страницы”.

Для чтения FLASH-памяти необходимо выполнить следующие действия:

  1. загрузить команду “Чтение FLASH-памяти”;
  2. загрузить старший байт адреса;
  3. загрузить младший байт адреса;
  4. установить ОЕ и BS1 в 0, после этого с шины данных DATA можно будет считать значение младшего байта содержимого ячейки памяти;
  5. установить BS1 в 1, после этого с шины данных DATA можно будет считать значение старшего байта содержимого ячейки памяти;
  6. установить ОЕ в 1.

 

Программирование EEPROM-памяти

 

Запись EEPROM-памяти производится в следую?/p>