Hallo,
ich habe ein Problem mit einer Variable. Und zwar wird die Variable von
selbst wieder auf 0 gesetzt.
Ich nutze den C167 µC mit dem Keil Compiler, neuste Version.
Optimierungen sind alle ausgeschaltet, bzw. ich habe alle Level
durchgetestet.
Beispiel-Code TestVar.c:
1 | unsigned char cVar = 0;
|
2 |
|
3 | void InitVar(void)
|
4 | {
|
5 | cVar = 1;
|
6 | }
|
7 |
|
8 |
|
9 | void Run{void}
|
10 | {
|
11 | if (cVar) // hier steht immer 0 drin
|
12 | {
|
13 | // do something
|
14 | }
|
15 | }
|
Beispiel-Code Main.c:
1 | extern void InitVar(void);
|
2 | extern void Run(void);
|
3 |
|
4 | void Main{void}
|
5 | {
|
6 | // C167 Init: Ports, Timer, serielle Schnittstelle
|
7 | Init_MCU();
|
8 |
|
9 | while(1)
|
10 | {
|
11 | Run();
|
12 | }
|
13 | }
|
Deklariere ich die Variable als unsigned int, dann habe ich keine
Probleme. Auch wenn die Varabele als static unsigned char definiert
wird, tritt der Fehler weiterhin auf.
Dieses Verhalten kann ich mir nicht erklären, hat jemand einen Tipp für
mich?
Vielen Dank