Gast
#3993737
Hallo zusammen,
Vielleicht habe ich heute ein Brett vor
m Kopf, aber ich komme hier gerade nicht weiter.
Folgendes Beispiel:
-unsigned char command_value[] = {1,2,3,4};
-unsigned char idx = 0;
-
- idx++;
- if (idx > 3) { idx = 0; }
-idx=1; <<<< WIRD Überschreiben
-send_num(idx); uart_putc(58);
-send_num(command_value[idx]); uart_putc(58);
-uart_putc(13);uart_putc(10);
funktioniert einwandfrei und liefert:
000000:000004:
000000:000004:
..usw
Wenn ich das Überschreiben weglasse (idx wird nicht 1 gesetzt sondern
gerechnet) kommt folgendes raus:
000000:000032:
000001:000032:
000002:000032:
... usw.
Die komplette Funktion auf dem ATMEGA168 schaut so aus:1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
Der Index (IDX) verlässt NICHT den Wertebereich - wie auch in der Debug Anzeige zu sehen. Was übersehe ich gerade??? Danke und Gruß, Adam