Hallo ich hab mal kleines Problem. Es handelt sich um folgende while Schleife while ( (PIND & (1 << PD3))&(weiter <0x01)); Warum wird die Schleife permanent beendet, trozt dass der PD3 gesetzt ist und weiter der Status 0 hat? (weiter wird druch einen externen Interrupt auf 1 gesetzt) Oder mach ich da schon einen groben Gedankenfehler. Der Atmega sollte so lange in der leeren while Schleife bleiben bis eine der beiden Bedinungen NICHT mehr erfüllt ist. Gruß und Dank
Bounty schrieb:
> while ( (PIND & (1 << PD3))&(weiter <0x01));
& ... binäre Verknüpfung
&& ... logische Verknüpfung
Die beiden Teilausdrücke willst du mit einem logischen Und verknüpfen.
Logisches "UND" in C/C++ ist "&&", nicht "&"! Du machst eine bitweise Und-Operation zwischen der Pin-Abfrage und Deinem Flag (welches 0 ist), dabei kommt logischerweise 0 raus und damit wird die Schleife abgebrochen.
Es müsste
1 | while ( (PIND & (1 << PD3)) && (weiter <0x01) ); |
heißen. Unterschied zwischen logischem (&&) und bitweisem (&) UND. In dem Fall kommts darauf an, da links und rechts nicht die gleichen Bits gesetzt sind.
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.