Viele computerisierte Elektroniker nutzen den PC, um Schaltungen über ein I2C-Interface zu steuern. Mit einer kleinen Interface-Platine und speziellen Visual- BASIC-DLLs wird dies besonders einfach: Sämtliche I2C-Hardware läßt sich aus Visual BASIC unter Windows steuern. Entwurf von R. van Lier I2C-Interface für Druckerschnittstelle Einfach in VisualBasic zu programmieren Zeit, in der fast jeder kopiert werden. Wer unter Windows NT Computer Windows arbeitet, könnte die DLLs auch gebrau- gebraucht, ein wenig chen, stößt allerdings auf das Problem, antiquiert. daß NT dem Anwender keinen Raum gibt, um direkt zu Hardwareadressen zu schreiben. Doch auch dafür gibt es in Es geht auch Form des Programms TotalIO, das über anders das Internet verbreitet wird, eine Viele Programmierer Lösung. Interessierte finden es unter nutzen zur Zeit Visual www.ise.ufl.edu/esi4161/files/dir/ect_io/ BASIC, eine grafische Installiert man diesen Treiber, läßt sich Entwicklungsumge- die I/O-Hardware problemlos über die bung zur Program- Software steuern. mierung in BASIC unter Windows. Die Konzept Komplett wes en t l i ch s t e Beschränkung von Die DLLs unterstützen von Haus aus den Visual BASIC ist, daß PCF8591. Dieses IC umfaßt einen A/D- die Speicherplätze und einen D/A-Wandler und wird in vie- nicht direkt ange- len Applikationen eingesetzt. Im Bei- sprochen werden spielprogramm IIC.BAS (das zusammen können. Die Program- mit den Treibern auf der Diskette zu fin- Der Inter-IC-Bus, kurz I2C-Bus, ist ein von mierung von Registern in speziellen ICs den ist) wird gezeigt, wie über das Inter- Philips entwickeltes Interface, über das ist deshalb ausgeschlossen. Glückli- face dieses Projekts mit Hilfe von Visual ICs miteinander kommunizieren kön- cherweise gibt es eine Möglichkeit, das BASIC sowohl der PCF8591 (ADC und nen. Viele moderne Geräte wie Tuner, Problem zwar nicht zu lösen, aber DAC) als auch der PCF8582 (EEPROM) Fernsehgeräte oder Videorekorder nut- geschickt zu umschiffen. Dazu nutzt gesteuert werden kann. Diese Beispiele zen dieses Interface. Auch Mitglieder man eine besondere DLL. zeigen, wie leicht der Gebrauch des der großen Mikrocontroller-Familien Die DLLs, die wir hier vorstellen, erfüllen I2C-Interfaces ist. Der gewählte Ansatz unterstützen das Interface, dessen Pro- eine Anzahl bestimmter Funktionen wie besitzt nur eine Beschränkung: Es kann grammierung nicht allzu schwierig ist. Startkondition generieren nur ein Master, nämlich der PC, im Wird allerdings das I2C-Interface Stoppkondition generieren System eingesetzt werden. genutzt, um Hardware mit einem PC zu Ein Byte senden steuern, gestaltet sich die Programmie- Ein Byte empfangen Ein wenig Hardware rung ein wenig komplizierter. Schon Es gibt zwei Varianten der DLL. Die 16- häufig haben wir in Elektor beschrie- bit-Version IIC.DLL ist für Visual BASIC 3 Ausgangspunkt für das DLL-Modul ist ein ben, wie mit einer besonderen Inter- unter Windows 3.1x, die 32-bit-Variante spezielles I2C-Interface, das an der face-Karte Hardware angesteuert wer- IIC_32.dll für Visual BASIC 4 und höher Druckerschnittstelle angeschlossen wird. den kann. Die Software beschränkte unter Windows 95/98 geeignet. Diese In Bild 1 ist die kleine Schaltung zu sich dabei auf einfache Device-Treiber DLLs müssen in den Windows-System- sehen. An den Centronics-Port des PCs auf DOS-Ebene. Dies scheint in einer ordner respektive Windows/System32 werden fünf Puffer/Inverter eines 74LS05 X-10 - 3/99 Elektor EXTRA PC-PLUS wie die Bestückung) kein Problem sein. 5V Notfalls läßt sich die Schaltung auch R1 R2 R3 R4 R5 R6 auf einem Stückchen Lochraster auf- C1 ERROR bauen. 14 10µ 63V IC1 (990034)rg K1 7 19 1 IC1a 20 2 2 1 1 21 3 4 IC1b 22 4 23 5 1 IC1 = 74LS05 24 6 IC1c DLL-Funktionen 3 25 7 5 6 SCL 1 26 8 InitPCF8591 : PCF8591 initialisieren 27 9 ReadPCF8591 : Byte lesen von ADC IC1d 28 10 ReadbufPCF8591 : n Byte lesen von ADC 29 11 BUSY 8 9 1 WritePCF8591 : n Byte schreiben zum 30 12 P. EMPTY 31 13 DAC K2 3 4 IC1e 32 14 AUTO FEED StartCon : Startbedingung 33 15 11 10 SDA 2 5 1 generieren 34 16 RepStartCon : wiederholende 1 6 35 17 Startbedingung 36 18 IC1f generieren 13 14 Transmit : ein Byte senden 1 SCL SDA Receive : ein Byte empfangen TestFree : Test: Bus frei? SELECT 990034 - 11 TestConnected : Test: Interface und Netzteil Bild 1. Die Schaltung des I2C-Interfaces, das am Centronics-Port angeschlossen wird. angeschlossen? angeschlossen. Das I2C-Interface nutzt schlossen werden. die Eingänge ERROR und BUSY sowie Aufmerksame Leser dürften die Schal- Fehlermeldungen die Ausgänge PAPER EMPTY und AUTO tung wiedererkennen, wir haben sie mit FEED des Centronics-Ports. Diese vier marginalen Änderungen schon im 0 Error 0000 : No errors Anschlüsse sind notwendig, um die bei- Halbleiterheft 1993 publiziert. Die Pull- 1 Error 0001 : The IIC bus is not free den Steuersignale SCL und SDA für den up-Widerstände sind notwendig, da 2 Error 0002 : No acknowledge I2C-Bus zu erzeugen. Beide Signale sind Puffer und I2C-Treiber eine Open- received auf einem kombinierten Ein/Ausgang zu collector-Struktur aufweisen. Sind R5 3 Error 0003 : Could not generate a finden, da die Busleitungen bidirektio- und R6 die einzigen Pull-up-Wider- stop condition nal sind. An Verbinder K2 liegen zusätz- stände auf der I2C-Seite, sollte man 4 Error 0004 : The IIC interface has lich zu den Busleitungen die Versor- ihren Wert auf 3,3 k&! verringern. no power supply gungsspannung von +5 V sowie Das Platinenlayout samt Bestückungs- 5 Error 0005 : The IIC interface has Masse. Eine Applikation kann über ein plan ist in Bild 2 zu sehen. Die Platine ist not been connected Kabel mit einem kompakten Mini-DIN- nicht beim Verlag erhältlich, muß also 6 Error 0006 : Some undefined error Stecker einfach am Interface ange- selbst geätzt werden. Das sollte (genau occurred Bild 2. Die Platine des Interfaces ist kaum größer als die Centronics-Buchse. K1 Stückliste R3 Widerstände: R4 R1...R6 = 10 k R5 Kondensator: C1 = 10 µ/63 V Halbleiter: IC1 = 74LS05 990034-1 Außerdem: R2 C1 K1 = Centronics-Buchse für Platinenmontage, gewinkelt K2 = 6polige Mini-DIN-Buchse für Platinenmontage, gewinkelt SCL SDA + PC1...PC4 = Lötnägel 990034-1 K2 (C) ELEKTOR Software (Disk) EPS 996004-1 (DLLs und Beispiel) PC-PLUS Elektor EXTRA X-11 - 3/99 10k 10k 10k 10k 10k 10k R1 IC1 R6 T 990034-1 (C) ELEKTOR