Hier ist Serielles Plug-and-Play im Spiel.
Auch die parallele Schnittstelle kennt Plug-and-Play (womit Windows Parallelport-Drucker erkennt), aber dies ist für den Mikrocontroller-Einsatz weniger interessant.
Sondern:
Es wird benötigt:
Während man RTS und CTS zweckmäßigerweise über die beiden „noch freien“ Pegelumsetzer eines MAX232 schickt, behilft man sich für DTR mit einem Vorwiderstand und einer Z-Diode. Unter Umständen verbindet man DTR mit RESET über eine Koppelkapazität. Beim MSP430 ist das sogar zweckmäßig, für den Bootloader.
Der Bereitschaftsmodus für das Senden der PnP-ID beginnt mit der L-H-Flanke von DTR. Nach 200 ms müsste RTS aktiv werden. Dann muss sofort die PnP-ID gesendet werden:
PnP-Start | 28 | "(" |
PnP-Revision | 01,24 | PnP-Version 1.0 (??) |
EISA-ID | 4D,44,43 | "MDC", 3-stellig, müsste beantragt werden! Kostet (in den USA) nichts. |
Produkt-ID | 30,32,38,38 | "0288", beliebig, 4-stellig, hexadezimal (Großbuchstaben) erlaubt |
Seriennummer | 5C,30,30,33,31,34,31,35,39 | "\\00314159" (beliebig, nur der Backslash muss am Anfang stehen) |
Geräteklasse | 5C,4D,4F,44,45,4D | "\\MODEM" (sollte, muss aber nicht zum class-Eintrag der INF-Datei passen) |
Geräte-ID | 5C,4D,44,43,30,31,34,34,2C,41,54,4D,30,30,39,36 | "\\MDC0144,ATM0096" (irgendetwas, unter Windows irrelevant) |
Anzeigetext | 5C,5A,49,50,20,32,38,38 | "\\ZIP 288" – Dies wird unter Windows angezeigt, bis die INF-Datei (s.u.) den String liefert |
Prüfsumme | 43,34 | "C4" Prüfsumme (modulo 256), alles inklusive PnP-Start und PnP-Ende, exklusive Prüfsumme selbst |
PnP-Ende | 29 | ")" |
Mit 1200 Baud, 7 Datenbits, keine Parität, 1 Stoppbit. Wenn man mit 2 Stoppbit sendet, ist man auf der sicheren Seite.
Danach kann der Mikrocontroller eine andere Baudrate benutzen.
Damit nicht ein hässliches Fragezeichen im Geräte-Manager stehen bleibt, benötigt man eine passende INF-Datei. Die Matching-ID zum o.g. Beispiel wäre SERENUM\MDC0288.
Eine passende minimalistische INF-Datei sieht so aus:
[Version] Signature="$Chicago$" Class=TMC ClassGuid={A9FDBB24-128A-11d5-9961-00108335E361} Provider=%hs% [ClassInstall32] AddReg=ClassAddReg [ClassAddReg] HKR,,,,%DevClassName% HKR,,Icon,,-5 [Manufacturer] %hs%=TMC,NTamd64 [TMC] %DESC%=Install,SERENUM\MDC0288 [ControlFlags] ExcludeFromSelect=* [Install.Services] AddService=,2 [Strings] DevClassName="Test and Measurement Devices" DESC="Simple Network Analyzer (AD9834 + AD8302, for Piezo measurement, PT-PIESA, TU Chemnitz)" hs="haftmann#software" [Strings.0407] DevClassName="Messgeräte" DESC="Einfacher Netzwerkanalysator (AD9834 + AD8302, Piezo-Messung, PT-PIESA, TU Chemnitz)"
Diese INF-Datei:
Die o.a. GUID ist von der IVI Foundation für USBTMC vorgeschlagen worden, allerdings ist die Beschränkung auf USB sowie die Verwendung des USB-Logos für derartige Geräte nicht sinnvoll sowie von Microsoft abgelehnt.
Somit steht das angeschlossene serielle Gerät fein säuberlich im Geräte-Manager.
Eine INF-Datei muss genau genommen noch via .CAT-Datei zertifiziert werden, damit diese sich ohne lästige Warnungen oder gar Verbote installieren lässt.
Ungelöst ist noch: