ich hab bei mir port b als eingang. Nun meine frage : muss ich den dazu den eingang auf gnd legen ? wenn es 0 sein soll ?? und wie sieht das alles bem ausgang aus ??
die Grundentscheidung triffst du mit dem Wert im DDRx-Register, steht dort eine 1, ist es ein Ausgang, bei 0 ein Eingang. Das Portgegister PORTx hat eine Doppelbedeutung, ist der jeweilige Portpin als Ausgang konfiguriert, wird der Wert von PORTx auch ausgegeben. Ist der Pin dagegen als Eingang konfiguriert, bedeutet eine 1 im Port-Register interner Pullup-Widerstand eingeschaltet, d.h. am Eingangspin erscheint ein H-Pegel, der von externen Schaltungen nach L gezogen werden kann. Steht eine 0 im PORTx-Register, ist der Eingang hochohmig, sowhol H-als auch L-Pegel wird von ext. Schaltungen bereitgestellt. Unabhängig von allem müssen Eingaben immer vom PIN-Register gelesen werden (beliebter Anfängerfehler, vom Portregister zu lesen)
uiui kompliziert :) das mit dem DDRx Register weiß ich aber heißt das jetzt wenn ich jetzt einen eingang habe (also 0 gewählt habe) .. und damits ganz einfach ist ... ich lege die denn eingang auf gnd dann liegt am eingang 0 oder ? unterbreche ich dann liegt am eingang 1 hab ich das so richtig verstanden ??
fast, das ist so nur richtig, wenn im entsprechenden PORT-Register eine 1 steht. Mal ein Beispiel, PortB.0 soll ein Eingang sein, die anderen Ausgänge mit 0 am Ausgang. ldi r16, 0b11111110 ;PB0 as input out DDRB, r16 ldi r16, 0b00000001 ;PB0 pullup activated out PORBB, r16 read_input: in r16, PINB ; r16 enthält jetz an Bitstelle 0 den Wert 1, wenn der Eingang offen ist und 0, wenn der Eingang extern auf Masse gelegt ist.
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.