I2C Interface fuer Druckerschnittstelle


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


Wyszukiwarka