PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR bleibt in while-Schleife hängen



waste
01.06.2005, 20:41
Hallo

ich komme nicht mehr weiter, vielleicht kann mir einer helfen.
Mein C-Programm bleibt in folgender while-Schleife hängen.

while(rxbits < 14);

So lange rxbits kleiner als 14 ist, soll es auch. rxbits wird in einer Interrupt-Routine hochgezählt. Wenn rxbits =14 ist, soll es in dem Programm weitergehen. Tut es aber nicht. Was mach ich falsch?
An einer anderen Stelle im Programm funkioniert es, wie hier:

while(PIND & (1 << PD0)); // warte auf 1. Flanke

Aber nicht bei dem 1. Beispiel. Ich hab schon andere Bedingungen ausprobiert, aber es hilft nichts.
Es ist bestimmt nur eine kleine Sache, die ich falsch mache. Wer kann mir helfen?

Gruss Waste

Kjion
01.06.2005, 21:06
Ist rxbits als volatile deklariert ??
Wenn nicht denkt der Compiler die Variable würde sich nicht ändern und macht eine Endlosschleife daraus ( kann man meistens auch schön im Assemblerlisting sehen ).

MfG Kjion

waste
01.06.2005, 21:18
Hallo Kjion,

Das war es. Mit volatile funzt es.
Danke Dir!

Gruss Waste