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
Du solltest keinen Port benutzen ohne ihn vorher richtig initialisiert zu haben. Nach dem Reset ist der Port auf Eingang gesetzt. Peter
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.