1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Im Anhang das projekt für avr-gcc mit Makefile (unter linux benutzt) mit isptiny progger mit atmega32 und 16MHz quarz drann.
|
Anzeige
|
while scheife wird nie verlassen, warum?
Im Anhang das projekt für avr-gcc mit Makefile (unter linux benutzt) mit isptiny progger mit atmega32 und 16MHz quarz drann. Warum soll die Schleife nie verlassen werden?
Gast
#3833952
Warum uberprüfst du die Bedingung nicht im while?
Gast
#3833960
while(bedingung){}
das Programm bleibt solange in einer While-Schleife wie ihre Bedingung
Wahr ist (logisch 1) mit while(1){} bleibt die Bedingung immer Wahr,
somit wird die Schleife auch nie verlassen.
Gast
#3833962
vllt besser
while(n != 0x00){} // solange n ungleich 0x00
Gast
#3833964
> das Programm bleibt solange in einer While-Schleife wie ihre Bedingung > Wahr ist [..] ..oder die Schleife vorzeitig verlassen wird > [..] mit while(1){} bleibt die Bedingung immer Wahr, > somit wird die Schleife auch nie verlassen. ..außer sie wird vorzeitig verlassen. Ad TO: woher weisst Du denn, dass die Schleife nie verlassen wird? Die Schleife sollte nach zirka 64 sekunden verlassen werden: 256*(250ms+1ms) = 64256ms Mach doch aus der while eine do while.
Ist es beabsichtigt, dass du bei n=255 insgesamt 256 schleifendurchlaufe hast?
Gast
#3833970
Die Zeile if(n==0x00)break; hatte ich beim ersten Überfliegen nicht gesehn. Deshalb auch der Nachtrag mit "solange ungleich 0x00" wenn es nur eine Schleifen-Ausstieg gibt ist die if-Abfrage unsinnig da die While-Schleife selber bei jedem Durchgang eine Bedingungs-Abfrage macht
Gast
#3833971
Und was kommt nach der while-Schleife? Die wird mit Sicherheit durch den break verlassen. Wenn aber danach nichts mehr an Code kommt, dann fängt der AVR wieder von vorne an. Für Dich erscheint es so, als würde die while-Schleife nicht verlassen. Als Tipp zum testen: Füge nach dieser Schleife diesen Code ein:
That's it.
Gast
#3833972
OldMan schrieb: > Und was kommt nach der while-Schleife? steht doch im Anhang. > Wenn aber danach nichts mehr an Code kommt, dann fängt der > AVR wieder von vorne an. nein macht er nicht, nach der main baut die toolchain eine entlosschleife ein. > Für Dich erscheint es so, als würde die while-Schleife nicht verlassen nein Alles klar. Hab nen Denkfehler gehabt. Sie wird doch unterbrochen, so wie es gehört. Habe nur 4 bit an LED's gelegt und habe nicht dran gedacht das das blinkmuster 16 mal wiederholt wird bis 0x00 erreicht ist anstelle nur ein mal :-/
Gast
#3833988
Man, man, man, er hat keine Geduld für die lange Zeit, oder das delay läuft nicht ab. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|