I2C BeginnerFrage

OP #4623106
Hallo Community,
ich starte derzeit mein erstes Projekt mit I2C. Jedoch habe ich ein 
Problem, dass mein Sensor nicht erkannt wird vom Raspberry PI. Jetzt 
wollte ich einfach in einer While Schleife im Abstand von 0.1ms das 
Acknowledge des Sensores überprüfen. Dass ich mit dem Oszilloskop messen 
kann ob der Sensor funktioniert. Der Sensor hat die Adresse 0x78. Leider 
finde ich im Internet nichts dazu, wie man dies realisieren kann, da das 
Problem wohl zu einfach ist. Ich arbeite mit der Programmiersprache C. 
Vielleicht hat ja hier jemand einen BeispielCode, den ich mir mal 
anschauen könnte. Schonmal danke im Vorraus.

MfG Julian
#4623117
Julian M. schrieb:
> Der Sensor hat die Adresse 0x78

da gehts schon los, die Adressenbetrachtung ist ziemlich individuell

der eine betrachtet nur die rechts geshifteten Bits 1-7, der andere nur 
die ungeschifteten Bits 1-7 ausgeklammert das R/W Bit

solange du nicht weisst welche Guckweise und in der Software vorliegt 
hilft dir die Angabe nix.

Aber am PI war mir so das der nur bis 0x75 in seiner LIB schaut, du 
müsstest die Adresse nach unten verschieben oder einen I2C Controller 
per SPI zwischenschalten

http://www.forum-raspberrypi.de/Thread-i2c-adresse-0x78-ansprechen
http://www.roboternetz.de/community/threads/46616-Problem-mit-I2C-Sensor-DRMOD-I2C-RVI
http://www.instructables.com/id/Raspberry-Pi-I2C-Python/

 on the Pi, and I was using his code ... larger flexible UI system I'm 
working on, which will allow i2c GPIO expander classes to be assigned to 
.... 0x62, 0x92, 0x92, 0x94, 0x78,


!!!!!!!!!!!

und keine 5V I2C an den PI
(Firma: Vescomp) #4623147
Amateur schrieb:
> Hat der auch wirklich die Adressen: 0111.1000 und 0111.1001?
> Oder sind es 1111.0000 und 1111.0001?

 0xF0 und 0xF1 sind es bestimmt nicht, es ist (wie allgemein üblich)
 die Adresse 0x78 gemeint.

 Damit du es auch zukünftig weisst:

 0b1111 0xxx ist für 10 bit adressierung reserviert...

 Und Adresse wird immer als 8 bit angegeben, aber bit 0 ist R/W
 bit, somit ist lesen immer auf ungeraden und schreiben immer auf
 geraden Adressen.
OP #4623157
Erstmal danke für die schnellen Antworten. Pullups habe ich hinzugefügt. 
Diese betragen 1,7kOhm wie vom Hersteller empfohlen. Wenn ich Durchmesse 
haben auch sda scl und vcc die richtige Spannung von 5V. Jetzt wollte 
ich testen ob wenn ich direkt etwas auf die Adresse 0x78 sende die 
Spannung bei SDA und SCL abfällt. Jedoch weiß ich leider nicht wie ich 
etwas auf eine Adresse senden kann. Da ich schauen will ob der Sensor 
überhaupt funktioniert.
(Firma: Vescomp) #4623166
A. K. schrieb:
> Marc V. schrieb:
>>  Und Adresse wird immer als 8 bit angegeben
>
> I2C-Libs halten es mal so mal so.

 Ja, aber im Prinzip ist es so:

 Adresse wird als 8 bit angegeben, davon sind die oberen 7 bit die
 tatsächliche Adresse und bit 0 ist R/W.

 Nun kamm irgendein Schlaukopf auf die Idee, da nur 7 bit gebraucht
 werden, warum auch nicht die Adresse als 7 bit darstellen ?
 Die oberen 7 bits prompt 1 Stelle nach rechts geschoben und
 rausposaunt, dass er jetzt etwas revolutinäres erfunden hat.

 Dass er dann beim lesen oder schreiben wieder nach links schieben
 muss, hat er in seinem Anfall von Genialität vergessen...

 Auch die anderen Genitalien aus demselben Verein haben das ohne
 viel nachzudenken übernommen und so geistert es heute noch unter
 uns...
#4623167
Julian M. schrieb:
> Pullups habe ich hinzugefügt.
> Diese betragen 1,7kOhm wie vom Hersteller empfohlen. Wenn ich Durchmesse
> haben auch sda scl und vcc die richtige Spannung von 5V

was hast du an:

Joachim B. schrieb:
> !!!!!!!!!!!
>
> und keine 5V I2C an den PI

nicht verstanden? der PI ist nicht 5V tolerant, ja man kannn den sogar 
an den Ports mit 5V killen, wenn das dein Ziel ist brauchen wir über 
dein I2C nicht mehr zu schreiben!
(Firma: Vescomp) #4623185
A. K. schrieb:
> Nicht dass du dauernd durchs falsche Fenster guckst.

 Ich glaube, dass er momentan an die Wand guckt und erst mal
 entdecken muss, wo die Fenster überhaupt sind.

Julian M. schrieb:
> Acknowledge des Sensores überprüfen. Dass ich mit dem Oszilloskop messen
> kann ob der Sensor funktioniert. Der Sensor hat die Adresse 0x78. Leider
> finde ich im Internet nichts dazu, wie man dies realisieren kann, da das
> Problem wohl zu einfach ist. Ich arbeite mit der Programmiersprache C.
OP #4623226
ja, ich benutze i2cdetect -a 1 um bis 0x7F alle zu sehen.
ich schaue durch das Fenster /dev/i2c-1.
Einen anderen Sensor der die Adresse 0x77 hat kann ich auch ohne 
Probleme auslesen, jedoch ist dies auch ein 3,3V Sensor. Wenn ich das 
nun richtig verstanden habe, kann ich also einen 5V Sensor gar nicht mit 
dem Raspberry Pi verwenden?
OP #4629101
Habe das Problem nun gelöst indem ich einen 3,3V Sensor genommen habe. 
:)  Habe mir aber den Thread zu den Pegelwandler durchgelesen, wenn ich 
es richtig verstanden habe könnte ich mithilfe eines 74hct125 einfach 
den 5V Sensor an einem Raspberry verwenden oder?

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.