Guten Tag,
Ich bin grad dabei den MPU6050 mit dem ATMega8 über I2C anzusteuern.
Mit I2C read funktioniert soweit alles und ich kann die Device ID
auslesen.
Allerdings funktioniert das schreiben der Register im Moment gar nicht.
Ich sende eine einen Start Befehl mit Write bit. Anschließend sende ich
die Registeradresse auf der ich schreiben will in diesem Fall die 0x19
und danach direkt mit einem Writebefehl das Byte welches ich
reinschreiben will. Nun wird das ganze durch eine Stopbedingung beendet.
Konnte mit dem UART auch noch etwas debuggen und habe festgestellt das
ich für die Write Befehle sogar ein ACK bekomme. Allerdings wird der
Wert im Register nicht geschrieben. Ich verwende die I2C Bibliothek von
Peter Fleury
Hat vielleicht jemand ein ähnliches Problem gehabt oder weiß wo mein
Fehler ist.
Die Funtkion sieht wie folgt aus:
1 | void mpu6050_SMPRT_DIV_W(char addr,char byte)
|
2 | {
|
3 | i2c_start_wait((addr<<1)+ I2C_WRITE);
|
4 | s=i2c_write(0x19);
|
5 | s=i2c_write(byte);
|
6 | i2c_stop();
|
7 | }
|
Danke schonmal im Vorraus
gruß Tobias