Forum: Mikrocontroller und Digitale Elektronik ADS111x Adressierung


von Matt S. (matze_93)


Lesenswert?

Hallo zusammen

Ich habe ein kleines Verständnisproblem mit der Adressierung des 
ADS1115.
Ich verwende den Chip auf mehreren Platinen einmal auf einer "Analog In 
Out" Platine und einmal auf diesen blauen Breakout-Boards, gekauft bei 
Aliexpress. 
(https://de.aliexpress.com/item/1005006074781549.html?spm=a2g0o.order_list.order_list_main.40.7e795c5foksGKh&gatewayAdapt=glo2deu)

Auf der "Analog In Out" Platine ist die Adresse 0x92. Das passt meiner 
Erkenntnis nach auch mit dem Datenblatt überein. Datenblatt S. 20, 
Tabelle 7-2.
Das Breakout Board liefert mir folgende Adressen:

ADDR = VCC -> ADDR = 73

ADDR = GND -> ADDR = 75

ADDR = SCL -> ADDR = 75 ???? sollte 72 sein ?!

ADDR = SDA -> ADDR = 74

Diese Adressen passen aber nicht zum Datenblatt aus der Revision Dec 
2024.
Ich habe einen Micropython Treiber gefunden: 
https://github.com/robert-hh/ads1x15
Welcher scheinbar auch den 0x7m Adressraum nutzt.

Ich habe auch schon google bemüht und bin auf einen dritten Adressraum 
gestoßen: https://forums.adafruit.com/viewtopic.php?t=198406
Den 'dritten' Adressraum kann ich auch noch nachvollziehen, wenn man von 
'hinten' anfängt zu zählen und das R/W-Bit ignoriert.
Also bspw. 1001000b könnte man interpretieren als "0b 0100 1000" = 0x48
Beim Scannen wird (meines Wissens nach) ein Read-Zugriff auf fast allen 
geraden Addressen getestet? also wäre oben genanntes Beispiel mit b = 0 
folgendes:
0b 1001 0000 = 0x90

Die 0x7m Adressen, welche ich von dem Breakout-Board bekomme verstehe 
ich nicht. Kann mir das bitte jemand näher bringen?
Die 7 im High-Nibble würden doch 0111 bedeuten ?!
Um Missverständnissen vorzubeugen, bei oben erwähnter "Analog In Out" 
(Addr. 0x92) Platine wird C verwendet. Die 0x7m Adressen werden mit 
Micropython (i2c.scan() Methode) ermittelt. Ich hoffe nicht, dass die 
Programmiersprachen sich diesbezüglich beißen? (Ich denke eher nicht, 
aber der Vollständigkeit halber wollte ich es erwähnt haben)

Vielen Dank vorab.

von Thomas Z. (usbman)


Lesenswert?

Matt S. schrieb:
> Das Breakout Board liefert mir folgende Adressen:
>
> ADDR = VCC -> ADDR = 73
> ADDR = GND -> ADDR = 75
> ADDR = SCL -> ADDR = 75 ???? sollte 72 sein ?!
> ADDR = SDA -> ADDR = 74
> ....
I2C nicht verstanden der Probleme mit Hex und Dez

von Stephan S. (uxdx)


Lesenswert?

Kannst Du keine Wandlung von binär nach dezimal?
1
1001000b = 72
2
1001001b = 73
3
1001010b = 74
4
1001011b = 75

von Thomas Z. (usbman)


Lesenswert?

Matt S. schrieb:
> Beim Scannen wird (meines Wissens nach) ein Read-Zugriff auf fast allen
> geraden Addressen getestet?

falsch! Es ist ein Schreibzugriff auf jede mögliche 7Bit Adresse.

von Rainer W. (rawi)


Lesenswert?

Matt S. schrieb:
> Also bspw. 1001000b könnte man interpretieren als "0b 0100 1000" = 0x48
> Beim Scannen wird (meines Wissens nach) ein Read-Zugriff auf fast allen
> geraden Addressen getestet?

Laut I2C-Spezifikation gibt es gerade und ungerade Adressen mit jeweils 
7 Bit.
Das R/W-Bit legt die Datenrichtung fest. Alles andere ist nicht I2C.

An einem Haus hast du doch auch nicht zwei verschiedene Hausnummern 
stehen - eine für die Leute die rein gehen und eine andre für die, die 
heraus kommen, oder?

Je nachdem, mit welchem Pin man den Addr-Pin verbindet, kann man dem 
Chip eine von vier möglichen Adressen zuweisen (Tab. 7-2 im Datenblatt), 
so dass man bis zu vier ADS1115 parallel auf einem Bus betreiben kann.

von Matt S. (matze_93)


Lesenswert?

Ach verdammt, echt peinlich.
Ich hab überhaupt nicht daran gedacht, dass mir die Adressen nicht als 
Hex-Werte ausgegeben werden.

von Matt S. (matze_93)


Lesenswert?

In C lasse ich eine for-schleife durchlaufen und inkrementiere den 
Zähler um 2, eben wegen dem R/W-Bit.
Ja, ich sehe meinen groben Schnitzer ein..
Vielen Dank für die Hilfe.

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.