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 }
Klar, Du kannst einen type qualifier nicht so einfach casten. Du mußt die Variable schon passend mit dem qualifier deklarieren. (Der cast funktioniert m. E. für einen qualified pointer type. So sind beispielsweise die IO-Register deklariert.)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.