Forum: Mikrocontroller und Digitale Elektronik I2C Temp-Sensor ansprechen


von Lukas (Gast)


Angehängte Dateien:

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!

von Klaus (Gast)


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

von Olaf (Gast)


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

von Frank L. (frank_l)


Lesenswert?

Hallo,

wenn ich den Code einigermaßen verstanden habe, kannst Du die SubAdresse 
mit 0 übergeben. Das ganze ist wohl dazu gedacht EEproms auszulesen. 
Dann ist die SubAdresse die Adresse ab der das EEProm ausgelesen werden 
soll.

Gruß
Frank

P.S. ich gehe davon aus Du nutzt einen PIC?

von Frank G. (frank_g53)


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.

von Dominik B. (odysseus1710)


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.

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.