Hallo tobiastob
Bei meinem ATtiny13 schreibe ich Werte die ich dauerhaft speichern möchte in das EEProm:
Code:
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE));
/* Set Programming mode */
EECR = (0<<EEPM1)|(0>>EEPM0);
/* Set up address and data registers */
EEARL = ucAddress;
EEDR = ucData;
/* Write logical one to EEMPE */
EECR |= (1<<EEMPE);
/* Start eeprom write by setting EEPE */
EECR |= (1<<EEPE);
}
unsigned char EEPROM_read(unsigned char ucAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE));
/* Set up address register */
EEARL = ucAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from data register */
return EEDR;
}
(Code aus dem ATtiny-Datenblatt)
Das funktioniert aber nur bei byte/integer-Werten einfach, bei anderen Datentypen ist es etwas komplizierter (über pointer auf die Variablen kommt man hier zu den Bytes)
Beim allerersten Programmlauf schreibst du den Defaultwert deiner Variablen in das EEProm und kommentierst dann den Schreibbefehl aus. Bei allen anderen Programmstarts liest du zu Beginn den Wert der Variablen aus dem EEProm wieder aus. Auf Tastendruck kannst du nun auch einen anderen Wert ins EEProm schreiben und diesen beim nächsten Start wieder auslesen.
Gruß
mic
Lesezeichen