Evgenii Legotckoi
Evgenii Legotckoi3. August 2015 21:30

EEPROM in Mikrocontrollern AVR Atmega

Mikrocontroller AVR Atmega48 / 88/168/328 enthalten Speicher EEPROM 256/512/512 / 1K Bytes. EEPROM in AVR-Mikrocontrollern unterstützt bis zu 100.000 Überschreibzyklen. Der Zugriff auf den nichtflüchtigen Speicher erfolgt über drei Arten von Registern:

  • EEARH, EEARL - Register zum Adressieren von Speicherzellen. Atmega48 hat das EEARH Register nicht, da diese Art von Mikrocontroller nur 256 Speicherzellen hat. EEARH ist für das High-Byte der Speicherzellenadresse zuständig, EEARL für das Low-Byte;
  • EEDR - Register zum Schreiben und Lesen von Daten;
  • EECR - Steuerregister, dieses Register wird verwendet, um die Aktionen zu konfigurieren, die mit dem Speicher durchgeführt werden müssen.

Detaillierte Beschreibung der EEPROM-Register

EEARH und EEARL - EEPROM-Zellenadressregister

Bits 9 bis 15 sind reserviert und werden immer mit dem Wert Null gelesen.

Bits von 0 bis 8 werden verwendet, um die Nummer der Speicherzelle EEPROM, anzuzeigen, auf die zugegriffen wird.

EEDR - EEPROM-Datenregister

Bits von 2 bis 7 - Bits, in die Informationen geschrieben werden, um in das EEPROM geschrieben oder daraus gelesen zu werden.

Bits 6 bis 7 - Bits sind reserviert

Bits 4 bis 5 - EEPM1 und EEPM0 - dienen zum Einstellen der Betriebsart EEPROM

  • EEPM1 = 0, EEPM0 = 0 - Atomarer Vorgang zum Löschen und Schreiben von Daten (Dauer 3,4 ms)
  • EEPM1 = 0, EEPM0 = 1 - Nur Daten löschen (Dauer 1,8ms)
  • EEPM1 = 1, EEPM0 = 0 - Nur Daten schreiben (Dauer 1,8ms)
  • EEPM1 = 1, EEPM0 = 1 - Reserviert für zukünftige Verwendung

Bit 3 - EERIE - Dieses Bit wird verwendet, um Interrupts zu aktivieren, wenn Sie Interrupts in der Firmware Ihres Controllers aktiviert haben.

Bit 2 - EEMPE - Schreibschutzbit. Verzögert das Schreiben von Daten in das EEPROM um vier Zyklen, damit das EEPROM Zeit hat, sich auf das Schreiben von Daten vorzubereiten.

Bit 1 - EEPE - Bit des Aufnahmestarts, wird gesetzt, um die Aufnahme zu starten, wird von der Hardware auf Null zurückgesetzt, wenn die Aufnahme abgeschlossen ist. Daher kann es verwendet werden, um den Schreibvorgang von Daten in das EEPROM zu steuern.

Bit 0 - EERE - Startbit lesen. eingestellt, um mit dem Lesen vom EEPROM zu beginnen.

Lese- und Schreibvorgänge

EEPROM in Atmega ist eine sehr langsame Schnittstelle, die bis zu 4 ms benötigt, um Schreibvorgänge abzuschließen. Daher ist es sehr wichtig zu überprüfen, ob der vorherige Schreibvorgang erfolgreich abgeschlossen wurde.

;======= Процедура записи в 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
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
A
ALO1ZE19. Oktober 2024 08:19
Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken