mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 80C51 Port als Eingang und Ausgang benutzen


Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe folgendes raelisierungsproblem.
Ich arbeite mit einem 87 C159, also einem µC der 8051 er Familie.

Ich steuere damit ein Transponder-Lesegerät an. Dazu habe ich nur eine 
Taktleitung, die einmal mein Controller steuert, und dann das 
Lesegerät(Reader), um mir vom transponder die daten zu schicken.

Mein Problem. Ich schicke nun meine Daten vom µC zum Reader. Dann 
schicke ich ihm ein Signal, er solle mir nun seine Daten schicken, und 
die taktleitung "übernehmen", dazu müsste ich aber nun meinen µC als 
Eingang setzen.
Dazu könnte ich ja nun einfach meinen bidirektionalen Pin auf 1 setzen, 
und hätte somit einen Eingang, der beliebig von meinem Reader gesetzt 
werden kann. Das problem ist nur, ich "darf"(Protokoll-Vorschrift) 
meinen Pin nicht auf 1 legen, sondern muss ihn auf 0 lassen.

Meine Ports können mit 4 Modi belegt werden, das sind

1.bidirektional
2.open drain
3.high impedance (tristate)
4.push-pull.

Hat jemand eine Idee, wie ich dieses Problem lösen könnte ?

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Komischer Transponder...
Kann ich mir irgendwie nicht vorstellen.
U.U. wirst du noch Gatter benötigen, das sich um den Pegel auf der 
Taktleitung kümmert.

Könntest du noch mehr zum Transponder schreiben? 
(Typenbezeichnung/Datenlatt posten?)

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt befindet sich unter


http://www.ti.com/rfid/docs/manuals/refmanuals/RI-...

Auf der Seite 28 ist der Taktleitung-Übergabe beschrieben.
Unter dem Punkt "time d:" sieht man, das SCLOCK, so heißt die 
Taktleitung bei der Übergabe auf NULL bleiben muss.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, es ist Seite 34.

Autor: Joe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir das Datenblatt jetzt nicht angesehen aber im Prinzip ist 
die Sache einfach. Beim 8x51 muß ein Port Pin logisch 1 sein um als 
Eingang zu arbeiten.

Daraus folgt das ein Transponder den Pin an Masse schalten muß, in der 
Regel also ein open Collector. Kann der Transponder das nicht dann 
schalte einen Transistor zwischen Transponder und 8x51. Thats it.

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven!

Die Lösung steht im Datenblatt auf Seite 34 unter Punkt 4.5.2.1. Hier 
ist ganz genau beschrieben, wie die Übergabe der Kontrolle über die 
Taktleitung zwischen µC und Readerchip funktioniert:

Der µC hält CLK low und gibt eine steigende Flanke auf DIN (Zeitpunkt b) 
(Das gleiche leitet auch ein ES1 ein).

Anschließend folgt eine fallende Flanke auf DIN, CLK ist immer noch low 
(Zeitpunkt c) (das ist der Unterschied zum ES1, wo es eine steigende 
Flanke auf CLK gibt). Ab diesem Zeitpunkt treiben beide (µC und Reader) 
die CLK-Leitung.

Jetzt legt der µC GLEICHZEITIG DIN und CLK auf High (Zeitpunkt d). CLK 
bleibt dabei in Wirklichkeit Low, da der Reader-IC die Kontrolle über 
diese Leitung übernommen hat, nur im 8051 liegt der Pin nun hochohmig 
auf high! Die steigende Flanke auf DIN zeigt dem Reader-IC, daß er nun 
die alleinige Kontrolle über CLK hat, und die Daten übertragen kann, bis 
durch eine fallende Flanke auf DIN er gebeten wird, die Kontrolle über 
CLK wieder an den µC zurückzugeben.

Eigentlich ist die Darstellung in Fig.17 sehr gut gelungen: Durch die 
unterschiedlichen Farben kann man sehr gut erkennen, daß zwischen 
Zeitpunkt c und d beide Geräte die CLK-Leitung treiben.

Gruß,
Markus_8051

Autor: Markus 8051 (markus_8051)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was: Wenn Du nicht CLK und DIN gleichzeitig schalten kannst (z.B. 
weil sie auf verschiedenen Ports liegen) kannst Du auch gefahrlos 
zwischen Zeitpunkt c und d die CLK-Leitung auf High legen, sie wird dann 
ja schon vom Reader-IC auf low gehalten.

Das Zurücknehmen der Kontrolle über CLK geschieht ähnlich, ist etwas 
weiter unten beschrieben und mit TRAN2 bezeichnet.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Markus, ich hab es jetzt so gemacht, und es funktioniert.
Danke

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.