Hallo allerseits, hat hier schon mal jemand mit dem EEPROM eines XMegas gearbeitet. Ich hab nämlich festgestellt, dass man nicht mit den vorgeferigten Funktionen aus eeprom.h arbeitet kann, da diese nicht kompatibel zum XMega zu sein scheinen. Und jetzt stehe ich irgendwie etwas auf'm Schlauch. Gruß Tobias
>hat hier schon mal jemand mit dem EEPROM eines XMegas gearbeitet. Ich nehme an, das war eine Frage? Ja. Habe ich. >Funktionen aus eeprom.h arbeitet kann, da diese nicht kompatibel zum >XMega zu sein scheinen. Das EEPROM des XMEGA funktioniert etwas anders, es ist pageweise organisiert und läßt sich zusätzlich in den linearen Adressbereich ab 0x1000 einblenden. Es gibt sehr schöne AppNotes auf www.atmel.com dazu.
Hmm, also so toll finde ich die AppNotes von Atmel nicht. Die helfen mir nämlich nicht dabei den Lese- und Schreibvorgang beim EEPROM zu verstehen. Aber immerhin konnte ich mir aus dem dort gebotenem Beispielcode ne funktionieren Lese-/Schreib-Byte Funktion zusammenkopieren.
Es fängt schon damit an, dass ich nicht genau weis was es bedeutet, dass das EEPROM pageweise aufgebaut ist.
Wenn Du bei einem byteweise organisierten EEPROM ein Byte schreiben willst, so schreibst Du nur dieses Byte. Bei einem pageweise (seitenweise) organisierten EEPROM wird immer eine ganze Page (Seite) mit sounsovielen Bytes geschrieben. Dazu wird ein Pufferspeicher gefüllt, der dann in die Page geschrieben wird. Um ein Byte zu ändern und die anderen bestehen zu lassen, muß der Puffer bis auf das eine Byte mit 0xFF gefüllt sein.
Hallo Leser/in, eine Frage -nicht zum Ansprechen des EEPROM - aber zum Timing des EEProm: wie schnell werden bei Euch 2k gelesen / geschrieben? ZielµC: xMega128A1 Rev H Dass die Schreibzeiten 'lange' dauern ca. 256 Byte/Sekunde habe ich erwartet. Bei mir sind die Lesezeiten aber fast genauso lang... (???) µC hängt in der Routine NVM_Busy ziemlich lange fest.... Wie ist das bei Euch? Ich habe I/O controlled ausprobiert, eine Schreibroutine, die das EEPROM komplett zuschreibt und dann über Pintoggeln am Oszi gemessen. Jetzt ist noch Memory mapped an der Reihe... Muss mal messen. Gruß Helmut
Memory mapped lesen geht ratzfatz. I/O controlled geht fast genau so schnell. Beim Lesen sollte das NVM-Busy-Bit eigentlich nur sporadisch High sein. Wenn Du unmittelbar vorher ein Byte / eine Page geschrieben hast oder der NVM-Controller anderweitig beschäftigt ist, muß die CPU natürlich warten. Hängt also von Deinem Programm ab.
Also meine Messungen habe ich gemacht: Hatte einen Fehler in meiner Fkt für Lesen; jetzt funzts. µC AtXMega128A1 Rev. H; kompletter Bereich geschrieben, gelesen; Messung mit Oszi und Pingewackel: READ WRITE ------------------- I/O controlled 100k/s 256 Byte/s memory mapped 500k/s 256 Byte/s Schreiben geht lt. Atmel Treiber nur I/O controlled. Vielleicht braucht das ja noch jemand? ;-) Gruß Helmut
PS: danke Travel Rec! Wie heisst's so schön: "Kaum macht mans richtig, schon gehts." Einer unserer Klassiker ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.