Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
||||||||||||
30.5. Особенности работы NVM-контроллера в занятом состоянииКогда NVM-контроллер занят выполнением операции, установлен флаг Busy в регистре статуса и блокируется возможность записи в следующие регистры:
Этим гарантируется завершение исполнения текущей команды перед запуском новой. Во внешнем программаторе или прикладной программе необходимо предусмотреть, чтобы во время занятости контроллера программированием не выполнялась адресация энергонезависимой памяти. Программирование любой части энергонезависимой памяти приведет к автоматическому блокированию:
На время самопрограммирования необходимо либо отключить все прерывания, либо переместить таблицу векторов прерываний в загрузочный сектор (см. 12 "Прерывания и программируемый многоуровневый контроллер прерываний".) 30.6. Страничные буферы Flash-памяти и EEPROM Обновление Flash-памяти происходит на постраничной основе. Обновление же EEPROM может происходить как побайтно, так и постранично. Для программирования страницы Flash-памяти и EEPROM необходимо вначале заполнить соответствующий страничный буфер, а затем инициировать запись всего содержимого страничного буфера в выбранную страницу Flash-памяти или EEPROM. Размер страничного буфера зависит от размера Flash-памяти и EEPROM каждого микроконтроллера. Конкретные значения размера страницы и количества страниц приводится в документации на микроконтроллер. 30.6.1. Страничный буфер Flash-памяти Страничный буфер Flash-памяти загружается пословно. Перед загрузкой буфера его необходимо стереть. Если же будет выполнена запись в уже загруженную ячейку буфера, то это приведет к нарушению содержимого этой ячейки страничного буфера Flash-памяти. В незагруженном состоянии ячейки страничного буфера Flash-памяти имеют значение 0xFFFF. Это значение впоследствии программируется в ячейки страницы flash-памяти. Страничный буфер Flash-памяти автоматически стирается при:
30.6.2. Страничный буфер EEPROM Страничный буфер EEPROM заполняется побайтно. Перед выполнением загрузки его необходимо стереть. Если же запись в одну и ту же ячейку выполнить дважды, это приведет к нарушению содержимого этой ячейки страничного буфера EEPROM. NVM-контроллер запоминает, загрузка каких именно ячеек страничного буфера EEPROM была выполнена. Это позволяет ему записывать или стирать только целевые ячейки страницы EEPROM. Содержимое нецелевых ячеек остается неизменным. Это также означает, что перед стиранием страницы EEPROM необходимо заполнить выбранные ячейки страничного буфера, чтобы контроллер запомнил, какие ячейки являются целевыми. Если же в конечном счете запись данных в страничный буфер не будет выполнена, объектом программирования будут фактические значения в буфере. Страничный буфер EEPROM автоматически стирается после:
30.7. Последовательности программирования Flash-памяти и EEPROM При выполнении программирования страницы Flash-памяти и EEPROM, необходимо учитывать, что заполнение страничных буферов и запись страничного буфера во Flash-память или EEPROM - это две разные операции. Последовательность выполнения этих операций одинакова как при самопрограммировании, так и при внешнем программировании. 30.7.1. Последовательность программирования Flash-памяти Перед выполнением программирования страницы Flash-памяти данными из страничного буфера Flash-памяти, страница Flash-памяти должна быть стерта. Программирование нестертой страницы flash-памяти приводит к нарушению содержимого страницы flash-памяти. Страничный буфер flash-памяти можно заполнить либо перед выполнением операции стирания страницы Flash-памяти, либо между операциями стирания страницы Flash-памяти и записи страницы Flash-памяти. Всего возможно три сценария. Сценарий 1. Вначале заполняется буфер, а затем выполняются подряд две отдельных операции стирания страницы и записи страницы:
Сценарий 2. Вначале заполняется страничный буфер, а затем выполняется одна совмещенная операция стирания и записи страницы:
Сценарий 3. Заполнение страницы выполняется после стирания страницы:
Набором NVM-команд поддерживается как совмещенные операции стирания и записи, так и отдельные команды стирания страницы и записи страницы. Раздельные команды позволяют сократить время программирования при выполнении каждой команды, а выполнение операций стирания предусмотреть на этапах, некритичных ко времени программирования. Если сценарии 1 или 2 использовать при самопрограммировании, можно воспользоваться возможностями эффективного выполнения операций типа чтение-модификация-запись, которые поддерживаются в загрузочном секторе. В таком случае, программа должна вначале считать страницу, затем выполнить необходимые изменения и записать обратно измененные данные. При использовании сценария 3, считать старые данные во время загрузки нельзя, т.к. страница уже стерта. При использовании сценария 1 или 3 в операциях стирания страницы и записи страницы должен участвовать один и тот же адрес. 30.7.2. Последовательность программирования EEPROM Перед программированием страницы EEPROM выбранным числом байт данных, сохраненных в страничном буфере EEPROM, необходимо стереть выбранные ячейки страницы EEPROM. Программирование нестертой страницы EEPROM приведет к нарушению содержимого страницы EEPROM. Страничный буфер EEPROM необходимо загрузить перед выполнением операции стирания страницы или записи страницы по одному из двух сценариев. Сценарий 1. Вначале заполняется страничный буфер, а затем выполняется операция стирания страницы:
Сценарий 2. Вначале заполняется страничный буфер, а затем выполняется операция стирания и записи страницы:
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|