I2C Temp-Sensor ansprechen

Gast #4653781
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
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
> 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
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?
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.
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.