PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warten auf Tastendruck -> Interrupt wird nicht mehr ausgeführt



Amri
27.11.2012, 11:03
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:

...
while(PINC & (1<<PINC4)) {}
...
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.

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...

Wsk8
27.11.2012, 11:22
Schalte mal die Optimierung im Compiler aus, vlt optimiert er hier was weg. Stichwort volatile.

mfg

Amri
04.12.2012, 07:56
Schalte mal die Optimierung im Compiler aus, vlt optimiert er hier was weg. Stichwort volatile.

mfg
Das hat leider nicht geholfen...

markusj
04.12.2012, 08:43
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

robo_tom_24
04.12.2012, 13:10
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 ;)