Forum: Mikrocontroller und Digitale Elektronik Frage zum AT90S2313


von Andreas Flaming (Gast)


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?

von crazy horse (Gast)


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.

von Andreas Flaming (Gast)


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?

von crazy horse (Gast)


Lesenswert?

Als Eingang: DDRx=0x00
mit pullup: Portx=0xff
ohne pullup: Portx=0x00

von Andreas Flaming (Gast)


Lesenswert?

Aus irgendeinem Grund funktioniert es plötzlich, auch mit dem alten
Code.
Trotzdem vielen Dank für die schnelle Hilfe

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.