Раздел:
Документация0 ...
180 181 182 183 184 185 186 ...
195 ти RWW, а при изменении содержимого области NRWW процессор останавливается до завершения операции. Сказанное выше проиллюстрировано на Рис. 14.16.
ООлаг.ть Read While Write (RWW)
в области NRWW,
не может быть прочитан
во время операции
Рис. 14.16. Отличие между областями RWWh NRWW
14.5.3. Функционирование загрузчика
Управление процессом самопрограммирования
Изменение содержимого памяти программ и ячеек защиты загрузчика осуществляется с помощью команды SPM (Store Program Memory). Параметрами этой команды являются адрес области памяти, загружаемый предварительно в индексный регистр Z, и, при необходимости, данные, находящиеся в регистровой паре R1:R0.
Управление процессом программирования и, в частности, определение операции, выполняемой при вызове команды SPM, осуществляется с помощью регистра ввода/вывода SPMCR (модели ATmega8515x/8535x, ATmega8x/16x/32x/64x/128x и ATmegal62x) или SPMCSR (в остальных моделях). Во всех микроконтроллерах, за исключением моделей ATmega64x/128x, этот регистр расположен по адресу $37 ($57). В моделях же ATmega64x/128x этот регистр расположен в пространстве дополнительных регистров ввода/вывода по адресу ($68). Формат этих регистров для различных моделей семейства показан на Рис. 14.17, а описание его битов приведено в Табл. 14.23.
SPMCR | SPMIE | RWWSB | - | RWWSRE | BLBSET | PGWRT | PGERS | SPMEN |
4TeHne(R)/3anncb(W) Начальное значение | R/W 0 | R 0 | R 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SPMCSR | SPMIE | RWWSB | - | RWWSRE | BLBSET | PGWRT | PGERS | SPMEN |
4TeHne(R)/3anncb(W) Начальное значение | R/W 0 | R 0 | R 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SPMCSR | SPMIE | RWWSB | - | RWWSRE | BLBSET | PGWRT | PGERS | SELFPRGEN |
Чтение(Р)/Запись(\Л/) Начальное значение | R/W X | R 0 | R 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 |
ATmega8515x/8535x ATmega8x/16x/32x/64x ATmega64x/128x ATmega 162x
ATmega 164x/324x/644x ATmega 165x/325x/3250x ATmega645x/6450x ATmega650x/1280x/1261x ATmega2560x/2561x
ATmega48x/88x/168x
Puc. 14.17. Формат регистра SPMCR/SPMCSR
Таблица 14.23. Биты регистра SPMCR/SPMCSR
Бит | Название | Описание |
7 | SPMIE | Разрешение прерывания «Готовность SPM». Если в этом бите записана лог. 1 и флаг I регистра SREG также установлен в 1, то разрешается прерывание «Готовность SPM» Прерывание генерируется все время, пока бит SPMEN регистра сброшен в 0 |
6 | RWWSB | Запрещен доступ к области RWW. Этот флаг показывает возможность обращения по адресам, расположенным в области RWW. Если флаг установлен в 1, доступ к области RWW запрещен, если сброшен в 0 — разрешен. Установка этого флага осуществляется аппаратно при выполнении операций записи или стирания страницы памяти. Сброс флага осуществляется либо программно, записью лог. 1 в бит RWWSRE по окончании операции, либо аппаратно, при запуске операции загрузки страницы |
5 | - | Зарезервировано, читается как 0 |
4 | RWWSRE | Чтение области RWW разрешено. Одновременная установка этого бита и бита SPMEN позволяет разрешить доступ к области RWW. Разрешение доступа к этой области осуществляется запуском команды spm в течение 4 тактов после установки указанных битов. Разрешение доступа к области RWW может осуществляться только после завершения операции программирования (после сброса флага SPMEN) |
3 | BLBSET | Изменение ячеек защиты загрузчика. При одновременной установке этого бита и бита SPMEN команда spm, запущенная в течение последующих 4 тактов, осуществит установку защитных ячеек загрузчика в соответствии с содержимым регистра R0. Сброс бита BLBSET осуществляется аппаратно после установки ячеек защиты либо по истечении указанного времени. По команде (e)lpm, запущенной в течение 3 тактов после установки указанных битов, будет осуществлено чтение либо конфигурационных ячеек, либо ячеек защиты (зависит от значения бита Z0 регистра Z) |
(продолжение)
Бит | Название | Описание |
2 | PGWRT | Запись страницы. При одновременной установке этого бита и бита SPMEN команда SPM, запущенная в течение последующих 4 тактов, осуществит запись страницы памяти программ из временного буфера. Адрес страницы должен быть загружен в старший байт регистра Z (R31). Сброс бита PGWRT осуществляется аппаратно по окончании записи страницы либо по истечении указанного времени. При записи в секцию NRWW центральный процессор останавливается на время выполнения операции0 |
1 | PGERS | Стирание страницы. При одновременной установке этого бита и бита SPMEN команда SPM, запущенная в течение последующих 4 тактов, осуществит стирание страницы памяти программ. Адрес страницы должен быть загружен в старший байт регистра Z (R31). Сброс бита PGERS осуществляется аппаратно по окончании стирания страницы либо по истечении указанного времени. При записи в секцию NRWW центральный процессор останавливается на время выполнения операции0 |
0 | SPMEN (SELFPRGEN2)) | Разрешение выполнения команды spm. Установка этого бита разрешает запуск команды SPM в течение последующих 4 тактов. Если бит SPMEN устанавливается одновременно с одним из битов RWWSRE, BLBSET, PGWRT или PGERS, выполняется операция, определяемая этим битом (см. описание битов). Если устанавливается только бит SPMEN, осуществляется сохранение содержимого регистров R1:R0 во временном буфере по адресу, находящемуся в регистре Z (LSB регистра игнорируется). Сброс бита SPMEN осуществляется аппаратно после завершения операции либо по истечении указанного времени |
1)В моделях ATmega48x процессор останавливается при обращении к любому адресу. 2)В моделях ATmega48x/88x/168x. |
Обратите внимание на то, что во время записи в EEPROM-память изменение регистра SPMCR невозможно. Поэтому перед тем как записать какое-либо значение в регистр SPMCR, рекомендуется дождаться сброса флага EEWE регистра EECR.
Для адресации памяти программ при использовании команды SPM используется индексный регистр Z, получаемый объединением двух регистров общего назначения — R30 (младший байт) и R31 (старший байт), а в моделях с объемом памяти программ более 64 Кбайт — еще и регистр ввода/вывода RAMPZ. Поскольку память программ в микроконтроллерах семейства имеет страничную организацию, счетчик команд можно условно разбить на две части. Первая часть (младшие биты) адресует ячейку на странице, а вторая часть определяет страницу (Рис. 14.18). После запуска операции программирования содержимое регистра Z фиксируется и его можно использовать для других целей.
0 ...
180 181 182 183 184 185 186 ...
195