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!
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
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.