Wie "Open Collector" gegen "Fehlfunktion" absichern?

Hallo,

Mikrocontroller eigene Tasten "simulieren".

Beispiele und Infos gibt es im Internet zuhauf. Grob gesagt funktioniert die Schnittstelle so, dass beide Seiten die Datenleitungen (CLK und DATA) hochohmig auf +5V ziehen und zur Kommunikation wird die jeweilige Leitung auf GND gezogen. Dabei gibt die "Tastatur" den Takt vor, was mir

senden darf.

Hat jemand eine Idee wie man sowas gegen "Softwarefehler" absichern kann? Entwickeln werde ich mit einem billigen PS/2 nach USB Adapter,

Wenn aus irgendeinem Grund (Programmierfehler, Falsches Programm geflasht, ...) einer der "Open Collector"-Pins hart auf "High" gezogen

Folgen.

Leitung machen kann, dass die Kommunikation noch funktioniert

formatting link
Realistisch? Geht damit auch mein PS2? Nicht ganz billig aber doch

formatting link

zur Absicherung gegen den Fall, dass mein Mikrocontroller eine Datenleitung "hochzieht"?

Manuel

Reply to
Manuel Reimer
Loading thread data ...

Open-Collector impliziert genau das, der Treiber tut entweder nichts oder zieht die Leitung auf GND. Ist wie ein Transistor mit dem Emitter auf GND, und dem Collector als Ausgang mit der Basis als Eingang. Falls dein Microcontroller das nicht kann empfehle ich einen 74LS06 zwischen Controller und PS/2 auf den Leitungen die auf Ausgang geschaltet sind.

Gerrit

Reply to
Gerrit Heitsch

Und solange niemand die Leitung "niederohmig" hochzieht ist das auch garkein Problem.

Wogegen ich mich zumindest etwas absichern wollte, war der Fall, dass auf meinem Mikrocontroller durch Fehlprogrammierung einer der Daten-Pins als Ausgang konfiguriert und "High" geschaltet wird. Damit liegt 5V eben nicht mehr hochohmig sondern niederohmig auf der Datenleitung.

geht.

"Passiver" Modus (Lesen): DDR auf "Input" und Pullup einschalten "Runterziehen": *Erst* Ausgang auf "Low" und dann DDR auf "Output"

Manuel

Reply to
Manuel Reimer

Am 12.02.2019 um 18:45 schrieb Manuel Reimer:

Eine Diode. Der PullUp kommt an die Leitung zum PS/2-Eingang, wie vorgesehen.

bleibt die Diode nichtleitend.

Hope it helps - Udo

Reply to
Newdo

Durch die Diode kann ich, wenn ich meinen Pin auf Eingang schalte, auch nach wie vor in die Leitung "lesen" und wenn ich meinen Pin auf Ausgang schalte und "Low" ziehe, ziehe ich wie geplant die Datenleitung runter.

Versehentliches "Hochziehen" wird durch die Diode aber nie am Ausgang ankommen.

mit 5V "high" sollte aber 0,7V (hoffentlich) deutlich genug "low" sein.

Danke schonmal. Teste ich auf jeden Fall. Ich hole mir sicherheitshalber

Manuel

Reply to
Manuel Reimer

Am 12.02.2019 um 18:45 schrieb Manuel Reimer:

NPN-Transistor oder N-MOSFET Gibts auch als Array.

--
Michael
Reply to
Michael S.

Am 12.02.2019 um 19:07 schrieb Manuel Reimer:

Oder halt nen echten Open-Kollektor mit einem externen Transistor. Es gibt auch Typen mit integriertem Basis-Vorwiderstand, insbesondere als Array.

--
Michael
Reply to
Michael S.

Macht nichts... Auch da rettet dich der 74LS06... Plus einem Pullup. Du

Ausgang konfiguriert werden. Selbst wenn du dich verprogrammierst kann

als dein Arduino liefern kann. Im C64 muss er mit einem Pullup von 180 Ohm an +5V zurechtkommen was 27mA sind.

Ausgangsschaltung: Treiber des '06 mit Eingang am Arduino und Ausgang am PS/2-Signal

Eingangschaltung: Treiber des '06 mit Eingang am PS/2-Signal und Ausgang

damit trotz Open-Collector HIGH erkannt wird.

Nicht wenn wie oben aufgebaut.

Gerrit

Reply to
Gerrit Heitsch

aber damals mit Optokoppler:

formatting link

MfG JRD

Reply to
Rafael Deliano

m Ausgang, eine (Schottky-)Diode und vieles mehr.

--




/ \  Mail | -- No unannounced, large, binary attachments, please! --
Reply to
Axel Berger

Interessant.

bidirektional kommunizieren muss. Einfach stur senden geht wohl laut diverser Infos im Netz nicht gut.

Manuel

Reply to
Manuel Reimer

Am 12.02.2019 um 18:58 schrieb Manuel Reimer:

auf Ausgang umschaltet und versucht die Leitung auf 5V zu ziehen,

Blick ins Datenblatt was dieser Port liefert. Schutzwiderstand vor den Pin setzen, Mindestwert = Portstrom / 5V. Da der Port als Eingang

mfG W.Martens

Reply to
Wolfgang Martens

Manuel Reimer schrieb:

Frank

Reply to
Frank Müller

Absichern, macht das nicht bei Euch die Allianz? Oder ein Rauchmelder?

So macht man das normalerweise. Sollte es woanders mal schneller laufen muessen, kann man diesen mit einem kleinen Kondensator bruecken, denn i.d.R. muss man bei Fehlprogrammierung eines Port Pins nur den DC-Fall absichern.

--
Gruesse, Joerg 

http://www.analogconsultants.com/
Reply to
Joerg

Die verschiebt Dir den Low-Pegel - kann noch gehen, reduziert aber die Reserven.

Wenn es eh ein externes Bauteil braucht, dann eher ein NPN-Transistor, N-FET

cu Michael

Reply to
Michael Schwingen

Push-Pull umschaltet und aktiv high treibt.

also schlecht vorherzusehen - an einem PC geht es, an einem anderen nicht.

cu Michael

Reply to
Michael Schwingen

Am 12.02.19 um 18:45 schrieb Manuel Reimer:

Das geht auch. Aber beliebig weit kann man nicht gehen. Um wirklich

Dimension 1k vordringen. Das wird nichts.

Wenn Du externe Hardware willst, dann probiere es mit einem Transistor.

programmieren. Und schon dreht man sich im Kreis.

Die Billigversion ist eine Schottkydiode. Silizium kannst Du bei PS/2 vergessen.

kritisch.

Marcel

Reply to
Marcel Mueller

Michael Schwingen schrieb:

Das Teil arbeitet doch mit 5V da ist genug Reserve.

denn dann sollte schon noch ein Widerstand davor und das

Frank

Reply to
Frank Müller

muss Low > Wenn es eh ein externes Bauteil braucht, dann eher ein NPN-Transistor

Ist aber letztlich der "korrekte" Weg.

Reply to
Hergen Lehmann

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.