Hi, ich würde gerne wissen, wie ich einen einzelnen Port abfrage... und zwar geht es leider nicht wie schon oft gehört mit if(PIND.0 == 1) tut leider nicht, das brauche ich nähmlich, weil an PORTD0 und PORTD1 je ein taster sitzt und ich abfragen will, ob beide gedrückt sind, daher kann ich folgendes nicht machen, damit schliesst sich ja der andere port immer aus.... if((PORTD == 0b11111110) && (PORTD == 0b11111101)) damit geht es ja logischerweise nicht ...sieht man ja direkt !!!! mhh also wie kann man nen einzelnen Port abfragen ?? :] wär schön wenns mit if((PORTD.0 == 0) && (PORTD.1 == 0)) Danke für eure Hilfe, Stud
oder binär: if (!(PIND & ~0b11111100))... oder auch if (!(PIND & 0b00000011)) Sollte also einer der beiden Pins nicht betätigt sein (also log. 1), ist PIND & 0x03 != 0, was dafür sorgt, dass !(PIND & 0x03) == 0 ist, womit im else zwei ein nicht betätigter Taster bearbeitet werden kann-.
Hi, danke für die schnelle Antwort, aber was passiert, wenn noch ein schalter an PORTD4 sitz, dann tritt folgender Fall ja auf oder auch if (!(PIND & 0b00001011)) aber ich kann ja nicht immer alle schaltstellungen berücksichtigen, oder stört dieser port dann nicht ??
falls du alle Varianten brauchst: temp=PIND & 0x03; switch (temp){ case 0: ....;break; //beide Eingänge 0 . . case 3: ....;break; //beide Eingänge 1 }
Dann nimmt man die Entprellung nach Peter Dannegger... (siehe Codesammlung Suchbegriff im Betreff: "bulletproof") ...
Spiel die Sache doch mal mit ner Logik-Tabelle durch... Crazy Horse hat doch schon ne wunderschöne Lösung geliefert...
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.