Adresse von cmps10 0xC0 zu groß ?

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
funmca
Beiträge: 102
Registriert: 03 Jan 2013, 18:54
Wohnort: Hannover
Kontaktdaten:

Adresse von cmps10 0xC0 zu groß ?

Beitrag von funmca » 09 Jan 2013, 21:18

Hallo zusammen,

ich habe jetzt noch eine Frage zur Adressierung unter I2C.

der Kompass CMPS10 hat werksseitig die Adresse 0xC0, er funktioniert auch mit dem TX Controller und Robo Pro. Er hängt jetzt alleine am I2C Bus, wird aber mit 0x60 angesteuert.

Ich denke aber mal, wenn ich mal weitere I2C Geräte anschliessen möchte, müsste ich die korrekte Adresse ansteuern. Gebe ich aber die echte Adresse ein ,
kommt folgender Hinweis:
Bild

Ich denke mal er wird nur deswegen erkannt, weil er alleine am I2C Bus hängt. Es scheint im Kompass aber nur die Adresse 0x C0 bis CE zu geben.
http://www.robot-electronics.co.uk/htm/cmps10i2c.htm

Was soll ich also tun, wenn ich ihn direkt ansteuern möchte?

Vielen Dank schon einmal !

Gruß Marco

To Rei: If you should read this, the default Address of the CMPS09 in the FT I2C Library is 0x60, which works. But now I have that device alone at the Bus. I am not able to set the sensor's default address 0xC0 in the Robo program, it says the biggest value can be 0x7F. Do you have any Idea what to do if I like to add more sensors to the EXT2? If I understand the documentary of devantech correctly the possible addresses can only be 0xC0 to 0xCE....
;-)

thkais
Beiträge: 384
Registriert: 31 Okt 2010, 21:45

Re: Adresse von cmps10 0xC0 zu groß ?

Beitrag von thkais » 10 Jan 2013, 07:09

Hallo,
das liegt daran, dass in den meisten Datenblättern das R/W-Bit in der Adresse mitgezählt wird, bei RoboPro aber nicht.
Das R/W-Bit ist Bit 0 (also LSB), wenn man sich die Werte mal binär anschaut, wird es klar:
0xC0 = 11000000
0x60 = 01100000
Dabei ist es unwesentlich, ob ein Gerät alleine am Bus hängt oder nicht - die richtige Adresse ist immer notwendig, um das Gerät anzusprechen.
Adresse 0xC2 im Datenblatt wird dann 0x61, 0xC4 zu 0x62 usw.

Also bei den Adressen überall das R/W-Bit weglassen, dann sollte es klappen ;-)
Gruß
Thomas

Benutzeravatar
Dirk Fox
ft:pedia-Herausgeber
Beiträge: 1845
Registriert: 01 Nov 2010, 00:49
Wohnort: Karlsruhe
Kontaktdaten:

Re: Adresse von cmps10 0xC0 zu groß ?

Beitrag von Dirk Fox » 10 Jan 2013, 09:28

Hallo Marco,

Thomas hat es schon geschrieben - die I²C-Adresse muss immer korrekt sein und ist sieben Bit lang, sie kann also maximal den Wert 127 (dezimal) = 0x7F (Hex) annehmen.
Im ersten gesendeten Byte steht in den sieben höchstwertigen Bits die Adresse, im niederstwertigen Bit der Read/Write-Befehl - und manchmal wird in den Datenblättern das Adress- und Befehlsbyte komplett angegeben (also in Deinem Fall 0xC0 bzw. 0xC1, obwohl die Adresse nur aus den ersten sieben Bit besteht, also 0x60 lautet).

Mehr Hintergründe findest Du auch in der ft:pedia 3/2012 (http://www.ftcommunity.de/ftpedia_ausga ... 2012-3.pdf), falls Du sie noch nicht gelesen hast...

Beste Grüße,
Dirk

funmca
Beiträge: 102
Registriert: 03 Jan 2013, 18:54
Wohnort: Hannover
Kontaktdaten:

Re: Adresse von cmps10 0xC0 zu groß ?

Beitrag von funmca » 10 Jan 2013, 12:04

Was für ein nettes Forum!! Vielen Dank für die Infos, schön dass sich alles so einfach auflöst.....
;-)

Antworten