Hallo Leute,
Hab im moment vor während meiner Programmlaufzeit, Daten in das EEPROM des ATmega 128 zu schreiben und wieder herauszulesen.
Dazu habe ich mir folgendes angelegt:
Code:
unsigned char EEPROM config1, config2, config3, checksum;
Folgende Funktionen hab ich mir überlegt um die Daten zu speichern und wieder zu lesen. Nur leider geht das nicht so wie ich mir das vorstelle 
Code:
/**********************************************************************\
* Funktionsname:loadconfig
*
* Kurzbeschreibung:
* Funktion vom Einlesen der letzten Konfiguration aus dem EEPROM
*
\**********************************************************************/
void loadconfig(void)
{
if (!((config1 + config2 + checksum) & 0xFF))
{
SPCR = config1; // laden der Einstellungen des SPCR Registers
SPSR = config2; // laden der Einstellungen des SPSR Registers
// flags = config3; // laden der Einstellungen der globalen Flag variablen
USART0_TransmitStrin_p(config);
}
else USART0_TransmitStrin_p(noconfig);
}
/**********************************************************************\
* Funktionsname:writeconfig
*
* Kurzbeschreibung:
* Funktion vom Einlesen der letzten Konfiguration aus dem EEPROM
*
\**********************************************************************/
void writeconfig(void)
{
cli(); // Abschalten aller Interrupts während des EEPROM schreibens
config1 = SPCR; // Schreiben der SPCR Daten in das EEPROM
config2 = SPSR; // Schreiben der SPSR Daten in das EEPROM
//config3 = flags;// Schreiben der globalen Flags in das EEPROM
checksum = 0-(config1 + config2); // erstellen und speichern der Checksumme
sei(); // Aktivieren der Interrupts
USART0_TransmitStrin_p(cfgwrite);
}
Schon mal tausend Dank für euere Hilfe
Holger
Lesezeichen