I2C Interface fuer Druckerschnittstelle

background image

Der Inter-IC-Bus, kurz I

2

C-Bus, ist ein von

Philips entwickeltes Interface, über das
ICs miteinander kommunizieren kön-
nen. Viele moderne Geräte wie Tuner,
Fernsehgeräte oder Videorekorder nut-
zen dieses Interface. Auch Mitglieder
der großen Mikrocontroller-Familien
unterstützen das Interface, dessen Pro-
grammierung nicht allzu schwierig ist.
Wird allerdings das I

2

C-Interface

genutzt, um Hardware mit einem PC zu
steuern, gestaltet sich die Programmie-
rung ein wenig komplizierter. Schon
häufig haben wir in Elektor beschrie-
ben, wie mit einer besonderen Inter-
face-Karte Hardware angesteuert wer-
den kann. Die Software beschränkte
sich dabei auf einfache Device-Treiber
auf DOS-Ebene. Dies scheint in einer

Zeit, in der fast jeder
Computer Windows
gebraucht, ein wenig
antiquiert.

Es geht auch
anders

Viele Programmierer
nutzen zur Zeit Visual
BASIC, eine grafische
Entwicklungsumge-
bung zur Program-
mierung in BASIC
unter Windows. Die
w e s e n t l i c h s t e
Beschränkung von
Visual BASIC ist, daß
die Speicherplätze
nicht direkt ange-
sprochen werden
können. Die Program-

mierung von Registern in speziellen ICs
ist deshalb ausgeschlossen. Glückli-
cherweise gibt es eine Möglichkeit, das
Problem zwar nicht zu lösen, aber
geschickt zu umschiffen. Dazu nutzt
man eine besondere DLL.
Die DLLs, die wir hier vorstellen, erfüllen
eine Anzahl bestimmter Funktionen wie
 Startkondition generieren

 Stoppkondition generieren

 Ein Byte senden

 Ein Byte empfangen
Es gibt zwei Varianten der DLL. Die 16-
bit-Version IIC.DLL ist für Visual BASIC 3
unter Windows 3.1x, die 32-bit-Variante
IIC_32.dll für Visual BASIC 4 und höher
unter Windows 95/98 geeignet. Diese
DLLs müssen in den Windows-System-
ordner respektive Windows/System32

kopiert werden. Wer unter Windows NT
arbeitet, könnte die DLLs auch gebrau-
chen, stößt allerdings auf das Problem,
daß NT dem Anwender keinen Raum
gibt, um direkt zu Hardwareadressen zu
schreiben. Doch auch dafür gibt es in
Form des Programms TotalIO, das über
das Internet verbreitet wird, eine
Lösung. Interessierte finden es unter
www.ise.ufl.edu/esi4161/files/dir/ect_io/
Installiert man diesen Treiber, läßt sich
die I/O-Hardware problemlos über die
Software steuern.

Konzept Komplett

Die DLLs unterstützen von Haus aus den
PCF8591. Dieses IC umfaßt einen A/D-
und einen D/A-Wandler und wird in vie-
len Applikationen eingesetzt. Im Bei-
spielprogramm IIC.BAS (das zusammen
mit den Treibern auf der Diskette zu fin-
den ist) wird gezeigt, wie über das Inter-
face dieses Projekts mit Hilfe von Visual
BASIC sowohl der PCF8591 (ADC und
DAC) als auch der PCF8582 (EEPROM)
gesteuert werden kann. Diese Beispiele
zeigen, wie leicht der Gebrauch des
I

2

C-Interfaces ist. Der gewählte Ansatz

besitzt nur eine Beschränkung: Es kann
nur ein Master, nämlich der PC, im
System eingesetzt werden.

Ein wenig Hardware

Ausgangspunkt für das DLL-Modul ist ein
spezielles I

2

C-Interface, das an der

Druckerschnittstelle angeschlossen wird.
In Bild 1 ist die kleine Schaltung zu
sehen. An den Centronics-Port des PCs
werden fünf Puffer/Inverter eines 74LS05

X-10 - 3/99 Elektor

EXTRA

———————————————————— PC-P

LUS

Viele computerisierte Elektroniker nutzen den PC, um
Schaltungen über ein I

2

C-Interface zu steuern. Mit

einer kleinen Interface-Platine und speziellen Visual-
BASIC-DLLs wird dies besonders einfach: Sämtliche
I

2

C-Hardware läßt sich aus Visual BASIC unter

Windows steuern.

Entwurf von R. van Lier

I

2

C-Interface für

Druckerschnittstelle

Einfach in VisualBasic zu programmieren

background image

angeschlossen. Das I

2

C-Interface nutzt

die Eingänge ERROR und BUSY sowie
die Ausgänge PAPER EMPTY und AUTO
FEED des Centronics-Ports. Diese vier
Anschlüsse sind notwendig, um die bei-
den Steuersignale SCL und SDA für den
I

2

C-Bus zu erzeugen. Beide Signale sind

auf einem kombinierten Ein/Ausgang zu
finden, da die Busleitungen bidirektio-
nal sind. An Verbinder K2 liegen zusätz-
lich zu den Busleitungen die Versor-
gungsspannung von +5 V sowie
Masse. Eine Applikation kann über ein
Kabel mit einem kompakten Mini-DIN-
Stecker einfach am Interface ange-

schlossen werden.
Aufmerksame Leser dürften die Schal-
tung wiedererkennen, wir haben sie mit
marginalen Änderungen schon im
Halbleiterheft 1993 publiziert. Die Pull-
up-Widerstände sind notwendig, da
Puffer und I

2

C-Treiber eine Open-

collector-Struktur aufweisen. Sind R5
und R6 die einzigen Pull-up-Wider-
stände auf der I

2

C-Seite, sollte man

ihren Wert auf 3,3 k

Ω verringern.

Das Platinenlayout samt Bestückungs-
plan ist in Bild 2 zu sehen. Die Platine ist
nicht beim Verlag erhältlich, muß also
selbst geätzt werden. Das sollte (genau

wie die Bestückung) kein Problem sein.
Notfalls läßt sich die Schaltung auch
auf einem Stückchen Lochraster auf-
bauen.

(990034)rg

DLL-Funktionen

InitPCF8591

: PCF8591 initialisieren

ReadPCF8591

: Byte lesen von ADC

ReadbufPCF8591 : n Byte lesen von ADC
WritePCF8591

: n Byte schreiben zum

DAC

StartCon

: Startbedingung

generieren

RepStartCon

: wiederholende

Startbedingung
generieren

Transmit

: ein Byte senden

Receive

: ein Byte empfangen

TestFree

: Test: Bus frei?

TestConnected

: Test: Interface und

Netzteil
angeschlossen?

Fehlermeldungen

0

Error 0000

: No errors

1

Error 0001

: The IIC bus is not free

2

Error 0002

: No acknowledge

received

3

Error 0003

: Could not generate a

stop condition

4

Error 0004

: The IIC interface has

no power supply

5

Error 0005

: The IIC interface has

not been connected

6

Error 0006

: Some undefined error

occurred

PC-P

LUS

———————————————————

Elektor

EXTRA

X-11 - 3/99

K1

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

1

2

3

4

5

6

7

8

9

K2

2

5

4

3

1

6

R1

10k

R2

10k

R3

10k

R4

10k

R5

10k

R6

10k

1

2

1

IC1a

9

8

1

IC1d

5

6

1

IC1c

11

10

1

IC1e

3

4

1

IC1b

ERROR

C1

10

µ

63V

13

14

1

IC1f

P. EMPTY

AUTO FEED

SELECT

BUSY

IC1

14

7

IC1 = 74LS05

SCL

SDA

SDA

SCL

5V

990034 - 11

Bild 1. Die Schaltung des I

2

C-Interfaces, das am Centronics-Port angeschlossen wird.

(C) ELEKTOR

990034-1

C1

IC1

K1

K2

R1

R2

R3

R4

R5

R6

SDA

SCL

+

T

990034-1

(C) ELEKTOR

990034-1

Bild 2. Die Platine des Interfaces ist kaum größer als die Centronics-Buchse.

Stückliste

Widerstände:
R1...R6 = 10 k

Kondensator:

C1 = 10

µ/63 V

Halbleiter:
IC1 = 74LS05

Außerdem:
K1 = Centronics-Buchse für

Platinenmontage, gewinkelt

K2 = 6polige Mini-DIN-Buchse für

Platinenmontage, gewinkelt

PC1...PC4 = Lötnägel
Software (Disk) EPS 996004-1 (DLLs und

Beispiel)


Wyszukiwarka

Podobne podstrony:
CAN Bus Interface fuer PC
I2C Interface am EPP
8bit IO Port ueber I2C Interface
Kompakte Displaysteuerung Zwei Chips fuer Drucker und LC Display
Mikrokontrolery STM32 Użycie interfejsu I2C, USART, SPI
i2c to keyboard interface
interfejs i2c
Galvanische Trennung fuer I2C Bus

więcej podobnych podstron