www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Abbruchbedingung einer While schleife.


Autor: Bounty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Vollgefressener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ersetze mal das zweite "&" durch ein "&&".

Autor: Thomas Decker (t0mmy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es müsste
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.

Autor: Bounty (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr seit Klasse!!!

Das wars!!

Ich danke euch vielmals!!

Autor: Magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
www.mikrocontroller.net - hier werden Sie geholfen ;o)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.