Servus zusammen,
ich versuche gerade herauszufinden woran es scheitert, dass ich bei
meinen AVRs (atTiny24 und atMega88PA) keine werte erfolgreich ins EEPROM
schreiben und später auslesen kann.
Ich hab mir dann jetzt mal das .lss-file genauer angeschaut und bin nun
soweit euch ein paar Fragen stellen zu müssen.
Für die eine Frage zitiere ich mal aus dem lss-file:
1 | uint16_t tmp = spi_rx_buf[1];
|
2 | 94: 60 91 6c 00 lds r22, 0x006C
|
3 | eeprom_write_word( &ee_temp_high, tmp );
|
4 | 98: 80 e0 ldi r24, 0x00 ; 0
|
5 | 9a: 90 e0 ldi r25, 0x00 ; 0
|
6 | 9c: 55 d1 rcall .+682 ; 0x348 <__eewr_word_tn24a>
|
1 | 00000348 <__eewr_word_tn24a>:
|
2 | 348: 11 d0 rcall .+34 ; 0x36c <__eewr_byte_tn24a>
|
3 | 34a: 27 2f mov r18, r23
|
4 | 34c: 10 c0 rjmp .+32 ; 0x36e <__eewr_r18_tn24a>
|
1 | 0000036c <__eewr_byte_tn24a>:
|
2 | 36c: 26 2f mov r18, r22
|
3 |
|
4 | 0000036e <__eewr_r18_tn24a>:
|
5 | 36e: e1 99 sbic 0x1c, 1 ; 28
|
6 | 370: fe cf rjmp .-4 ; 0x36e <__eewr_r18_tn24a>
|
7 | 372: 1c ba out 0x1c, r1 ; 28
|
8 | 374: 1f ba out 0x1f, r1 ; 31
|
9 | 376: 8e bb out 0x1e, r24 ; 30
|
10 | 378: 2d bb out 0x1d, r18 ; 29
|
11 | 37a: 0f b6 in r0, 0x3f ; 63
|
12 | 37c: f8 94 cli
|
13 | 37e: e2 9a sbi 0x1c, 2 ; 28
|
14 | 380: e1 9a sbi 0x1c, 1 ; 28
|
15 | 382: 0f be out 0x3f, r0 ; 63
|
16 | 384: 01 96 adiw r24, 0x01 ; 1
|
17 | 386: 08 95 ret
|
beim Versuch zu verstehen, was da passiert, fiel mir auf, dass da ein
cli steht, aber kein sei ?! ich hab im ganzen lss-file gesucht und es
gibt nur ein "sei" und das steht am Ende der Initialisierung. Hat
schonmal jemand etwas ähnliches beobachtet, und/oder eine Lösung parat?
Denn ich brauche die Interrupts definitiv, und die sollten auch wirklich
nicht länger als irgendwie nötig blockiert sein!
Zum Anderen hänge ich bei folgender Frage:
worin liegt der Unterschied zwischen eeprom_write_<xyz>() und
eeprom_update_<xyz>()? Die Dokumentationen, die ich zu den diesen
Funktionen finde, gehen kaum über die Funktionsdeklaration hinaus und
auch die Funktionsdefinitionen bleiben mir irgendwie verborgen. Ich
komme hier igendwie auch nicht so recht weiter.
Wäre schön wenn mir der ein oder andere Wissende ein paar Hinweise oder
Tips geben könnte.
Vielen Dank
Tobi