Forum: Compiler & IDEs Standard Wert von PINB


von Bastian Sch. (Gast)


Lesenswert?

Hallo!

Welchen standard Wert hat PINB, wenn man ein Programm startet? Laut
Doku n/a, allerdings habe ich durch ausprobieren festgestellt, dass der
Start Wert immer 1 ist. Hintergrund: Ich benutze Pin 0 von PINB als
Anschluss für einen Schalter, den ich pollen will (Ja, kein Interrupt).
Ich frage als erstes ab, ob dieser gleich 0 ist (bedeutete bislang für
mich gedrückt) und nach einem delay() gleich 1 (bedeutete für mich
bislang Knopf nicht gedrückt) ist. Jetzt habe ich in der Doku von Atmel
gelesen, dass der Wert n/a ist. Was habe ich davon zu halten?

Vielen Dank!

mfg

Bastian

von Peter (Gast)


Lesenswert?

Du solltest keinen Port benutzen ohne ihn vorher richtig initialisiert
zu haben. Nach dem Reset ist der Port auf Eingang gesetzt.

Peter

von Bastian Sch. (Gast)


Lesenswert?

Ok. Ich habe ihn als erstes über DDRB als Input Port gesetzt und dann
über PORTB = 0xFF die Pullups aktiviert. Reicht das oder muss ich noch
etwas zusätzlich tun?

Bastian

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Das reicht, aber da es ein Eingabeport ist, spiegelt er natürlich
selbst nach dem Reset sofort die extern anliegenden Signale wieder,
daher das "N/A" (not applicable) im Datenblatt.  Es gibt für PINx
einfach keinen definierbaren Reset-Wert.

Wenn du mit den Pullups arbeitest, wirst du wohl sinnvollerweise den
Schalter nach Masse liegen haben, d.h. ein gedrückter Schalter liest
sich als 0-Bit aus.

von leif (Gast)


Lesenswert?

Hi Bastian,

Wenn man die Pins in der Reihenfolge

DDRB
PORTx

initialisiert (wie im AVR-Tutorial angeben), kann es passieren, daß
sofort beim Programmstart ein Schalter als gedrückt erkannt wird.

Warum das so ist steht in:

http://www.mikrocontroller.net/forum/read-1-234032.html#234224

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
Noch kein Account? Hier anmelden.