Moin,
ich benutze seit einiger Zeit den TINY85 in Verbindung mit dem RFM12.
Im EEPROM speichere ich an die Adressen 1 und 2 Parameter ab.
Der Tiny sendet über den RFM12 Werte und legt sich dann über
SLEEP_MODE_PWR_DOWN für 2 Minuten schlafen.
Ich habe hier einen von 5 Sensoren bei dem hat sich der EEPROM Inhalt
verschoben und ich habe keine Ahnung warum. Ich finde es schon
merkwürdig das dieser Fehler nur bei einem Sensor auftritt. Hat da der
TINY85 einen schlag oder wodurch kann so etwas passieren ?
Programmfehler ?
so sehen meine Zugriffe aus :
1 | asm("cli");
|
2 | EEPROM_write(1,Wake); // Parameter 2
|
3 | sei()
|
4 |
|
5 | ....
|
6 |
|
7 | asm("cli");
|
8 | ID = EEPROM_read(0); // Workaround
|
9 | Wake = EEPROM_read(1); // Workaround
|
10 | sei();
|
und hier die Routinen :
1 | void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
|
2 | {
|
3 | /* Wait for completion of previous write */
|
4 | while(EECR & (1<<EEPE))
|
5 | ;
|
6 | /* Set up address and data registers */
|
7 | EEARL = uiAddress;
|
8 | EEDR = ucData;
|
9 | /* Write logical one to EEMWE */
|
10 | EECR |= (1<<EEMPE);
|
11 | /* Start eeprom write by setting EEWE */
|
12 | EECR |= (1<<EEPE);
|
13 | }
|
14 |
|
15 | unsigned char EEPROM_read(unsigned int uiAddress)
|
16 | {
|
17 | /* Wait for completion of previous write */
|
18 | while(EECR & (1<<EEPE))
|
19 | ;
|
20 | /* Set up address register */
|
21 | EEARL = uiAddress;
|
22 | /* Start eeprom read by writing EERE */
|
23 | EECR |= (1<<EERE);
|
24 | /* Return data from data register */
|
25 | return EEDR;
|
26 | }
|
und hier noch der EEPROM Inhalt wie er am Anfang ist:
1 | :100000000E09FFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
|
2 | :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
3 | :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
4 | :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
5 | :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
6 | :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
7 | :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
8 | :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
9 | :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
10 | :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
11 | :1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
12 | :1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
13 | :1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
14 | :1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
15 | :1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
16 | :1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
|
17 | :10010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
|
18 | :10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
|
19 | :10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
|
20 | :10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
|
21 | :10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
|
22 | :10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
|
23 | :10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
|
24 | :10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
|
25 | :10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
|
26 | :10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
|
27 | :1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
|
28 | :1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
|
29 | :1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
|
30 | :1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
|
31 | :1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
|
32 | :1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
|
33 | :00000001FF
|
und hier als der Sensor ausgestiegen ist :
1 | :10000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
|
2 | :10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
|
3 | :10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
|
4 | :10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
|
5 | :10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
|
6 | :10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
|
7 | :10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
|
8 | :10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
|
9 | :10008000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80
|
10 | :10009000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
|
11 | :1000A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60
|
12 | :1000B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50
|
13 | :1000C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40
|
14 | :1000D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30
|
15 | :1000E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20
|
16 | :1000F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10
|
17 | :100100000E04FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB
|
18 | :10011000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
|
19 | :10012000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF
|
20 | :10013000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF
|
21 | :10014000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
|
22 | :10015000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF
|
23 | :10016000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F
|
24 | :10017000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F
|
25 | :10018000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
|
26 | :10019000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
|
27 | :1001A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
|
28 | :1001B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
|
29 | :1001C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
|
30 | :1001D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
|
31 | :1001E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
|
32 | :1001F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F
|
33 | :00000001FF
|