AVR: wenn Portpin Null => 1

Gast #3773928
Lesenswert?

Hallo,

der Portpin B4 eines AVR-Controllers soll abgefragt werden.

Wenn der Pin auf Hi liegt, soll das Ergebnis der Abfrage 0 sein.

Liegt der Portpin auf Lo, soll das Ergebnis 1 sein.

1
if (PINB &= ~(1<<PINB4) )) { ;}

Eigentlich hatte ich angenommen, dass es so funktionieren müsste, aber 
irgendwie klappt es nicht.
Liegt es an meinem Ausdruck, oder ist der Fehler woanders.

In jedem Fall ist der genannte Pin auf Eingang konfiguriert.
#3773939
Lesenswert?

@ AntonWerger (Gast)

>Wenn der Pin auf Hi liegt, soll das Ergebnis der Abfrage 0 sein.
>Liegt der Portpin auf Lo, soll das Ergebnis 1 sein.

Ein klassicher Fall von Bitmanipulation und C-Grundlagen.

Eher so.

1
if ( !(PINB & (1<<PINB4)) ) {
2
  // B4 is LOW
3
} else {
4
  // B4 is HIGH
5
}

>Eigentlich hatte ich angenommen, dass es so funktionieren müsste, aber
>irgendwie klappt es nicht.

Do macht eine Zuweisung, willst aber nur eine logische Verknüpfung.

>Liegt es an meinem Ausdruck,

Ja

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren