Hallo,
ist irgendwas bekannt, dass ein ATMEGA8 Daten verliert, die im EEPROM
gespeichert sind?
Ich hab ein Programm, dass schreibt nur ein einziges mal Daten über eine
Kommandosequenz über RS232, bestehend aus 3 Zeichen. Diverse Tests, ob
das sinnvoll ist usw sind auch dabei. Nach 2 Wochen hat eine
Speicherzelle des AVR-Controllers einfach was verloren.
Kann das eventuell mit einem unsauberen Reset zusammenhängen? Ist da
irgendwas bekannt, dass es mit dem EEPROM Probleme geben kann?
Hier ein Teil aus der Main, der nur bei der Initialisierung einmal
aufgerufen wird. Die Timer-Funktionen dürfte in diesem Zusammenhang
uninteressant sein:
1 | int main() {
|
2 | [...]
|
3 | timer_set(0,eeprom_read(0));
|
4 | timer_set(1,eeprom_read(1));
|
5 | [...]
|
6 | }
|
und die Funktionen für das EEPROM sehen so aus:
1 | uint8_t ee_params[] EEMEM = {0xff,0xff};
|
2 |
|
3 |
|
4 | void eeprom_write(uint8_t adr, uint8_t data)
|
5 | {
|
6 | if ((adr<0) || adr>sizeof(ee_params))
|
7 | return;
|
8 |
|
9 | eeprom_write_byte(&ee_params[adr], data);
|
10 | }
|
11 |
|
12 | uint8_t eeprom_read(uint8_t adr)
|
13 | {
|
14 | if ((adr<0) || adr>sizeof(ee_params))
|
15 | return;
|
16 |
|
17 | return eeprom_read_byte(&ee_params[adr]);
|
18 | }
|
Hab ich da was falsch gemacht?
Grüße
Gast