Микроконтроллер AVR Atmega48 / 88/168/328 жады бар EEPROM 256/512/512 / 1К байт. AVR микроконтроллерлеріндегі EEPROM 100 000 қайта жазу цикліне дейін қолдайды. Тұрақты жадыға үш түрлі регистрлер арқылы қол жеткізіледі:
- EEARH, EEARL - жады ұяшықтарын адрестеу регистрлері. Atmega48 құрылғысында EEARH тізілімі жоқ, себебі микроконтроллердің бұл түрі тек 256 жад ұяшығынан тұрады. EEARH жад ұяшығы мекенжайының жоғары байтына, EEARL төмен байтқа жауап береді;
- EEDR - деректерді жазу және оқу регистрлері;
- EECR - Басқару регистрі, бұл регистр жадпен орындау қажет әрекеттерді конфигурациялау үшін қолданылады.
EEPROM регистрлерінің толық сипаттамасы
EEARH және EEARL - EEPROM ұяшық адресінің регистрлері
9-15 биттері сақталған және әрқашан нөлдік мәнмен оқылады.
0-ден 8-ге дейінгі биттер жад орнының нөмірін көрсету үшін пайдаланылады EEPROM, қолжетімді.
EEDR - EEPROM деректер тізілімі
2-ден 7-ге дейінгі биттер - ақпарат EEPROM -ға жазылу немесе оқу үшін жазылатын биттер.
6-7 биттері - биттер сақталған
4-5 биттері - EEPM1 және EEPM0 - жұмыс режимін орнату үшін пайдаланылады EEPROM
- EEPM1 = 0, EEPM0 = 0 - деректерді өшіру және жазу үшін атомдық операция (ұзақтығы 3,4 мс)
- EEPM1 = 0, EEPM0 = 1 - Тек деректерді жою (ұзақтығы 1,8 мс)
- EEPM1 = 1, EEPM0 = 0 - тек деректерді жазу (ұзақтығы 1,8 мс)
- EEPM1=1, EEPM0=1 - болашақта пайдалану үшін сақталған
3-бит - EERIE - Бұл бит контроллердің микробағдарламасында үзулерді қосқан болсаңыз, үзулерді қосу үшін пайдаланылады.
Бит 2 - EEMPE - Жазуды қорғау биті. EEPROM деректерін жазуға дайындалу үшін EEPROM жүйесіне деректерді жазуды төрт циклге кешіктіреді.
1-бит - EEPE - Жазуды бастау биті, жазуды бастауға орнатылған, жазу аяқталған кезде аппараттық құрал арқылы нөлге дейін қалпына келтіріңіз. Сондықтан оны EEPROM жүйесіне деректерді жазу процесін басқару үшін пайдалануға болады.
Бит 0 - EERE - Оқуды бастау биті. EEPROM жүйесінен оқуды бастау үшін орнатыңыз.
Оқу және жазу амалдары
Atmega ішіндегі EEPROM - өте баяу интерфейс, жазуды аяқтау үшін 4 мс дейін уақыт кетеді. Сондықтан алдыңғы жазудың сәтті аяқталғанын тексеру өте маңызды.
;======= Процедура записи в EEPROM ====================================================== EEWrite: sbic EECR,EEPE ; Ожидаем, когда закончится предыдущая операция записи. rjmp EEWrite ; Не выходим из цикла до тех пор, пока не очистится флаг EEPE cli ; После чего выставляем запрет на прерывания. out EEARL,r16 ; Устанавливаем адрес ячейки, к которой будем обращаться out EEDR,r17 ; а также записываем в регистр данных информацию, ; которую будем сохранять sbi EECR,EEMPE ; устанавливаем защиту на запись sbi EECR,EEPE ; устанавливаем флаг записи sei ; после чего разрешаем прерывания ret ; и возвращаемся из подпрограммы. ;======= Процедура чтения из EEPROM ==================================================== EERead: sbic EECR,EEPE ; Ожидаем, когда закончится предыдущая операция записи. rjmp EERead out EEARL, r16 ; Устанавливаем адрес ячейки, к которой будем обращаться sbi EECR,EERE ; Запускаем чтение установкой флага на чтение in r17, EEDR ; Возвращаем результат чтения в нужный регистр ret ;=======================================================================================