Hallo, wenn ich PORTB = 0xFF; setze z.b für Pullups, dann wäre ja der PortB=0b1111 1111 Würde ich jetzt nun einen beliebigen PINB abfragen, liegt dort dann eine "1" an? Müsste doch so sein oder..?
O. A. schrieb: > Würde ich jetzt nun einen beliebigen PINB abfragen, liegt dort dann eine > "1" an? Das kommt auf den Prozessortyp an und auf die Programmierung - z.B. ob die Pins als Ausgang oder Eingang programmiert sind, dazu hast du dich ja auch nicht geäussert. Georg
O. A. schrieb: > Würde ich jetzt nun einen beliebigen PINB abfragen, liegt dort dann eine > "1" an? Der Pullup macht nur eine 1, wenn die externe Beschaltung nichts anderes erzwingt. Ausgenutzt wird das z.B. beim abfragen von Schaltern/Tastern.
O. A. schrieb: > wenn ich PORTB = 0xFF; setze z.b für Pullups, dann wäre ja der > PortB=0b1111 1111 > > Würde ich jetzt nun einen beliebigen PINB abfragen, liegt dort dann eine > "1" an? Kommt drauf an, was an der Hardware passiert. PINB liefert immer die Zustände der Pins am Port B zurück. Auch dann, wenn ein Pin auf Ausgang konfiguriert ist. Wenn du bspw. eine 1 für so einen Pin nach PORTB schreibst, dann wird der Pin auf H gehen. Hast du nun aber in deiner Schaltung einen Kurzschluß dieses Pins nach GND, dann bleibt der auf L und wenn du jetzt PINB liest, bekommst du auch eine 0 für diesen Pin. Sinngemäß bei einem Schluß eines Pins nach Vcc. Im Normalfall wird PINB aber für alle Ausgangs-Pins den gleichen Wert liefern, den du vorher nach PORTB geschrieben hast.
Axel S. schrieb: > wenn du jetzt PINB liest, bekommst du auch eine 0 > für diesen Pin Ich weiss nicht, ob es sich hier um einen Arduino handelt, das scheinen hier alle Teilnehmer am Forum einfach vorauszusetzen. Was ich aber sicher weiss, ist dass deine Behauptung keineswegs auf alle Prozessoren zustrifft. Es gibt sogar welche, bei denen man sowohl das eben beschriebene Ausgaberegister lesen kann oder den tatsächlichen Zustand des Pins. Die Unkenntnis dieser Zusammenhänge führt zu besonders hübschen Fehlerbildern, z.B. dass man mit einem Read-Modify-Write einen Eingangszustand versehentlich festschreibt. Georg
Georg schrieb: > Es gibt sogar welche, bei denen man sowohl das eben beschriebene > Ausgaberegister lesen kann oder den tatsächlichen Zustand des Pins Das ist beim AVR durchaus so: liest du PORTB zurück, dann liest du das Ausgaberegister, liest du PINB, dann den Eingangszustand. Das ist keineswegs auf „Arduino“ beschränkt, aber die Namen der Register deuten schon sehr stark auf einen AVR.
Angenommen, PortB ist als Eingang konfiguriert. also DDRB=0; PORTB=0xFF; Und ein anderer Port als Ausgang. Nun frage ich einen PINB o bis 7 ab, wenn kein Taster gedrückt wird, dann müsste mir die Abfrage immer "1" liefern richtig?
O. A. schrieb: > Angenommen, > > PortB ist als Eingang konfiguriert. > > also > DDRB=0; > PORTB=0xFF; Er ist damit für alle Pins als Eingang mit aktiviertem Pullup konfiguriert. > Nun frage ich einen PINB o bis 7 ab, wenn kein Taster gedrückt wird, > dann müsste mir die Abfrage immer "1" liefern richtig? Sofern äußere Beschaltung das nicht verhindert, z.B. ein angeschlossener ISP-Programmer (bei vielen Megas sind die ISP-Anschlüsse an PortB) oder ein schlichter Zinnpopel nach GND... Übrigens: PinX hängt dem realen Geschehen an den Pins immer 1..2 Takte hinterher. Das ist manchmal nützlich, manchmal aber auch schädlich (vor allem, wenn man beim Programmieren nicht an dieses Verhalten denkt).
Hi Zu allem Überfluss kannst Du, wenn Du PinB0 mit 1 beschreibst, den Zustand des PortB0 invertieren (toggel/torkeln). Sollte bei allen ATmega und ATtiny gehen, getestet nur mit ATtiny - aber Da geht's. MfG
Patrick J. schrieb: > Sollte bei allen ATmega und ATtiny gehen, getestet nur mit ATtiny - aber > Da geht's. Dazu muss man wirklich ins DB schauen. Als Beispiel das alte Schlachtschiff Mega8 hat es nicht, Mega16 auch nicht und ebenso fehlts beim Mega32 und Tiny13. Also immer gucken.
:
Bearbeitet durch User
Beitrag #5012833 wurde vom Autor gelöscht.
Hi Danke für die Klarstellung - bisher hatte ich wohl beim Schauen das Glück, daß die angeschauten µC dieses 'Feature' hatten - somit n2k (nice to know) - in beide Richtungen. MfG
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.