Frage zum AT90S2313

Gast #72042
Lesenswert?

Hallo.
Ich habe mir eine kleine Schaltung zum Experimentieren mit dem µC
At90S2313 aufgebaut.
PortD verwende ich als Eingang. Ich habe da einfach Stiftleisten auf
die Platine gelötet, auf die man dann Jumper setzen kann um den Pin auf
HIGH zu setzen. Außerdem habe ich 22k-Pulldown-Widerstände (gegen
Masse) geschaltet.

PortB ist der Ausgang. Die 8 Pins steuern über 330 Ohm-Widerstände
jeweils eine LED an, wobei die Anode am µC liegt und Kathode an Masse.

Nun mein Problem:
Ich habe den µC so programmiert, dass er die Eingänge einliest und dann
an die Ausgänge ausgibt, also PortB=PinD
Es funktioniert auch fast alles, nur dass Eingang PD1 komischerweise
dauernd auf High ist und somit auch ständig die LED an PB1 leuchtet!

Woran kann das liegen? Wenn ich den Eingang PD1 direkt auf Masse ziehe,
dann geht auch die LED PD1 aus (und bleibt dann auch meistens aus).
Sind meine Pull-Down-Widerstände zu groß gewählt?
Gast #72043
Lesenswert?

kommt drauf an, ob du die internen pullups aktiviert hast. Wenn ja
(PortD=0xff) sind 22k nicht besonders glücklich gewählt.
Machs doch einfach andersrum: aktiviere die internen pullups, Schalter
gegen Masse.
Gast #72044
Lesenswert?

Hi.
Schalter gegen Masse ist für meinen Zweck nicht praktisch.
Später sollen die Eingänge nämlich an den Parallelport angeschlossen
werden und es soll dann auch im µC eine '1' ankommen, wenn der
Prallelport eine '1' sendet. Übergangsweise nehme ich jetzt einfach
die Jumper.

Hab das Problem aber gerade lösen können. In der Schleife habe ich
einfach den problematischen Pin auf 0 setzen lassen.
Danach wird dann der Eingang gelesen und an den Ausgang geschrieben.
So funktioniert es problemlos.

PS: Muss PortD=0xFF oder DDRD=0xFF heißen?
Mit welchem Wert kann ich die Pull-Ups deaktivieren?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren