Hallo Leute,
ich sehe vermutlich den Wald vor lauter Bäumen nicht, aber folgendes
Problem werde ich nicht los:
Ich habe eine Funktion, in der ein paar Puffer gefüllt werden sollen.
Dazu wird geprüft, ob diese leer sind. Wenn ich die Statusvariablen
innerhalb der Funktion deklariere, kann ich sie mir hinterher beim
Debuggen nicht angucken. Es scheint sie existieren nicht.
1 | void fillLog()
|
2 | {
|
3 |
|
4 | uint8_t buffer1empty;
|
5 | uint8_t buffer2empty;
|
6 | uint8_t buffer3empty;
|
7 |
|
8 | buffer1empty = BUFFER_isEmpty(&positionCountBuffer,2);
|
9 | buffer2empty = BUFFER_isEmpty(&positionAbsBufferHigh,1);
|
10 | buffer3empty = BUFFER_isEmpty(&positionAbsBufferLow,1);
|
11 |
|
12 | while(1)
|
13 | {
|
14 | dataCount = BUFFER_read(&positionCountBuffer,2);
|
15 | dataAbsH = BUFFER_read(&positionAbsBufferHigh,1);
|
16 | dataAbsL = BUFFER_read(&positionAbsBufferLow,1);
|
17 | ...
|
18 | }
|
19 | }
|
In dem while steht eigentlich was anderes, aber zu Testzwecken steht
halt nur ne 1 drin.
Wenn ich die Variablen so deklariere, bleiben die die empty Flags
unsichtbar. Ich kann sie nicht zu watch1/watch2 hinzufügen.
volatile bringt keinerlei Änderung.
Wenn ich die Flags aber global ohne volatile definiere, funktioniert es.
Es wurde sonst nichts geändert.
Woran könnte sowas liegen?