-
-
Erfahrener Benutzer
Roboter Experte
Wenn Du mit der Zeile
Portb = Pac
erreichen möchtest, dass die Variable Pac mit dem Eingangs-Wert gleichgesetzt wird (und davon gehe ich mal aus), stecken drei Fehlerchen drin:
1. Die Reihenfolge muss andersrum sein: Pac = PortB. Als erstes steht immer die Variable um die es geht, und als zweites der Wert, den diese Variable annehemen soll.
(Ganz analog zur deutschen Sprache: Fritz = doof weist einer bestimmten Person eine Eigenschaft zu, heißt aber mitnichten, dass alle doofen Menschen Fritz heißen
)
2. Statt PortB musst Du PinB nehmen. Ist etwas verwirrend, aber zu jedem Ein-/Ausgangsbeinchen des Controllers gehören 3 Register:
-DDRX.Y legt fest, ob´s ein Ein- oder Ausgang sein soll
-PORTX.Y ist das bit, das ausgegeben wird, wenn der Anschluss als Ausgang konfiguriert ist
-PINX.Y enthält das bit, das an dem Anschluss anliegt, wenn er als Eingang konfiguriert ist. Eingänge also immer über das PIN-Register abfragen!!!
Um diese Verwirrung noch zu komplettieren: Auch wenn ein Anschluss als Eingang konfiguriert ist (DDRX.Y = 0), hat das dazugeörige PORT-Bit auch eine Bedeutung: Ist es 1, ist der interne PullUp-Widerstand aktiviert. Das ist wichtig, wenn der Eingang ansonsten "offen" ist.
3. Die somit korrigierte Zeile
Pac = PinB
gehört hinter das "do" - sonst wird sie genau ein einziges mal ausgeführt, und Änderungen an Deinem Eingang werden nicht mehr auf Pac übertragen.
Alles klar??
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen