Serwis Edukacyjny
Nauczycieli

w I-LO w Tarnowie
obrazek

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu
 mgr Jerzy Wałaszek
Konsultacje:
Wojciech Grodowski
mgr inż. Janusz Wałaszek

©2026 mgr Jerzy Wałaszek

obrazek

Mikrokontrolery

ATtiny11/12

Dostęp do pamięci EEPROM w ATtiny12


obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

Dostęp do pamięci EEPROM w ATtiny12

Rejestry dostępu do pamięci EEPROM znajdują się w obszarze we/wy.

Czas dostępu jest w zakresie od 3,1 do 6,8 ms w zależności od częstotliwości kalibrowanego oscylatora RC. Dostępna jest funkcja odmierzająca czas, która informuje program użytkownika, kiedy można zapisać kolejny bajt. Istnieje również specjalne przerwanie przy gotowości pamięci EEPROM (ang. EEPROM Ready interrupt), które jest wyzwalane w momencie, gdy pamięć EEPROM jest gotowa na przyjęcie nowych danych. Minimalne napięcie zasilania przy zapisach do EEPROM wynosi 2,2 V.

W celu zapobieżenia niezamierzonym zapisom do EEPROM musi być wykonywana dwukrokowa procedura. Szczegóły znajdziesz w opisie rejestru sterowania EEPROM, EECR.

Gdy pamięć EEPROM jest zapisywana, mikroprocesor zostaje wstrzymany przez dwa cykle zegarowe przed wykonaniem następnej instrukcji. Gdy pamięć EEPROM jest odczytywana, mikroprocesor jest wstrzymywany przez cztery cykle zegarowe, zanim następna instrukcja zostanie wykonana.


do podrozdziału  do strony 

Opis rejestrów

Rejestry dostępu do pamięci EEPROM znajdują się w obszarze we/wy.

Czas dostępu jest w zakresie od 3,1 do 6,8 ms w zależności od częstotliwości kalibrowanego oscylatora RC. Dostępna jest funkcja odmierzająca czas, która informuje program użytkownika, kiedy można zapisać kolejny bajt. Istnieje również specjalne przerwanie przy gotowości pamięci EEPROM (ang. EEPROM Ready interrupt), które jest wyzwalane w momencie, gdy pamięć EEPROM jest gotowa na przyjęcie nowych danych. Minimalne napięcie zasilania przy zapisach do EEPROM wynosi 2,2 V.

W celu zapobieżenia niezamierzonym zapisom do EEPROM musi być wykonywana dwukrokowa procedura. Szczegóły znajdziesz w opisie rejestru sterowania EEPROM, EECR.

Gdy pamięć EEPROM jest zapisywana, mikroprocesor zostaje wstrzymany przez dwa cykle zegarowe przed wykonaniem następnej instrukcji. Gdy pamięć EEPROM jest odczytywana, mikroprocesor jest wstrzymywany przez cztery cykle zegarowe, zanim następna instrukcja zostanie wykonana.

EEAR – EEPROM Address Register – Rejestr adresowy pamięci EEPROM

Bit 7 6 5 4 3 2 1 0  
0x1E - - EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEAR
Zapis/Odczyt O O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 X X X X X X  

Rejestr adresowy EEAR określa adres komórki w 64-bajtowej przestrzeni adresowej EEPROM. Bajty danych EEPROM są adresowane liniowo od 0 do 63.

Podczas resetu rejestr EEAR nie jest zerowany, lecz utrzymuje wpisany poprzednio adres.

EEDR – EEPROM Data Register – Rejestr danych pamięci EEPROM

Bit 7 6 5 4 3 2 1 0  
0x1D MSB             LSB EEDR
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:0 – EEDR7:0: EEPROM Data – Dane EEPROM

Przy operacji zapisu do pamięci EEPROM rejestr EEDR przechowuje dane do zapisania w komórce pamięci EEPROM pod adresem danym przez rejestr EEAR. Przy operacji odczytu z pamięci EEPROM, rejestr EEDR zawiera dane odczytane z komórki EEPROM o adresie danym przez EEAR.

EECR – EEPROM Control Register –  Rejestr sterujący pamięci EEPROM

Bit 7 6 5 4 3 2 1 0  
0x1C - - - - EERIE EEMWE EEWE EERE EECR
Zapis/Odczyt O O O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:4 - Zarezerwowane

Te bity są zarezerwowane w ATtiny12 i przy odczycie dają zawsze wartość zero.

Bit 3 – EERIE: EEPROM Ready Interrupt Enable – Uaktywnienie przerwań od gotowości pamięci EEPROM

Gdy bity I w SREG, EERIE są ustawione na 1, zostaje uaktywnione przerwanie od gotowości EEPROM (ang. EEPROM Ready interrupt). Gdy bit EERIE jest wyzerowany, przerwanie to jest wyłączone. Przerwanie od gotowości EEPROM generuje ciągłe przerwanie, gdy bit EEWE jest wyzerowany.

Bit 2 – EEMWE: EEPROM Master Write Enable – Główne uaktywnienie zapisu do EEPROM

Bit EEMWE określa, czy ustawienie bitu EEWE spowoduje zapis do EEPROM. Gdy EEMWE jest ustawiony na 1, to ustawienie EEWE spowoduje zapis danych do EEPROM pod wybrany adres. Jeśli EEMWE jest wyzerowany, to ustawienie EEWE nie wywoła żadnego efektu. Gdy bit EEMWE został ustawiony na 1 przez oprogramowanie, to jest on sprzętowo zerowany po czterech cyklach zegarowych.

Bit 1 – EEWE: EEPROM Write Enable – Uaktywnienie zapisu do EEPROM

Sygnał uaktywnienia zapisu EEPROM jest strobem zapisu do pamięci EEPROM. Gdy adres i dane zostały poprawnie ustawione, bit EEWE musi być ustawiony w stan 1, aby dane zostały zapisane do pamięci EEPROM. Bit EEMWE musi mieć wartość logiczną 1, gdy jedynka jest wpisywana do EEWE, inaczej zapis do EEPROM nie odbędzie się. Należy stosować poniższą procedurę przy zapisywaniu danych do EEPROM (kolejność kroków 2 i 3 jest istotna):

  1. Czekaj, aż bit EEWE przyjmie wartość zero.
  2. Zapisz nowy adres EEPROM do EEAR (opcjonalnie).
  3. Zapisz nowe dane dla EEPROM do  EEDR (opcjonalnie).
  4. Wpisz logiczne jeden do bitu EEMWE w EECR (aby móc zapisać logiczne jeden do bitu EEMWE, bit EEWE musi zostać wyzerowany w tym samym cyklu).
  5. W ciągu 4 cykli po ustawieniu EEMWE zapisz logiczną jedynkę do EEWE.

Uwaga: Przerwanie pomiędzy krokami 4 a 5 uniemożliwi wykonanie zapisu, ponieważ bit EEMWE wróci do stanu zero po 4 cyklach zegara. Jeśli procedura przerwania wykonująca dostęp do EEPROM przerwie inny dostęp do EEPROM, to rejestr EEAR lub EEDR zostanie zmodyfikowany, co spowoduje niepowodzenie przerwanego dostępu do EEPROM. Zaleca się globalne wyłączenie przerwań podczas ostatnich czterech kroków w celu uniknięcia tych problemów.

Gdy upłynie czas dostępu zapisu, bit EEWE zostanie wyzerowany sprzętowo. Program użytkownika może sprawdzać stan tego bitu i czekać na zero przed zapisem następnego bajtu. Gdy bit EEWE został ustawiony, mikroprocesor jest wstrzymywany przez dwa cykle zegara, zanim zostanie wykonana następna instrukcja.

Bit 0 – EERE: EEPROM Read Enable – Uaktywnienie odczytu z EEPROM

Sygnał EERE jest strobem odczytu z pamięci EEPROM. Gdy w rejestrze EEAR zostanie ustawiony poprawny adres, musi zostać ustawiony bit EERE. Gdy bit ten zostanie wyzerowany sprzętowo, zażądane dane znajdą się w rejestrze EEDR. Dostęp odczytu do EEPROM zajmuje jedną instrukcję i nie ma potrzeby badania stanu bitu EERE. Gdy bit EERE zostanie ustawiony, mikroprocesor jest wstrzymywany przez 4 cykle zegara przed wykonaniem następnej instrukcji.

Użytkownik powinien sprawdzać stan bitu EEWE przed rozpoczęciem operacji odczytu. Jeśli wykonywana jest operacja zapisu, gdy nowe dane lub adres są zapisywane do rejestrów we/wy EEPROM, to operacja zapisu zostanie przerwana, a wynik będzie nieokreślony.

Do odmierzania czasu dla EEPROM używany jest kalibrowany oscylator. Poniższa tablica przedstawia typowe czasy programowania przy dostępie do EEPROM z poziomu mikroprocesora:

Parametr Liczba cykli
kalibrowanego
oscylatora RC
Minimalny
czas
 programowania
Maksymalny
czas
 programowania
Zapis EEPROM
(przez mikroprocesor)
4096 3,1 ms 6,8 ms

do podrozdziału  do strony 

Zapobieganie uszkodzeniu danych w EEPROM

W czasie okresów niskiego napięcia zasilania VCC dane EEPROM mogą zostać uszkodzone, ponieważ napięcie zasilające jest zbyt niskie, aby mikroprocesor i EEPROM pracowały właściwie. Kwestie te są takie same jak w systemach z zewnętrznymi pamięciami EEPROM i te same rozwiązania projektowe powinny być stosowane.

Uszkodzenie danych EEPROM może wystąpić w dwóch sytuacjach, gdy napięcie jest za niskie. Po pierwsze, zwykła sekwencja zapisu do EEPROM wymaga minimalnego napięcia 2,2 V, aby zadziałała poprawnie. Po drugie, sam mikroprocesor może wykonywać instrukcje z błędami, jeśli napięcie zasilające jest zbyt niskie.

Uszkodzenia danych EEPROM można z łatwością uniknąć przez zastosowanie się do tych zaleceń projektowych (wystarcza jedno):

  1. Utrzymuj końcówkę AVR RESET w stanie aktywnym (niskim) podczas okresów niewystarczającej wartości napięcia zasilającego. Można to zrobić przez uaktywnienie wewnętrznego modułu wykrywania spadku napięcia (ang. internal Brown-out Detector, BOD), jeśli szybkość pracy odpowiada poziomowi wykrywania. Jeśli nie, to można zastosować zewnętrzny obwód zabezpieczania przed zbyt niskim napięciem VCC.
  2. Utrzymuj rdzeń AVR w trybie uśpienia z wyłączeniem zasilania (ang. Power-down Sleep Mode) podczas okresów niskiego VCC. To zapobiegnie dekodowaniu i wykonywaniu instrukcji przez mikroprocesor, efektywnie chroniąc rejestry EEPROM przed niezamierzonymi zapisami.
  3. Zapisuj stałe w pamięci FLASH, jeśli nie jest potrzebna możliwość zmiany zawartości pamięci przez program. Pamięć FLASH nie może zostać zmieniona przez mikroprocesor i dane będą bezpieczne.

do podrozdziału  do strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2026 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.