Технология программирования AVR

Способы программирования энергонезависимой памяти AVR

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

операция "Chip erase" (стирание кристалла);

чтение/запись FLASH-памяти программ;

чтение/запись EEPROM памяти данных;

чтение/запись конфигурационных FUSE-бит (см. раздел 2);

чтение/запись LOCK-бит защиты программной информации (см. раздел 2);

чтение SYGNATURE-бит идентификации кристалла (см. раздел 2);

AVR-микроконтроллеры обычно поставляются со стертыми встроенными FLASH и EEPROM блоками памяти (содержимое всех ячеек = $FF), готовыми к программированию.

В Таблице 1 перечислены возможные способы программирования элементов энергонезависимой памяти AVR.

Параллельное программирование требует использования дополнительного источника повышенного напряжения (12 В), использует большое число выводов микроконтроллера и выполняется на специальных программаторах. Такое программирование удобно, когда при массовом производстве необходимо "прошивать" большое количество кристаллов.

Последовательное программирование не требует дополнительного источника питания и может выполняться непосредственно в микропроцессорной системе (In System Programming) через последовательный SPI-интерфейс, который использует всего четыре вывода AVR-микроконтроллера. Возможность внутрисистемного программирования является одним из важнейших достоинств AVR, так как позволяет значительно упростить и удешевить процесс разработки и модернизации программного обеспечения.

Параллельный и последовательный способы программирования предполагают использование внешнего программирующего процессора. EEPROM память может также программироваться самим AVR под управлением программы (самопрограммирование).

 

Таблица 1: Способы программирования AVR.

 

LOCK-биты программируются как параллельно, так и последовательно. FUSE-биты у младших моделей AVR могут программироваться только последовательно, а у старших - и параллельно, и последовательно. SYGNATURE-байты доступны для чтения при любом способе программирования, если кристалл не засекречен LOCK-битами.

Операция "Chip erase" выполняется в обоих режимах программирования. Во время нее стираются все ячейки FLASH и EEPROM памяти, а также LOCK-биты. Причем LOCK-биты стираются только после того, как будет очищена вся память программ. На состояние FUSE бит операция "Chip erase" не оказывает воздействия.

FLASH и EEPROM блоки памяти программируются байт за байтом в любом из режимов программирования.

Для EEPROM памяти в режиме последовательного программирования автоматически обеспечивается цикл стирания. Таким образом, существует возможность побайтной перезаписи отдельных ячеек EEPROM. Если же требуется изменить содержимое каких-либо ячеек FLASH памяти, то необходимо выполнять операцию "Chip erase", которая у всех кристаллов, кроме Mega AVR, стирает не только целиком всю FLASH, но и содержимое EEPROM. У Mega AVR имеется FUSE бит EESAVE, программирование которого приводит к тому, что при выполнении операции "Chip erase" содержимое EEPROM сохраняется.