AVR EEPROM Schreibproblem

Gast #557351
Lesenswert?
• ▲
▼
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
Gast #557367
Lesenswert?
• ▲
▼
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.
Gast #557414
Lesenswert?
• ▲
▼
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 ....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren