www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8051: An Port 0 kann nichts ausgegeben werden


Autor: Sebastian B. (lufti)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein kleines Problem.
Ich habe ein Board gebastelt mit einem AT89C51ed2, welches im Anhang
beiliegt.

Das Schmatic ist leider nicht komplett aktuell:
Die UART Schnittstelle, PSEN und RST haben mittlerwele eine etwas
andere Beschaltung. Sind aber im Betrieb (nicht Programmierung) korrekt
beschaltet.

Ich habe getestet, ob ich verschiedene I/O-Pins setzen kann.
Dies klappt bei fast allen: Bei allen außer bei Port 0.

Diese geben immer 0 aus. Egal was ich ausgebe. Das Merkwürdige ist,
dass wenn ich Spannung daran messe (zu Masse hin), dann verändert ishc
die Spannung von >0V bis <5V je nachdem wie ich die Spannung, wenn ich
die + und - Messstrippen anfasse! Wenn ich die Minus-Strippe mit der
Hand anfasse, geht die Spannung runter. Wenn ich die Plus-Strippe
anfasse geht die Spannung hoch.
Das ist das gleiche Verhalten, wie wenn ich die Messstrippen garnicht
anschließe und nur anfasse.
Andere Pins kann ich Prima messen .. warum?

Kann es sein, dass der Controller glaubt, dass P0.0 - P0.7 Eingänge und
keine Ausgänge sind?

Autor: Sebastian B. (lufti)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sry .. hier die richtige Schematic-Datei.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat keine internen pullup-Widerstände, und aktiv H kann sowieso kein
8051 ausgeben. Hänge an die benutzten Ports einen Widerstand (4k7) nach
Vcc, gut ist.

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, .. ich dachte bei Ausgängen braucht man keine Pull-Ups?
Das verstehe ich nicht.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lies dir mal das Datenblatt über die Ports durch - da wird dir einiges
klar....
Prinzipiell haben die Ports nur einen FET am Pin nach Masse, dazu
normalerweise einen pullup nach Vcc. Am Port0 fehlen die Widerstände
aber, hat was mit dem Interface für ext. Speicher zu tun.

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann muss ich ja die Optokopller Widerstände neu berechnen.
Ich verstehe nicht, wie das funktionieren soll.

Ich habe einen rangebastelt und es liegen dort jetzt
~300mA bei: setb P0.7
~300mA bei: clr  P0.7

Das kann doch nciht stimmen?!

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
300mA, sofort abschalten, da ist was oberfaul !

Oder warscheinlich schon kaputt.


Peter

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, .. mein Fehler .. ich meinte mV .. :D
Jetzt hab ich mir selber einen mächtigen Schreck eingejagt :P

Ich hab das nochmal mit den Widerständen überprüft.
In der Manual war nichts vorgeschlagen, habe es also nochmal genau
nachgeguckt und einen 4.7k nach +5V an P0.7 angeschlossen. Kein
Resultat.

Hab dann mal an P0.7 eine 1 ausgegeben und extern den Pin P0.7 mit P1.0
verbunden. Da P1 interne Pull-Ups hat, müsste das dann doch gehen,
oder?!
Geht aber nicht.

An P0.7 bzw. P1.0 sind immer noch ein wechselnder Wert ohne und mit
Pull-Up (4.7k) an P0.7 zu messen.

Kann es vielleicht sein, dass der P0 irgendwie in einem Modus ist, der
ihm einen Eingang oder irgendetwas anderes zuschreibt? Ich meine, z.B.
dass durch die Beschaltung oder Softwareeinstellung (SFR?) des
Controllers P0 als Eingang zählt, obwohl ich doch mit "setb P0.7"
eine 1 ausgebe?

Die Verknüpfung von P0.7 mit der SFR Adresse #87h habe ich überprüft.
Daran liegts also nicht.

ich hoffe, euch fällt etwas ein!

Sebastian

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schliesse Deine Optokoppler anders an:

Port -|\/\/|---- Optokoppler --- VCC

    (Vorwiderstand)

Die Ports der MCS-51 können nur nach Masse ziehen, die Pull-Ups liegen
im K-Ohm -Bereich, da kannst Du keinen Optokoppler mit treiben.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und dann dran denken: der OK ist eingeschaltet, wenn der Port0 ist (und
umgekehrt) :-)

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Schließe an Port 0 die Pull_Up_Widerstände 4,7kohm nach High!
Ich empfehle dir danach einen Inverter z.b. 7404 an zuschliessen damit
wird der Port nicht so belastet.

Was wichtig ist wenn Du ne "1" einschreibst wird der Transistor
am Port z.b. P0.0 abgeschaltet so bekommst Du nur noch über den
Pull-Up-Wiederstand ein Signal-High der wiederum durch den Inverter
negiert wird.

Somit brauchst Du deine Optokoppler-Schaltung nicht zu ändern.



Gruß Klaus

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich muss mich entschuldigen. :/

Die Widerstände habe doch gewirkt, .. habe nur in der Hektig den
Unterschied zwischen V-AC und V-DC auf dem Messgerät nicht beachtet oO
..

Man hab ich mich geärgert!

Optokoppler funktionieren genauso, wie die Schaltung auf dem Plan ist.
Ich habe lediglich die Pull-Ups hinzugefügt.

Inverter oder anderen Schnickschnack habe ich nicht genommen.
Der Optokoppler muss auch nur einmal kurz auf allen 4 Transistoren
schalten. Maximal 1sec in Betrieb. Und nur einer zur selben Zeit.

Wenn ich jetzt den Optokoppler durchschalten lassen will, muss ich
lediglich eine logische 0 am Port Pin ausgeben!


Vielen Danke für eure Hilfe!!!

Sebastian

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.