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 ?
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?)
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.