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


von Sven (Gast)


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 ?

von Rahul D. (rahul)


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?)

von Sven (Gast)


Lesenswert?

Das Datenblatt befindet sich unter


http://www.ti.com/rfid/docs/manuals/refmanuals/RI-R6C-001ArefGuide.pdf

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.

von Sven (Gast)


Lesenswert?

Sorry, es ist Seite 34.

von Joe (Gast)


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.

von Markus 8. (markus_8051)


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

von Markus 8. (markus_8051)


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.

von Sven (Gast)


Lesenswert?

Vielen Dank Markus, ich hab es jetzt so gemacht, und es funktioniert.
Danke

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.