Kornhaas.net
05.09.2005, 11:32
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:
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 :-(
/************************************************** ********************\
* 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
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:
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 :-(
/************************************************** ********************\
* 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