Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek |
https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines
Rejestry dostępu do EEPROM znajdują się w przestrzeni we/wy.
Czas zapisu jest w granicach od 4,6 do 8,2 ms w zależności od częstotliwości kalibrowanego oscylatora RC.
Typowe czasy programowania EEPROM
Parametr | Liczba cykli kalibrowanego oscylatora RC |
Minimalny czas programowania |
Maksymalny czas programowania |
Zapis do EEPROM (przez mikroprocesor) |
8192 | 4,6 ms | 8,2 ms |
Jednakże funkcja odmierzająca samoczynnie czas pozwala wykryć oprogramowaniu użytkownika, kiedy można zapisać następny bajt. Jeśli kod użytkownika zawiera instrukcje, które zapisują pamięć EEPROM, należy podjąć pewne środki ostrożności. W mocno filtrowanych źródłach zasilania napięcie VCC może wzrastać lub opadać wolno przy włączaniu/wyłączaniu. Powoduje to, iż mikrokontroler przez pewien okres czasu pracuje przy napięciu niższym od określonego jako minimalne dla używanej częstotliwości zegarowej, co w efekcie może spowodować niezamierzone skoki w programie i w końcu wykonanie kodu zapisu do EEPROM. Aby zabezpieczyć spójność danych w EEPROM w tym przypadku, zaleca się stosowanie zewnętrznych obwodów resetowania przy zbyt niskim napięciu zasilania.
Aby zapobiec niezamierzonym zapisom w EEPROM, należy zastosować specjalną, dwuetapową procedurę zapisu. Zobacz do opisu rejestru sterującego EEPROM.
Gdy pamięć EEPROM jest odczytywana lub zapisywana, to mikroprocesor zostaje wstrzymany przez dwa cykle zegarowe przed wykonaniem następnej instrukcji.
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 |
Te bity są zarezerwowane w ATtiny15L i dają przy odczycie zawsze wartość zero.
Rejestr adresowy EEPROM – EEAR – określa adres w 64 bajtowej przestrzeni adresowej EEPROM. Bajty danych w EEPROM są adresowane liniowo pomiędzy 0 a 63. Początkowa zawartość rejestru EEARL jest niezdefiniowana. Przed dostępem do EEPROM należy wpisać poprawny adres.
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
0x1D | EEDR7 | EEDR6 | EEDR5 | EEDR4 | EEDR3 | EEDR2 | EEDR1 | EEDR0 | EEDR |
Zapis/Odczyt | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | Z/O | |
Wartość początkowa | X | X | X | X | X | X | X | X |
Dla operacji zapisu w EEPROM rejestr EEDR zawiera dane do zapisania pod adresem podanym przez rejestr EEAR. Dla operacji odczytu z EEPROM rejestr EEDR zawiera dane odczytane z komórki EEPROM o adresie podanym w rejestrze EEAR.
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 | X | 0 |
Te bity został zarezerwowany do użytku w przyszłości i na ATtiny15 dają przy odczycie wartość 0.
Gdy bit I w rejestrze SREG oraz bit EERIE są ustawione na jeden, to zostaje włączona obsługa przerwania przy gotowości EEPROM. Gdy bit ten jest wyzerowany, przerwanie jest wyłączone. Przerwanie gotowości EEPROM generuje ciągłe przerwanie, gdy bit EEWE jest wyzerowany.
Bit EEMWE określa, czy zapis jedynki do bitu EEWE spowoduje zapis danych w pamięci EEPROM. Gdy bit EEMWE zostanie ustawiony na jeden, to ustawienie bitu EEWE zapisze dane w EEPROM pod wybranym adresem. Jeśli bit EEMWE jest wyzerowany, ustawienie bitu EEWE nie odniesie żadnego skutku. Gdy bit EEMWE został ustawiony programowo, to po upływie czterech cykli zegara bit ten zostanie sprzętowo wyzerowany. Zobacz niżej na opis bitu EEWE dla procedury zapisu w EEPROM.
Sygnał zapisu w pamięci EEPROM – EEWE – jest strobem zapisu do EEPROM. Gdy adres i dane są poprawnie ustawione, bit EEWE musi zostać ustawiony, aby zapisać tę wartość w pamięci EEPROM. Bit EEMWE musi być wcześniej ustawiony na 1, w przeciwnym razie zapis do EEPROM nie odbędzie się. Przy zapisie danych do pamięci EEPROM należy przestrzegać poniższej procedury (kolejność kroków 2 i 3 nie jest istotna):
Uwaga: wystąpienie przerwania pomiędzy krokiem 4 a 5 spowoduje porażkę cyklu zapisu, ponieważ bit głównego uaktywnienia zapisu w EEPROM zostanie sprzętowo wyzerowany. Jeśli procedura przerwania uzyskująca dostęp do EEPROM zostanie przerwana przez inny dostęp do EEPROM, to rejestr EEAR lub EEDR zostanie zmodyfikowany, co wywoła porażkę zapisu w przerwanym dostępie do EEPROM. Zaleca się wyzerowanie globalnego znacznika przerwań podczas ostatnich czterech kroków w celu uniknięcia tych problemów.
Gdy upłynie czas dostępu zapisu (typowo 5,1 ms, jeśli wewnętrzny oscylator RC został skalibrowany na 1,6 MHz), to bit EEWE zostanie wyzerowany sprzętowo. Oprogramowanie użytkownika może sprawdzać stan tego bitu i czekać na zero przed zapisem następnego bajtu. Gdy bit EEWE został ustawiony na 1, mikroprocesor jest wstrzymywany na dwa cykle przed wykonaniem następnej instrukcji.
Sygnał odczytu pamięci EEPROM – EERE – jest strobem odczytu dla EEPROM. Gdy zostanie ustawiony poprawny adres w rejestrze EEAR, bit EERE musi zostać ustawiony na 1. Gdy bit ten zostanie sprzętowo wyzerowany, żądane dane znajdują się w rejestrze EEDR. Dostęp odczytu do EEPROM zajmuje czas jednej instrukcji i nie ma potrzeby sprawdzania stanu bitu EERE. Gdy bit EERE zostanie ustawiony na 1, mikroprocesor jest wstrzymywany na cztery cykle przed wykonaniem następnej instrukcji.
Użytkownik powinien sprawdzać bit EEWE przed rozpoczęciem operacji odczytu. Jeśli trwa operacja zapisu, gdy nowe dane są umieszczane w rejestrach we/wy EEPROM, to operacja zapisu zostanie przerwana, a jej wynik jest nieokreślony.
Do odmierzania czasu w operacjach na pamięci EEPROM wykorzystywany jest kalibrowany oscylator. Poniższa tabela przedstawia typowe czasy programowania przy dostępie do EEPROM przez mikroprocesor.
Typowe czasy programowania EEPROM
Parametr | Liczba cykli kalibrowanego oscylatora RC |
Minimalny czas programowania |
Maksymalny czas programowania |
Zapis do EEPROM (przez mikroprocesor) |
8192 | 4,6 ms | 8,2 ms |
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, 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):
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 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.