Verwenden von GPIO im PC

9

Ich habe ein einfaches Projekt auf einem Host-Gerät, das 2 Pins mit hohem Logikpegel (Spannung 3,3 V, 5 V oder 12 V - spielt keine Rolle) ansteuern und warten soll, bis 2 andere Pins vom Peripheriegerät auf einen hohen Pegel angesteuert werden.

Kann ich ein solches Host-Gerät mit einem Standard-PC implementieren und welche Hardware (integriert oder extra) sollte ich verwenden?

Andrey Pesoshin
quelle
2
Möchten Sie so etwas wie mccdaq.com kaufen ?
Kenny
1
Ich bin interessiert, vielleicht hat der PC bereits einige integrierte Funktionen (Controller, Pins) für meine Zwecke? Und wenn nicht - finden Sie eine Lösung zu kaufen (übrigens, danke für den Link!)
Andrey Pesoshin
1
Eine mögliche Lösung, die sowohl einfach als auch wirtschaftlich ist, wäre die Verwendung eines MSP430-Launchpads, das über USB mit dem PC verbunden ist und in einer Arduino-ähnlichen Softwareumgebung namens Energia für 4,30 USD einschließlich S / H (Fedex 2 Tage) programmiert ist. weltweit) oder sogar ein billigeres DIY-Board mit einem AVR (wie attiny85 mit bitbanged USB), der auf der PC-Seite in Arduino programmiert ist (wenn Sie möchten oder möchten).
icarus74

Antworten:

7

Es ist nicht klar, was der PC tun soll und was das Gerät tun soll ("Host-Gerät" macht keinen Sinn), aber es scheint, dass Sie grundlegende digitale E / A von einem PC wollen.

PCs sind nicht wirklich für die direkte digitale E / A an externe Geräte ausgelegt. Sie können jedoch digitale E / A-Module kaufen, die über USB mit dem PC verbunden sind und die es Ihnen ermöglichen, einzelne digitale Signale zu lesen und zu schreiben. Sie können dies am einfachsten selbst tun, indem Sie einen Mikrocontroller über einen COM-Anschluss mit dem PC kommunizieren lassen.

Wenn dies jedoch nur ein einfaches Steuerungsproblem ist, warum benötigen Sie überhaupt einen PC? Lassen Sie einen kleinen Mikrocontroller die ganze Aufgabe selbst erledigen. Genau dafür sind Mikronroller gedacht. Es handelt sich um kleine Computer mit digitalen und anderen E / A-Leitungen, die direkt an externe Hardware angeschlossen werden sollen.

Olin Lathrop
quelle
1
Wir haben keine vollständige Beschreibung der gewünschten Funktionalität, aber ich vermute, dass er ein duales SR-Flip-Flop benötigt. Was man mit einer 1 Milliarde Transistoren CPU emulieren kann :-).
Stevenvh
1
Danke für deine Antwort. Ich verstehe, dass es eine Vielzahl von Lösungen gibt, aber ich wollte auf jeden Fall nach der direkten Verbindung eines externen Geräts mit dem PC fragen. Jetzt sehe ich, dass ich es nicht direkt tun kann, sondern mit einem zusätzlichen Controller oder einer E / A-Karte.
Andrey Pesoshin
@stevenvh Ich habe die Beschreibung eines Projekts zum besseren Verständnis vereinfacht;) Ich muss nur den Schnittstellenteil klären
Andrey Pesoshin
13

Wenn Sie immer noch einen finden, ist es erwähnenswert, dass ein echter paralleler Anschluss einem GPIO ungefähr so ​​nahe kommt, wie Sie ihn in einem Standard-PC finden. Klassischen Implementierungen mangelt es an Flexibilität, da viele der Pins eine feste Richtung haben und einige invertiert sind, aber die Leute arbeiten seit Jahren daran.

Die größere Einschränkung besteht darin, dass solche Ports aussterben. Die abstrakteren Ersetzungen wie USB-Parallel-Konverter können normalerweise nur zur Steuerung der tatsächlichen Drucker verwendet werden, und es fehlen Register, die Sie direkt lesen / schreiben können, um den Pin-Status festzulegen oder zu überwachen. Es wurde gemunkelt, dass es einige gibt, die diese Fähigkeit haben, aber sie können schwer zu finden sein und erfordern detaillierte Aufmerksamkeit für die Fahrer.

An diesem Punkt wird es tendenziell praktischer, ein über USB angeschlossenes E / A-Gerät zu verwenden. Oft ist dies ein Mikrocontroller, auf dem eine einfache Firmware ausgeführt wird, entweder vom Hersteller oder vom Benutzer.

Ein Hauptvorteil einer benutzerdefinierten Implementierung ist die Möglichkeit, die niedrigsten, sich wiederholenden und / oder zeitkritischen Teile der E / A-Manipulation auf den Prozessor auf dem Gerät zu verlagern, anstatt zu versuchen, dies vom PC aus zu tun, wo die Latenz von USB-Paketierung, Durchqueren mehrerer Busse und Multitasking-Betriebssysteme führen dazu, dass Bit-für-Bit-Vorgänge schmerzhaft langsam werden.

Wenn Sie noch nicht genau herausgefunden haben, wie Ihre Lösung aussehen wird, besteht eine Möglichkeit darin, sich ein Arduino zu schnappen, das zur Vereinfachung sowohl im Hardware- als auch im Toolchain-Sinne verpackt ist und entweder als eigenständige Lösung oder als eigenständige Lösung betrieben werden kann als E / A-Helfer für Aufgaben auf niedriger Ebene unter Befehl eines angeschlossenen PCs.

Chris Stratton
quelle
2
Sollte OP die Route für parallele Ports wählen, ist zu beachten, dass für NT-basierte Betriebssysteme (dh alle Windows-Betriebssysteme, die im letzten Jahrzehnt veröffentlicht wurden) ein spezieller Kernel-Modus-Treiber erforderlich ist, um auf den parallelen Port zuzugreifen. Wenn Sie eine Windows-Version mit Code-Signaturrichtlinie für den Kernelmodus verwenden (z. B. Vista / W7 x64, möglicherweise sogar W7 x86), muss dieser Treiber auch digital signiert werden.
Ajs410
1
tolle Antwort, ich würde abstimmen, wenn ich könnte :-)
Andrey Pesoshin
1
@ ajs410 - Diese Anforderungen an die Codesignatur gelten wahrscheinlich auch für Treiber für andere Schnittstellen, z. B. USB. Der eine mögliche Endlauf kann darin bestehen, etwas zu verwenden, für das das Betriebssystem bereits den Treibercode bereitstellt, und alles, was benötigt wird, ist eine Konfigurations- / Informationsdatei, beispielsweise ein virtueller COM-Port. Das ist kein GPIO, aber es kann als Befehls- / Statuskanal verwendet werden, um mit einem Hilfsmikro mit GPIOs zu sprechen.
Chris Stratton
8

Ich würde empfehlen, einen FTDI FT232RL mit einem speziellen Treiber zu verwenden, der den Bitbang-Modus aktiviert . Diese Methode funktioniert auf praktisch allen PCs und ermöglicht einen angemessenen Latenzzugriff auf ein einfaches GPIO.
Es gibt viele FTDI-Chip-Breakout-Boards, aber ich persönlich benutze dieses .

David Perek
quelle
Danke für den Rat, es klingt eher nach einem Hack, sollte aber funktionieren. Ich fand ähnliche Lösung 8 CHANNEL USB GPIO MODULE
Andrey Pesoshin