Gast
#76927
Hallo!
wenn ich das mit dem Volatile richtig verstanden habe,
dann sollte folgendes Beispiel nicht funktionieren:
(testvar wird in einem interrupt inkrementiert)
char testvar;
while( testvar < 6)
{
WDG(); // Watchdog
};
so ist es auch, der prozessor läuft sich fest. so weit so gut.
deshalb habe ich mal versucht testvar umzucasten:
while( ((volatile char)testvar) < 6)
{
WDG(); // Watchdog
};
jetzt sollte man aus der Schleife rauskommne, sobald testvar
hochgezählt ist. passiert aber nicht, der code ict der gleiche wie im
Beispiel ohne cast
warum??
so wirds compilert:
while( testvar < 6)
2bda: 80 91 1a 02 lds r24, 0x021A
2bde: 86 30 cpi r24, 0x06 ; 6
2be0: 18 f4 brcc .+6 ; 0x2be8
{
WDG();
2be2: a8 95 wdr
2be4: 86 30 cpi r24, 0x06 ; 6
2be6: e8 f3 brcs .-6 ; 0x2be2
}