Lesen und Schreiben von Daten ins EEPROM - Mikrocontroller
Lesen und Schreiben von Daten ins EEPROM - Mikrocontroller
Lesen und Schreiben von Daten ins EEPROM - Mikrocontroller
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Friedrich-Ebert-Schule EsslingenMIKROCONTROLLER5.9.1 <strong>EEPROM</strong>-Programmierung (5131)Der AT89C5131 <strong>von</strong> Atmel besitzt 1024 Byte <strong>EEPROM</strong>-Speicher. Die Programmierungerfolgt in 2 Schritten. Die <strong>Daten</strong> werden zunächst in das 128 Byte große Column-Latch(ein flüchtiger RAM-Speicher) geschrieben <strong>und</strong> dann spannungsausfallsicher in eine<strong>EEPROM</strong>-Speicherseite (Page) programmiert. Die Programmierung des <strong>EEPROM</strong>erfolgt mittels movx-Befehle. Damit ein movx-Zugriff nicht <strong>ins</strong> externe RAM geht, mußdas Flag EEE im Register EECON gesetzt werden. Die movx-Befehle verwenden den<strong>Daten</strong>pointer (DPTR) zur Adressierung der <strong>EEPROM</strong>-Speicherzellen. Dabei sind dieniederwertigen 7 Bit die Adressbits innerhalb der Page <strong>und</strong> mit den Bits 7..10 wird diePage ausgewählt.<strong>Daten</strong> <strong>ins</strong> <strong>EEPROM</strong> schreibenName:Datum:DPTR<strong>Daten</strong>pointer2 x 8 BitDPHDPLx x x x x 0 0 0 1 0 0 0 0 0 1 1AdresseEECON: <strong>EEPROM</strong> Control Register (0D2h)nicht bitadressierbar (Resetwert: xxxxxx00b)7 6 5 4 3 2 1 0EEPL3 EEPL2 EEPL1 EEPL0 - - EEE EEBUSYProgrammierung starten mit der Byte- X XSequenz 52h + A2h <strong>ins</strong> Register EECONEnable <strong>EEPROM</strong> = 1 movx Zugriffe <strong>ins</strong> <strong>EEPROM</strong>EEE = 0 movx Zugriffe gehen <strong>ins</strong> externe RAMEEBUSY = 1 interner Programmiervorgang läuft. WeitereSchreibvorgänge erst möglich, wenn EEBUSY = 0Column-LatchProgrammier 128 x 8Bit-flags11 0 1 1 0 0 0 07Fh7Eh7Dh04h03h02h01h00hProgrammier <strong>und</strong>Page-SelectLogik<strong>EEPROM</strong>1024 x 8BitPage 8Page 7Page 6Page 5Page 4Page 3Page 2Page 13FFh380h37Fh300h2FFh280h27Fh200h1FFh180h17Fh100h0FFh080h07FhAkku1 0 1 1 0 0 0 0000hWird ein Byte <strong>ins</strong> Column-Latch gespeichert, wird automatisch das zugehörigeProgrammierflag auf 1 gesetzt. Beim anschließenden Programmiervorgang werdendann immer nur die Bytes in die <strong>EEPROM</strong>-Page programmiert, die auch tatsächlichgültige <strong>Daten</strong> enthalten.
Friedrich-Ebert-Schule EsslingenMIKROCONTROLLER5.9.2 <strong>EEPROM</strong>-Programmierung (5131)Programmier-Sequenz<strong>Schreiben</strong>Name:Datum:EEE = 1[DPTR] = Page + Adresse[Akku] = <strong>Daten</strong>Adresse = Adresse + 1movx @dptr,a<strong>Daten</strong> <strong>ins</strong> Column-Latchspeichern.Maximal 128 ByteFertig?neinjaEECON = 52hEECON = A2hSpeicherseite (Page)programmieren!EEBUSY= 1?janeinFertig<strong>Daten</strong> lesen<strong>Daten</strong> werden immer Byteweise mit einem movx-Befehl aus dem <strong>EEPROM</strong> gelesen.Dabei ist zu beachten, dass wieder das EEE-Bit gesetzt wird. Ausserdem können die<strong>EEPROM</strong>-Speicherzellen nicht mit der gleichen Geschwindigkeit wie RAM-Zellenausgelesen werden. Um die movx-Zugriffe zu verlangsamen, wird das Bit M0 im AUXR-Register gesetzt.<strong>Lesen</strong>EEE = 1M0 = 1[DPTR] = Page + Adressemovx a,@dptrFertig