mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR EEPROM Schreibproblem


Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ....

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die lib ist doch in Deinem Code schon eingebunden (eeprom.h)! Die 
Beschreibung (AVR-libc-Dokumentation) wird beim Installieren von WINAVR 
automatisch mitinstalliert...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich nutze das WinAVR 4.12(460).
Und das gibts nicht. Vermutlich eher AVRStudio 4.12 b460 mit WINAVR 
V????

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt !! Sorry ...

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Version: WinAVR-20060421

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt tuts ! Nach dem Update auf das neue AVRStudio klappts mit dem 
auslesen der Bytes !

Danke an alle !

Grüße,
Michael

Autor: Friedemann Kruse (bolle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.