Hallo, ich bin nach einigen Jahren Hobby-Assembler-Programmierung jetzt auf C umgestiegen weil es hier und da doch übersichtlicher ist. Ich verwende den Codevision Compiler. Nun habe ich jedoch eine Frage zu den Interrupts: Default-Einstellung des Compilers ist, alle Register automatisch zu sichern. Wenn ich jetzt aber in einer Interruptroutine z.B. einen Wert vom UART einlese und ihn dann einer Variablen übergebe, so wird diese dann ja auch wieder automatisch "restauriert" wenn ich die Interruptroutine verlasse, falls diese variable einem register zugeordnet war. Der übergebene Wert ist also futsch! Wie umgehe ich das ?? Die Variable im SRAM anlegen? oder wird auch dort restauriert? was macht der Compiler denn eigentlich genau?? aus der recht knappen Online-Hilfe werde ich nicht wirklich schlau... Es würde mich freuen wenn jemand eine Antwort weis! Vielen dank schonmal, Karl-Heinz.
Hallo, 1. Globale Variable (außerhalb main() ) definieren volatile int my_var; 2. SIGNAL(SIG_UART_RECV) { was auch immer ...; my_var = UDR .... }
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.