Forum: Mikrocontroller und Digitale Elektronik I2C Routine von Peter Fleury


von Peter W. (imidin)


Lesenswert?

Hallo,

ich komme mit den I2C Routinen von Peter Fleury irgendwie nicht zu 
Rande. Es befinden sich mehrere Dateien in der Zip. Ich möchte gerne die 
Funktionen nutzen um per I2C Bus einen Sensor anzusprechen (Lesen, 
Schreiben).
Leider weiß ich nicht welche Dateien davon zu nutzen sind. Ich habe 
jetzt die twimaster.c als sourcefile eingebunden und die i2cmaster.h als 
headerfile.

Mit denen möchte ich jetzt einen Feuchtesensor ansprechen.

von Hubert G. (hubertg)


Lesenswert?

Wenn du Hardware I2C verwendest, dann passt es, bei Software I2C ist 
auch noch die *.S Datei einzubinden.
Die Geräteadresse deines Sensor in der *.c Datei einstellen.
Was dein Sensor hören will musst du dem Datenblatt entnehmen.

von Peter W. (imidin)


Lesenswert?

Hubert G. schrieb:
> Die Geräteadresse deines Sensor in der *.c Datei einstellen.

In der twimaster.c soll ich die Adresse einstellen? Kannst du mir auch 
sagen wo dort? Ich hab bis jetzt meine F_CPU eingestellt. Das sind 1 
Mhz, da der ATmega8 auf internen Takt läuft.

Bei dem Sensor handelt sich um den HH10D von pollin. Die ChipSelect 
Adresse des EEPROM ist mit 0x01 angeben.

von Hubert G. (hubertg)


Lesenswert?

Die test_i2cmaster.c ist das Beispielprogramm, dort ist die Adresse 
einzustellen.
Oder in deiner Programmdatei die das main enthält.

von Achim M. (minifloat)


Lesenswert?

Peter Wolf schrieb:
> Die ChipSelect
> Adresse des EEPROM ist mit 0x01 angeben

Das kann so nicht sein. Adressen in IIC sind die  7 Bit beginnend beim 
MSB. Das LSB wird dazu verwendet, um Masterseitig mitzuteilen, ob eine 
Schreib- oder Leseoperation folgt.

Darüberhinaus sollte in jedem guten Datenblatt in einem 
Ablauf-/Fluss-Diagramm dargestellt sein, wie man was zu erledigen hat.

mfg mf

von Peter W. (imidin)


Lesenswert?

Mini Float schrieb:
> Das kann so nicht sein.

Im Datenblatt steht dies allerdings so. Zum Auslesen von Konstanten für 
die Berechnung brauche ich dann das MSB und LSB.

http://www.pollin.de/shop/downloads/D810120B.PDF

von ich (Gast)


Lesenswert?

Auf S.2 unter I2C-Interface steht:

EEPROM Lese-Zugriff: 0xA3
EEPROM Schreib-Zugriff: 0xA2

von Peter W. (imidin)


Lesenswert?

Genau, aber wozu brauch ich die Adresse des ChipSelects? Ich kann nicht 
so richtig erkennen, wie die Abfrageroutine ist. Es gibt dort zwar ein 
Beispielcode zu, den werd ich jetzt mal auseinander pflücken und 
wahrscheinlich scheitern :(

von ich (Gast)


Lesenswert?

Über den Schreibzugriff auf I2C-Ads 0xA2 wird die Adresse im EEPROM 0xA0 
gesetzt und dann folgen auf I2C-Ads 0xA3 die vier Lesezugriffe für die 
Koeffizienten. Anschließend wird mit I2C_Stop die I2C-Kommunikation 
beendet und das war's auf dem I2C.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.