Gast
#557351
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