Schalte mal die Optimierung im Compiler aus, vlt optimiert er hier was weg. Stichwort volatile.
mfg
Hallo!
Ich habe ein kleines Problem mit einem Programm: Ich habe ein Timer-Interrupt, das während der gesamten Laufzeit aktiviert ist.
An einer Stelle in der main warte ich darauf, dass der Benutzer eine Taste drückt:
Das Problem: Sobald das Programm bei der Schleife ankommt, wird das Timer-Interrupt nicht mehr ausgeführt. Sobald der Taster gedrückt wurde, geht es weiter.Code:... while(PINC & (1<<PINC4)) {} ...
Wenn ich jetzt in die Schleife ein "sei();" einfüge, dann funktioniert alles.
Kann mir jemand sagen, warum das so ist? ich habe das Interrupt schließlich nirgends deaktiviert...
Geändert von Amri (27.11.2012 um 12:09 Uhr)
Schalte mal die Optimierung im Compiler aus, vlt optimiert er hier was weg. Stichwort volatile.
mfg
Wie wäre es Mal mit mehr Quelltext? Einem Assembler-Listing des generierten Hex-Files? Dem Hex-File selbst, um das Mal durch den Simulator zu jagen? Angaben zur Compilerversion?
mfG
Markus
Tiny ASURO Library: Thread und sf.net Seite
Das was du da machst ist ja eigentlich ganz schlecht....
Programmier doch den Taster auf Interrupt, wär doch eleganter und weniger Arbeit für den µC
Lesezeichen