Evgenii Legotckoi
Evgenii LegotckoiТам. 3, 2015, 9:30 Т.Қ.

AVR Atmega микроконтроллеріндегі EEPROM

Микроконтроллер 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 
 ;=======================================================================================
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

Бізді әлеуметтік желілерде бақылаңыз