Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

Шаг 6. Осваиваем все возможности микроконтроллера ATtiny2313 517 Очистка буфера происходит автоматически после выполнения команды «Запись страницы» либо вручную путем записи единицы в разряд СТРВ регистра SPMCSR. Буфер также очищается после системного сброса. Если во время выполнения операции загрузки страницы произойдет запись в EEPROM, все загруженные данные будут потеряны. Запись страницы Чтобы осуществить запись страницы, необходимо поместить в регистр Z ее адрес, записать в регистр SPMCSR код «00000101», а затем, не позднее, чем через четыре цикла тактового генератора выполнить команду SPM. Содержимое регистров R1 и R0 игнорируется. В качестве адреса страницы используется PCPAGE (см. рис. 6.49). Неиспользуемые разряды регистра Z необходимо сбросить в ноль. Внимание. На время выполнения операции «Запись страницы» центральный про ­ цессор приостанавливается. Адресация памяти программ при автоматическом перепрограммировании В командах SPM в качестве указателя используется регистровая пара Z. Номер бита 15 12 11 10 9 8 14 13 Z15 Z14 Z13 Z12 Z11 Z10 Z9 Z8 Т1 Z6 Z5 Z4 Z3 Z2 Z1 Z0 6 5 4 3 2 0 ZH(R31) ZL(R30) Номер бита 7 Программная память поддерживает станичную организацию (см. табл. 6.69), поэтому счетчик команд можно разделить на две разные сек ­ ции. Секция, состоящая из младших разрядов, служит для обращения к отдельным словам программного кода в пределах одной страницы. Старшие разряды служат для обращения к отдельным страницам. На рис. 6.49 назначение битов регистра-указателя адреса показано в графи ­ ческом виде. Все переменные, используемые на рис. 6.49, описаны далее. Внимание. При использовании команды SPM существует возможность для опе ­ раций «Стирание страницы» и «Запись страницы» указывать разные адреса. Поэтому при создании программы нужно следить, чтобы при стирании и при записи была выбрана одна и та же страница. Команда LPM адресует память программ побайтно, но за раз записы ­ вается шестнадцатиразрядное слово данных. Поэтому младший разряд Z -указателя (Z0) всегда равен нулю.

RkJQdWJsaXNoZXIy MTExODQxMg==