Hallo,
also ich habe die Mpu 9150 SDK und habe bis jetzt mit der Api
gearbeitet. da mir diese aber die werte zulangsam liefert will ich davon
gerne ein bisschen weg.
ich habe allerdings 2 Funktionen die mir doch noch recht nützlich sein
könnten.
so jetzt hab ich mir das daten blatt vom dem Board angeguckt und
eigendlich, denke ich zumindest, alles gefunden was ich brauche. bis auf
diese slave address...
leider finde ich auch im i net nichts was mir hilf diese zu finden...
vielleicht könnt ihr mir da ja helfe...
hab hier jetzt schon paar sachen versucht aber bekomme ums Verrecken
keine Daten ausgegeben.
und jetzt wäre es schon mal gut zu wissen, ob es vielleicht daran liegt
das ich bei slave_addr einfach was falsches habe...
ps.: habe eigendlich extra was mit API genommen da ich in hardware
naheren sachen nicht so bewandert bin.
arg ja die pdf hatte ich noch nicht gesehn xD
wie doof
1
MPU-9150 I²C device address selection pin AD0.
2
When the pin value is low, the device address is 0x68.
3
When the pin value is high, the device address is 0x69.
irgendwie dacht ich, ich kann low und high gleichzeitig holen...
oder ist mit low und high garnicht die low byte und high byte gemeint
....
ps.: ich hab ja nicht das evb sondern diese sdk macht das denn nen
unterschied?
Jan L. schrieb:> oder ist mit low und high garnicht die low byte und high byte gemeint
Nein, überhaupt und gar nicht. Das ist ein einzelner Pin, mit dem Du
zwischen zwei Adressen umschalten kannst.
Das aber ist nur relevant, wenn das Ding im I2C-Slave-Modus betrieben
wird, also von einem anderen I2C-Master angesteuert wird.
Machst Du das? Oder willst Du irgendwelche I2C-Peripherie ansteuern?
also wenn du mit i2c periperie die Sensoren meinst die schon auf dem
Board sind, dann will ich die ansteuern...
brauch ich dann nur einen der beiden oder wie?
Jan L. schrieb:> also wenn du mit i2c periperie die Sensoren meinst die schon auf dem> Board sind, dann will ich die ansteuern...
Dann brauchst Du deren Adressen. Die musst Du Deiner Funktion als
slave_addr übergeben.
ahh mist jetzt bin ich ja so klug wie vorher XD
die haben zwar register adressen für z.b. 0x1C für Accel_Config aber das
ist ja nicht die slave adresse....
dann dürfte dein Funktionsaufruf etwa so aussehen:
1
uint8_tbuf[10];
2
3
msp430_i2c_read(0x68,0x1C,1,buf);
danach müsste in buf[0] der Wert aus dem Register 0x1C stehen.
Kann aber natürlich auch sein, dass die Funktion die Slave-Adresse
geshiftet erwartet sowie das "lese-bit"
oh ja, keine ahnung wann das * verschwunden ist.
ok das kann ich zumindest mal versuchen aber wie kommst du jetzt auf die
0x68?
also wahrscheinlich stimmt die da ich so was ähnliches schon mal in dem
forum vom hersteller gelesen hatte.
hier mal das zitat von dem post:
1
1. Reset MPU9150: write 0x80 to 0x6B (PWR_MGMT_1), address 0x68
2
2. Disable sleep: write 0x01 to 0x6B (PWR_MGMT_1), address 0x68
was mich an derAsache dann nur verwirrt hatte, war das er da unten dann
plötzlich auf 0x0C Schreibt. vielleicht liegt es auch nur daran das das
mag. anders funktioniert...
Jan L. schrieb:> oh ja, keine ahnung wann das * verschwunden ist.>> ok das kann ich zumindest mal versuchen aber wie kommst du jetzt auf die> 0x68?
hast du dir doch selbst schonmal beantwortet:
Jan L. schrieb:> arg ja die pdf hatte ich noch nicht gesehn xD> wie doof>>
1
> MPU-9150 I²C device address selection pin AD0.
2
> When the pin value is low, the device address is 0x68.
3
> When the pin value is high, the device address is 0x69.
Jan L. schrieb:> ahhh langsam wirds klarer mal sehn ob ich ad0 noch finde xD
Pin 24 an der Stiftleiste (bzw. Pin 9 am MPU), ist ja nicht so dass es
nicht im Manual des Eval Boards stehen würde
also ich starte die
I2C verbindung,
Resete mit dem Powermanagement,
setzte den Accel auf eine range von +-4g High Pass Filter aus
dann lese ich vom Accel
Was steht in ADDR?
Wie sieht die "msp430_i2c_read" aus?
Kannst du andere Register auslesen (z.B. Status oder so)?
Evtl. machst du auch den Start zu früh nach dem Reset.
Wie schon gesagt muss ADDR vielleicht um einen nach links geshiftet
werden