Forum: Mikrocontroller und Digitale Elektronik BeagleBone Black I2C und DS1621 - keinen Zugriff auf Register


von Shizzle (Gast)


Lesenswert?

Guten Abend,

ich arbeite an einem Projekt zur Steuerung und Reglung mithilfe eines 
Beaglebone Black Boards.
Es läuft unter Debian 3.8.13 mit einem BB-View Cape, nächter Schritt 
sollte die Kommunikation mit einem DS1621 sein.

Nun, nachdem ich den I2C1 des Boards wieder auf Pin P9_17 und P9_18 
gelegt habe, wollte ich es testen.

Über i2cdetect finde ich auf dem I2C1 meinen Sensor mit der Adresse 0x48
Will ich nun mit i2cdump -y 1 0x48 den Sensor lesen, erhalte ich eine 
Reihe "XX".

Eine TinyRTC arbeitet einwandfrei.

Ich habe den Sensor ebenfalls mit 2.6k Pullups angeschlossen, ohne 
erfolg.
Leider ist das mein Einstieg in Linux, ich bitte um etwas nachsicht 
falls es ein offensichtlicher Fehler sein sollte.

Ich hänge an dieser Stelle jetzt schon seit Stunden und habe google und 
co gefragt. Leider habe ich nicht wirklich etwas gefunden, da ich 
weitgehend Fälle finde wo der Teilnehmer garnicht erkannt wird, oder 
flasche Werte gelesen werden.

Für direkte Hilfe oder einen Anstoß in die richtige Richtung wäre ich 
sehr dankbar!

von Route_66 H. (route_66)


Lesenswert?

Hallo!
Der DS1621 hat als binäre Basisadresse:
bit7..............bit0
 1 0 0 1 A2 A1 A0 R/W
Das kommt also mit Deinem 0x48 nur dann hin, wenn man sich das 
Read-Write-Bit wegdenkt. und A0-A2 am Chip auf Low sind.

von Shizzle (Gast)


Lesenswert?

Guten Abend,

gut das ist soweit richtig, A0-A2 liegen auf GND.
___________________

root@beaglebone:~# i2cdetect -r 1
WARNING! This program can confuse your I2C bus, cause data loss and 
worse!
I will probe file /dev/i2c-1 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
____________________

Die Abfrage von 0x49 welcher nicht verbunden ist, erfolgt nahezu sofort:
____________________

root@beaglebone:~# i2cdump -y 1 0x49
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

____________________

Frage ich 0x48 ab, dauert es pro Byte ca. 1sek.
____________________

root@beaglebone:~# i2cdump -y 1 0x48
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX ^C

____________________

Also nehme ich an läuft dort schon etwas schief (Timeout, repeat, 
acknowledge)
Mir fehlt allerdings jeglicher Ansatz zur Lösung und/oder analyse des 
Fehlers da man im Netz mit Infos überflutet wird und nicht weiß was 
zutrifft.

Kann es mit den Treibern für den I2C zu tun haben? Ich finde einen 
Treiber für die DS1307, allerdings nichts für den Ds1621 - wobei dazu 
die Suche im Netz ebenfalls nur bedingt erfolgreich war.

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.