EDAboard.com | EDAboard.de | EDAboard.co.uk | EE World

Wie "Open Collector" gegen "Fehlfunktion" absichern?

NEUES THEMA

elektroda.net NewsGroups Forum Index - Electronics DE - Wie "Open Collector" gegen "Fehlfunktion" absichern?

Goto page 1, 2, 3  Next

Manuel Reimer
Guest

Tue Feb 12, 2019 7:45 pm   



Hallo,

Ich möchte an eine vorhandene PS/2 Tastaturschnittstelle mit einem
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
für mein Projekt zugute kommt, da ich praktisch fast beliebig langsam
senden darf.

Hat jemand eine Idee wie man sowas gegen "Softwarefehler" absichern
kann? Entwickeln werde ich mit einem billigen PS/2 nach USB Adapter,
aber Fehler können ja auch nach dem Entwickeln noch passieren.

Wenn aus irgendeinem Grund (Programmierfehler, Falsches Programm
geflasht, ...) einer der "Open Collector"-Pins hart auf "High" gezogen
wird, dann schließt der Keyboard-Controller auf dem Mainboard diese
niederohmig zugeführte Spannung gegen GND kurz. Mit nicht abzusehenden
Folgen.

Wie würdet ihr dagegen absichern? Das einzige halbwegs einfache, das mir
eingefallen ist, wäre zu testen wie hoch ich einen Widerstand in der
Leitung machen kann, dass die Kommunikation noch funktioniert
(vielleicht gehen ein paar hundert Ohm). Im "Kurzschlussfall" würde der
dann den fließenden Strom begrenzen...

Beim Suchen bin ich auf I2C gekommen. Funktioniert ja "grob ähnlich".
https://www.reichelt.de/-p188897.html
Realistisch? Geht damit auch mein PS2? Nicht ganz billig aber doch
deutlich billiger als das Gerät, das ich "fernsteuern" wollte.

https://www.reichelt.de/-p70072.html
Günstiger, aber ich konnte nicht rausfinden wie der sich "offiziell"
verhält, wenn die RX-Leitung "hochgezogen" wird.

Gibt es eine "bessere" (aber nicht allzu aufwändige) externe Beschaltung
zur Absicherung gegen den Fall, dass mein Mikrocontroller eine
Datenleitung "hochzieht"?

Gruß

Manuel

Michael S.
Guest

Tue Feb 12, 2019 7:45 pm   



Am 12.02.2019 um 19:07 schrieb Manuel Reimer:

Quote:
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.

Dürfen nur die 0,7V "Restspannung" nicht stören. Bei einer Datenleitung
mit 5V "high" sollte aber 0,7V (hoffentlich) deutlich genug "low" sein.

Danke schonmal. Teste ich auf jeden Fall. Ich hole mir sicherheitshalber
Schottky-Dioden dafür um ein möglichst deutliches "Low"-Signal zu bekommen.


Oder halt nen echten Open-Kollektor mit einem externen Transistor. Es
gibt auch Typen mit integriertem Basis-Vorwiderstand, insbesondere als
Array.
Wäre die sauberste Lösung. Schottky-Dioden sollten aber auch gehen.

--
Michael

Michael S.
Guest

Tue Feb 12, 2019 7:45 pm   



Am 12.02.2019 um 18:45 schrieb Manuel Reimer:
Quote:
Hallo,

Ich möchte an eine vorhandene PS/2 Tastaturschnittstelle mit einem
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
für mein Projekt zugute kommt, da ich praktisch fast beliebig langsam
senden darf.

Hat jemand eine Idee wie man sowas gegen "Softwarefehler" absichern
kann? Entwickeln werde ich mit einem billigen PS/2 nach USB Adapter,
aber Fehler können ja auch nach dem Entwickeln noch passieren.

Wenn aus irgendeinem Grund (Programmierfehler, Falsches Programm
geflasht, ...) einer der "Open Collector"-Pins hart auf "High" gezogen
wird, dann schließt der Keyboard-Controller auf dem Mainboard diese
niederohmig zugeführte Spannung gegen GND kurz. Mit nicht abzusehenden
Folgen.

Wie würdet ihr dagegen absichern? Das einzige halbwegs einfache, das mir
eingefallen ist, wäre zu testen wie hoch ich einen Widerstand in der
Leitung machen kann, dass die Kommunikation noch funktioniert
(vielleicht gehen ein paar hundert Ohm). Im "Kurzschlussfall" würde der
dann den fließenden Strom begrenzen...

Beim Suchen bin ich auf I2C gekommen. Funktioniert ja "grob ähnlich".
https://www.reichelt.de/-p188897.html
Realistisch? Geht damit auch mein PS2? Nicht ganz billig aber doch
deutlich billiger als das Gerät, das ich "fernsteuern" wollte.

https://www.reichelt.de/-p70072.html
Günstiger, aber ich konnte nicht rausfinden wie der sich "offiziell"
verhält, wenn die RX-Leitung "hochgezogen" wird.

Gibt es eine "bessere" (aber nicht allzu aufwändige) externe Beschaltung
zur Absicherung gegen den Fall, dass mein Mikrocontroller eine
Datenleitung "hochzieht"?


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

--
Michael

Manuel Reimer
Guest

Tue Feb 12, 2019 7:45 pm   



On 2/12/19 6:58 PM, Newdo wrote:
Quote:
Eine Diode.
Der PullUp kommt an die Leitung zum PS/2-Eingang, wie vorgesehen.
Der uC zieht über eine Diode die Leitung bei Bedarf auf 0, ansonsten
bleibt die Diode nichtleitend.


Da muss ich nochmal etwas drüber nachdenken. Scheint mir aber logisch zu
sein und könnte tatsächlich funktionieren.

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.

Dürfen nur die 0,7V "Restspannung" nicht stören. Bei einer Datenleitung
mit 5V "high" sollte aber 0,7V (hoffentlich) deutlich genug "low" sein.

Danke schonmal. Teste ich auf jeden Fall. Ich hole mir sicherheitshalber
Schottky-Dioden dafür um ein möglichst deutliches "Low"-Signal zu bekommen.

Gruß

Manuel

Newdo
Guest

Tue Feb 12, 2019 7:45 pm   



Am 12.02.2019 um 18:45 schrieb Manuel Reimer:

Quote:
Gibt es eine "bessere" (aber nicht allzu aufwändige) externe Beschaltung
zur Absicherung gegen den Fall, dass mein Mikrocontroller eine
Datenleitung "hochzieht"?

Eine Diode.
Der PullUp kommt an die Leitung zum PS/2-Eingang, wie vorgesehen.
Der uC zieht über eine Diode die Leitung bei Bedarf auf 0, ansonsten
bleibt die Diode nichtleitend.

Hope it helps - Udo

Manuel Reimer
Guest

Tue Feb 12, 2019 7:45 pm   



On 2/12/19 6:49 PM, Gerrit Heitsch wrote:
Quote:
Open-Collector impliziert genau das, der Treiber tut entweder nichts
oder zieht die Leitung auf GND.


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.

Quote:
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.


Es geht nicht ums Können.

Zahlreiche Beispiele für Arduino zeigen, dass es mit den gängigen Atmels
geht.

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

Was mich stört, ist, dass eine Fehlkonfiguration der Ausgänge mein zu
steuerndes Gerät "schrotten" könnte.

Gruß

Manuel

Gerrit Heitsch
Guest

Tue Feb 12, 2019 7:45 pm   



On 2/12/19 6:45 PM, Manuel Reimer wrote:
Quote:

Wenn aus irgendeinem Grund (Programmierfehler, Falsches Programm
geflasht, ...) einer der "Open Collector"-Pins hart auf "High" gezogen
wird, dann schließt der Keyboard-Controller auf dem Mainboard diese
niederohmig zugeführte Spannung gegen GND kurz. Mit nicht abzusehenden
Folgen.


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

Gerrit Heitsch
Guest

Tue Feb 12, 2019 7:45 pm   



On 2/12/19 6:58 PM, Manuel Reimer wrote:
Quote:
On 2/12/19 6:49 PM, Gerrit Heitsch wrote:
Open-Collector impliziert genau das, der Treiber tut entweder nichts
oder zieht die Leitung auf GND.

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.


Macht nichts... Auch da rettet dich der 74LS06... Plus einem Pullup. Du
tust das, was schon beim C64 getan wurde, für 1 Bit benutzt man 2
Leitungen die jeweils via Hardware (der erwähnte 74LS06) auf Eingang und
Ausgang konfiguriert werden. Selbst wenn du dich verprogrammierst kann
nichts passieren, denn der Ausgangstreiber des '06 verträgt mehr Strom
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
am Arduino (anderes Bit als für Ausgang). Dazu noch ein Pullup nach +5V
damit trotz Open-Collector HIGH erkannt wird.

Vorteil des 74LS06, er enthält 6 Treiber in einem IC.

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

Was mich stört, ist, dass eine Fehlkonfiguration der Ausgänge mein zu
steuerndes Gerät "schrotten" könnte.


Nicht wenn wie oben aufgebaut.

Gerrit

Rafael Deliano
Guest

Tue Feb 12, 2019 8:45 pm   



Quote:
Ich möchte an eine vorhandene PS/2 Tastaturschnittstelle mit einem
Mikrocontroller eigene Tasten "simulieren".


Benötigte auch mal sowas,
aber damals mit Optokoppler:
http://www.embeddedFORTH.de/temp/ps2.pdf

MfG JRD

Axel Berger
Guest

Tue Feb 12, 2019 9:45 pm   



Manuel Reimer wrote:
Quote:
Hat jemand eine Idee wie man sowas gegen "Softwarefehler" absichern
kann?


Da es nicht schnell sein mu, geht alles. Ein Transitor mit echtem OC am
Ausgang, eine (Schottky-)Diode und vieles mehr.

--
/\ No | Dipl.-Ing. F. Axel Berger Tel: +49/ 221/ 7771 8067
\ / HTML | Roald-Amundsen-Strae 2a Fax: +49/ 221/ 7771 8069
X in | D-50829 Kln-Ossendorf http://berger-odenthal.de
/ \ Mail | -- No unannounced, large, binary attachments, please! --

Manuel Reimer
Guest

Tue Feb 12, 2019 10:45 pm   



On 2/12/19 8:16 PM, Rafael Deliano wrote:
Quote:
Benötigte auch mal sowas,
aber damals mit Optokoppler:
http://www.embeddedFORTH.de/temp/ps2.pdf


Interessant.

Leider habe ich noch keine besonders gute Doku über das Protokoll gefunden.

Senden ist kein Thema. Bedenken habe ich eher weil ich zwangsläufig
bidirektional kommunizieren muss. Einfach stur senden geht wohl laut
diverser Infos im Netz nicht gut.

Gruß

Manuel

Wolfgang Martens
Guest

Wed Feb 13, 2019 1:45 am   



Am 12.02.2019 um 18:58 schrieb Manuel Reimer:

Quote:
Open-Collector impliziert genau das, der Treiber tut entweder
nichts oder zieht die Leitung auf GND.

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.


Sie fürchten also, dass ein als Eingang konfigurierter Pin fälschlich
auf Ausgang umschaltet und versucht die Leitung auf 5V zu ziehen,
während diese auf GND gezogen ist.
Blick ins Datenblatt was dieser Port liefert. Schutzwiderstand vor den
Pin setzen, Mindestwert = Portstrom / 5V. Da der Port als Eingang
hochohmig ist, stören ein paar Kiloohm bei der langsamen Frequenz nicht.

mfG W.Martens

Frank Müller
Guest

Wed Feb 13, 2019 10:45 am   



Manuel Reimer schrieb:

Quote:
Wenn aus irgendeinem Grund (Programmierfehler, Falsches Programm geflasht,
...) einer der "Open Collector"-Pins hart auf "High" gezogen wird, dann
schließt der Keyboard-Controller auf dem Mainboard diese niederohmig
zugeführte Spannung gegen GND kurz. Mit nicht abzusehenden Folgen.


Dann hänge doch einfach eine Diode rein.

Frank

Joerg
Guest

Wed Feb 13, 2019 9:45 pm   



On 2019-02-12 16:27, Wolfgang Martens wrote:
Quote:
Am 12.02.2019 um 18:58 schrieb Manuel Reimer:

Open-Collector impliziert genau das, der Treiber tut entweder
nichts oder zieht die Leitung auf GND.

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.


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

<duck>

Quote:

Sie fürchten also, dass ein als Eingang konfigurierter Pin fälschlich
auf Ausgang umschaltet und versucht die Leitung auf 5V zu ziehen,
während diese auf GND gezogen ist.
Blick ins Datenblatt was dieser Port liefert. Schutzwiderstand vor den
Pin setzen, Mindestwert = Portstrom / 5V. Da der Port als Eingang
hochohmig ist, stören ein paar Kiloohm bei der langsamen Frequenz nicht.


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/

Michael Schwingen
Guest

Wed Feb 13, 2019 10:45 pm   



On 2019-02-13, Frank Müller <dw2fm_at_hotmail.com> wrote:
Quote:

Dann hänge doch einfach eine Diode rein.


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
(BSS138, 2N7002 o.ä.) oder ein OC-Gatter (74LS07, 74LS06).

cu
Michael

Goto page 1, 2, 3  Next

elektroda.net NewsGroups Forum Index - Electronics DE - Wie "Open Collector" gegen "Fehlfunktion" absichern?

NEUES THEMA

Arabic version Bulgarian version Catalan version Czech version Danish version German version Greek version English version Spanish version Finnish version French version Hindi version Croatian version Indonesian version Italian version Hebrew version Japanese version Korean version Lithuanian version Latvian version Dutch version Norwegian version Polish version Portuguese version Romanian version Russian version Slovak version Slovenian version Serbian version Swedish version Tagalog version Ukrainian version Vietnamese version Chinese version Turkish version
EDAboard.com
WTWHMEDIA