I2C Temp-Sensor ansprechen

Gast #4653781
Lesenswert?
• ▲
▼
Hallo liebes Forum,

ich bin schon seit einiger Zeit mit der I2C-Kommunikation beschäftigt. 
Nun bräuchte ich eure Hilfe.

Ich habe im Internet nach einer Library gesucht und habe auch eine 
gefunden (siehe Anhang).
Ich will nämlich einen Sensor mit der Adresse 0x28 in Betrieb nehmen.

Die Bibliothek habe ich inkludiert und in der Main habe ich folgendes 
geschrieben:


I2C_HWini();
I2C_SWini();
I2C_ModuleStart();


result = I2C1_M_Poll(0x28);



Die Funktion I2C1_M_Poll(0x28) funktioniert (keine Fehlermeldung).

Aber in einer weiteren Funktion muss man insgesamt vier Werte übergeben:
 I2C1_M_Read(BYTE, BYTE, int, char *);

Das erste Byte steht für die Slave-Adresse. Das zweite Byte für die 
Sub-Adresse.
Ich weiß leider nicht, was in meinem Fall die Subadresse ist?

Ich hoffe ich habe es halbwegs erklären können...

Danke für eure Hilfe!
Angehängte Dateien:
Gast #4653816
Lesenswert?
• ▲
▼
Lukas schrieb:
> Ich habe im Internet nach einer Library gesucht und habe auch eine
> gefunden (siehe Anhang).

Das ist halt das Problem. Entweder man versteht I2C, daß übrigens das 
einfachste Protokoll ist, das ich kenne, und schreibt sich die paar 
Funktionen selber, oder versucht sich da freizukaufen mit einer fertigen 
Library. Dann muß man aber die Library verstehen und das kann 
unangenehmer sein als I2C selbst. Es gibt bessere Dokus für I2C als für 
irgendeine Library.

MfG Klaus
Gast #4653824
Lesenswert?
• ▲
▼
> ich bin schon seit einiger Zeit mit der I2C-Kommunikation beschäftigt.
> Nun bräuchte ich eure Hilfe

Du hast also ein Datenblatt gelesen und versucht es selber 
hinzubekommen?

> Ich habe im Internet nach einer Library gesucht und habe auch eine
> gefunden (siehe Anhang).

Ach so, ich verstehe. Du hast dich entschlossen dumm zu bleiben.


> Entweder man versteht I2C, daß übrigens das
> einfachste Protokoll ist, das ich kenne,

Naja nicht ganz. Ich kann schon verstehen das einer mal auf Probleme 
stoesst. Allerdings frage ich mich manchmal schon wie wir das frueher 
hinbekommen haben und das sogar ganz ohne Speichoszi.

Olaf
#4653887
Lesenswert?
• ▲
▼
Lukas schrieb:
> Ich weiß leider nicht, was in meinem Fall die Subadresse ist?

Ich verstehe die subadresse so:

Es gibt Bausteine mit festen oder programmierbaren Adressen. Vielleicht 
in deinem Fall so. Dann lass die Subadresse einfach bei 000.

Es gibt aber auch Bausteine (z.B. den Portexpander PCF 8570), die 
besitzen drei Adresseingänge. Je nachdem welcher Pin mit GND verbunden 
ist, ergibt sich so eine Subadresse.
So ist es möglich bis zu acht gleiche IC einzusetzen, weil man die IC 8x 
unterschiedlich verdrahten kann.

Mein Tip:
Ich verwende für i2c ganz gerne den bus-pirate 
(http://www.watterott.com/de/Bus-Pirate).
So kann ich den Baustein bequem über PC ausprobieren und verstehen, 
bevor ich ihn mit dem mikrocontroller einsetze.
#4653896
Lesenswert?
• ▲
▼
Du Subadresse ist das Register, das du auslesen möchtest. Im Falle eines 
Temperatursensors kann das z.B. ein Konfigurationsregister sein oder ein 
Datenregister mit den Temperaturwerten.

Die Registeradressen kannst du dem Datenblatt des Sensors entnehmen.

Du solltest dir aber im Klaren sein, dass du vor dem Lesevorgang einen 
Schreibvorgang machen musst (durchaus möglich, dass dieser in deiner 
Read-Fkt. implementiert ist). Damit beschreibst du den Lesepointer mit 
der Adresse, die du auslesen möchtest.

Würde dir aber auch davon abraten, irgendeine Bibliothek, die du nicht 
verstehtst zu benutzen. Damit kommst du vielleicht ans Ziel, weißt im 
Anschluss aber doch nicht, wie der Bus funktioniert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren