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