80C51 Port als Eingang und Ausgang benutzen

Gast #423038
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 ?
Gast #423086
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.
#423292
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
#423299
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren