Ich baue eine Z80-Maschine aus Komponenten, um zunächst über ein FTDI- USB-Kabel über Bit-Banged I/O mit einem PC zu sprechen, und ich habe wenig Ahnung, wie ich am besten vermeiden kann, die Z80-Platine über eine 5-V-Datenleitung mit Strom zu versorgen . Z80-to-PC-Daten funktionieren gut, umgekehrt sonst. Ich bin ein Neuling in diesem Bereich, mit einem Programmierhintergrund.
(Oben nicht gezeigt, ich musste auch einen hacky N4148 zwischen U1 und der Datenbusleitung hinzufügen.)
Das Problem tritt auf, wenn ich Bits auf der Z80-Maschine empfangen möchte, die vom PC gesendet werden:
Beim Herunterfahren des Z80-Geräts bleibt es von der 5-V-Datenleitung des PC halb mit Strom versorgt. Ich habe Stunden und viel Suchen damit verbracht, das zu verstehen. Der größte Teil des Internets scheint besorgt darüber zu sein, Raspi und Arduino sicher wieder mit Strom zu versorgen, aber es gab einige Funde:
Schuldiger: Dies scheint über mein U1-UND-Gatter zu geschehen: Das Datenblatt des SN74HC08N zeigt die absoluten Maximalwerte für den Eingangsstrom "Clamp" als (sollte nicht überschreiten) +/- 20 mA außerhalb des Spannungsbereichs 0 bis VCC, wobei VCC hier 0 ist ( ausschalten), was meiner Meinung nach bedeutet, dass es versehentlich von den Eingängen wieder mit Strom versorgt werden kann. Der Strom zum U1-AND-Eingang fließt also über die VCC-Leitung und versorgt die Platine mit Strom.
Korrekturen, die ich sehen kann / ausprobiert habe:
Setzen Sie einen zweiten N4148 oder besser auf den VCC des U1-UND-Gatters, um die Stromversorgung bei kleinen mA zu begrenzen. Versucht, versteckt/löst das Problem, aber ich kann mir nicht vorstellen, dass das richtig ist?
Verwenden Sie einen MOSFET/BJT, um zu versuchen, U1 nur von VCC anzusteuern und FTDI-Daten an Gate/Basis zu senden. Ich bin nicht geschickt genug, um zu wissen, ob dies korrekter ist als eine Diode.
Operationsverstärker plus MOSFET (wie in einer verwandten, aber unterschiedlichen Frage ) - Ich kann mitmachen, aber ist das wirklich der übliche Weg? Dies fühlt sich nicht wie ein Standardansatz für eine kleine 8-Bit-Maschine an, aber vielleicht irre ich mich total.
Opto-Isolation - das kommt bei Antworten, die ich sehen kann, häufig vor, aber mir ist nicht bekannt, ob dies die Standardpraxis für Ihr durchschnittliches Verbrauchergerät ist? War jeder gängige 8-Bit-RS-232-fähige Mikrocomputer wirklich optoisoliert? Schaltpläne, die ich gefunden habe, scheinen einfach den MAX232 oder ein gleichwertiges Gerät zu verwenden, aber ich kann nicht herausfinden, wie das hilft.
Wie vermeidet man das Ihrer Erfahrung nach beim Entwurf solcher Schaltungen?
Fügen Sie nur der Eingangssignalleitung einen Vorwiderstand von z. B. 10 K hinzu, der den Strom begrenzt, ohne das Signal zu sehr zu verlangsamen.
Nicht verwandt, aber Sie möchten möglicherweise einen 100K-Pullup hinzufügen, um einen bekannten Logikpegel herzustellen, wenn das FTDI-Kabel abgezogen wird.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Es gibt bestimmte Logikchips, die nicht über die gleiche Art von internem Schutznetzwerk verfügen und auch im stromlosen Zustand direkt an eine Eingangsspannung angeschlossen werden können, aber dies ist hier nicht erforderlich.
Ein anderer Ansatz besteht darin, einfach einen BJT mit einem 10K-Basiswiderstand einzufügen, der das Signal invertiert. Wenn Sie einen 1N4148 von der Basis zum Emitter legen, kann er großen Transienten oder ESD am Eingang standhalten, ohne etwas zu braten.
Senden Sie ein BREAK- Signal auf der asynchronen Schnittstelle vom PC, um den Z80 zurückzusetzen, dies setzt die TX-Daten auf Leerlauf, was 0 V auf einer TTL-Pegel-Schnittstelle sein wird.
Einige PC-Kommunikationssoftware, einige USARTS und einige USB-zu-ASYNCH-Konverter sind nicht in der Lage, den BREAK-Zustand dauerhaft aufrechtzuerhalten, können jedoch normalerweise einen langen (viele Zeichenlängen) Impuls verursachen, und dies sollte ausreichen, damit Ihre Schaltung zurückgesetzt wird.
CL.
El Zorko