Hallo! Ich versuche von einem Mega328 (Master) Daten von einem Beschleunigungssensor MPU6050 (Slave) abzufragen. Die Adresse des MPU ist 0x68; mit dem Beschreiben des Registers 0x6B wird er aus dem Schlaf geweckt. Nun will ich das Register 0x3B auslesen, welches laut Register das high byte der Beschleunigungsmessung in x-Richtung beinhaltet (register name ACCEL_XOUT_H). Allerdings scheint beim Empfangen der Daten etwas schiefzulaufen, insbes. gibt mir meine Funktion I2CReceiveData() nichts zurück. Was läuft hier schief? Das Data-direction-bit für das auslesen des Registers setze ich mit:
1 | int SLA_R = DeviceAdress; |
2 | SLA_R |= (1 << 1); |
3 | I2CwriteData(SLA_R); //SLA+R |
An der Verdrahtung leigt es schonmal nicht: der code eines Kollegen (andere Sprache) läuft auf meiner hardware einwandfrei und liefert zudem die gewünschten Daten. Grüße CPL p.s. Ich hoffe mal den Quellcode kann man so lesen; Ansonsten hänge ich den nochmal direkt per code im Browser rein oder sehe zu wie ich den gescheit formatiert bekomme.