www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zum AT90S2313


Autor: Andreas Flaming (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Flaming (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: crazy horse (Gast)
Datum:

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

Autor: Andreas Flaming (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.