Программирование микроконтроллеров
В общей сложности микроконтроллеры семейств Tiny и Mega поддерживают следующие режимы программирования:
• последовательное программирование при высоком напряжении;
• последовательное программирование при низком напряжении (по интерфейсу SPI);
• параллельное программирование при высоком напряжении;
• программирование по интерфейсу JTAG.
Под «высоким» напряжением здесь понимается управляющее напряжение (12 В), подаваемое на вывод RESET микроконтроллера для перевода последнего в режим программирования.
Микроконтроллеры семейства Mega, кроме того, имеют возможность самопрограммирования. Под этим термином понимается изменение содержимого памяти программ, управляемое самим микроконтроллером.
В процессе программирования могут выполняться следующие операции:
• стирание кристалла (Chiperase);
• чтение/запись FLASH-памяти программ;
• чтение/запись EEPROM-памяти данных;
• чтение/запись конфигурационных ячеек;
• чтение/запись ячеек защиты;
• чтение ячеек идентификатора;
• чтение калибровочного байта.
Все модели микроконтроллеров поставляются со стертой памятью программ и памятью данных (во всех ячейках находится число «$FF») • пригодны к немедленному программированию.
Режим последовательного программирования при высоком напряженииподдерживается не всеми моделями, а только ATtinyllx/12x/ 15L. Этот режим требует дополнительного источника повышенного напряжения (12 В) и применяется, как правило, для программирования микроконтроллеров перед установкой их на плату.
Режим программирования по последовательному каналуподдерживается всеми микроконтроллерами семейства Mega, а также микроконтроллерами ATtiny12x и ATtiny15L семейства Tiny. В этом режиме программирование памяти программ и данных осуществляется через последовательный интерфейс SPI. Как правило, рассматриваемый режим используется для программирования (перепрограммирования) микроконтроллера непосредственно в устройстве.
Схема включения микросхем в режиме программирования по последовательному каналу приведена на Рис. 4.5.
Рис. 4.5. Включение микроконтроллеров в режиме программирования по последовательному каналу
Как видно из рисунка, для подключения программатора к устройству используются три линии интерфейса: SCK (тактовый сигнал), МО-К1 (вход данных) и MISO (выход данных).
Программирование осуществляется путем посылки 4-байтных команд на вывод MOSI микроконтроллера. Результат выполнения команд чтения снимается с вывода MISO микроконтроллера. Передача команд и выдача результатов их выполнения осуществляется от старшего разряда к младшему. При этом «защелкивание» входных данных выполняется по нарастающему фронту сигнала SCK, а «защелкивание» выходных данных — по спадающему (см. Рис. 4.6 и Рис. 4.7).
Рис. 4.6. Временные диаграммы сигналов при программировании по последовательному каналу
Рис. 4.7. Передача данных при программировании по последовательному каналу