Hallo Leute, ich will aus meinem Programm Daten im EEPROM meines ATMega16 an vordefinierten Adressen ablegen und von dort auch wieder auslesen. Hier mal ein kleines Testprogramm was leider nicht funktioniert: #include <avr/io.h> #include <avr/eeprom.h> #include <inttypes.h> #ifndef EEMEM #define EEMEM _attribute_ ((section (".eeprom"))) #endif void eeprom_write (uint16_t adress, uint8_t ch) { while (EECR & (1 << EEWE)) ; EEAR = adress; EEDR = ch; EECR |= (1 << EEMWE); EECR |= (1 << EEWE); } int main () { uint16_t adress = 0x0001; uint8_t data = 0xCC; eeprom_write (adress, data); return 0; } Die Funktion eeprom_write ist 1:1 aus dem Datenblatt jedoch wenn ich nach dem Ausführen des Programms den EEPROM auslesen stehen alle Bytes auf FF. Das das Programm ausgeführt wird ist sichergestellt (mit LED blinken). Ich hab das Tutorial auch schon gelesen und das schreiben daraus funktioniert auch wunderbar, jedoch würde ich gerne die Adressen vorher definieren wo Daten hingeschrieben werden. Das Konstrukt mit den "wilden" Arrays gefällt mit nicht so richtig .... Ist es nicht möglich eine direkte Adresse im EEPROM zu beschreiben? Grüße, Michael
Benutzt du WinAVR? Da ist eine lib für's EEPROM drin und das Ganze ist gut beschrieben. Das Auslesen des EEPROMs mit AVR-Studio macht manchmal Probleme! Versuche mal das EEPROM zuerst zu beschreiben (andere Speicherzelle als deine), danach dein Programm laufen lassen (läuft nach Reset eh' neu los) und dann das EEPROM auslesen. Dann sollte der Inhalt korrekt gelesen werden. Das scheint noch ein Bug zu sein.
Ich nutze das WinAVR 4.12(460). Wo genau finde ich denn die Lib bzw. die Beschreibung ? Das mit dem Beschreiben hat ich schon versucht, aber leider ohne Erfolg ich sehe immer noch nicht mein geschriebenes Byte.. Lade gerade die neue Version runter 4.13b ....
Die lib ist doch in Deinem Code schon eingebunden (eeprom.h)! Die Beschreibung (AVR-libc-Dokumentation) wird beim Installieren von WINAVR automatisch mitinstalliert...
> Ich nutze das WinAVR 4.12(460).
Und das gibts nicht. Vermutlich eher AVRStudio 4.12 b460 mit WINAVR
V????
Jetzt tuts ! Nach dem Update auf das neue AVRStudio klappts mit dem auslesen der Bytes ! Danke an alle ! Grüße, Michael
Hallo Leute, danke für den Tip mit dem E2prom schreiben auf dem atmeg16. Ich bohre da schon seit Tagen daran rum. Ist schon schwach, das ATMEL da Beispiele ins Datenblatt setzt, die nicht funktionieren. Sonst bin ich schon absolut begeistert von den AVR's. Gruß Friedemann
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.