Полагаю, если читается, то микруха однозначно работает. Можно допустить смерть мемсов, но температура ведь тоже йок.. Так что имхо надо искать причину в кривизне (например, адресация в софтовом или хардовом смысле)
Да там запутаться-то в регистрах негде. К тому же я пробовал не только сам код писать, но и использовать чужие библиотеки. Что касается хардварной части... Если бы были проблемы с I2C, то ни записи, ни чтения бы не производилось. Остается сам модуль. Однако расположение и номиналы деталей на плате, правильное. Было подозрение на коротыш между ножками микросхемы, но после прогрева паяльником и отмывки спиртом ничего не поменялось.
Питание на чипе есть. Интересно. Пока тыкался мультиметром, случайно закоротил на модуле выводы GND и SCL. После этого, из регистров данных акселерометра считались значения отличные от нулей. Однако они в этих регистрах так и остались и больше не обновлялись.
Можно допустить смерть мемсов, но температура ведь тоже йок..
Так что имхо надо искать причину в кривизне (например, адресация в софтовом или хардовом смысле)
Reply
Что касается хардварной части... Если бы были проблемы с I2C, то ни записи, ни чтения бы не производилось.
Остается сам модуль. Однако расположение и номиналы деталей на плате, правильное. Было подозрение на коротыш между ножками микросхемы, но после прогрева паяльником и отмывки спиртом ничего не поменялось.
Reply
Reply
Интересно. Пока тыкался мультиметром, случайно закоротил на модуле выводы GND и SCL. После этого, из регистров данных акселерометра считались значения отличные от нулей. Однако они в этих регистрах так и остались и больше не обновлялись.
Reply
кста, тут вот как лечили:
Finally! Initially I was getting all zeros and after days of looking I realize that I have to take it out of sleep mode before reading data.
https://forums.electricimp.com/discussion/2838/mpu-6050-accelerometer-gyro
Reply
I find the solution!
I use this...
MPU6050Write(&sMPU6050, MPU6050_O_PWR_MGMT_1, 0 , 1, MPU6050Callback, &sMPU6050);
I must use this...
INT8U temp = 0;
MPU6050Write(&sMPU6050, MPU6050_O_PWR_MGMT_1, &temp , 1, MPU6050Callback, &sMPU6050);
...because the function's data parameter must be pointer. :)
http://e2e.ti.com/support/microcontrollers/tiva_arm/f/908/p/387826/1374024
Reply
Ну и до кучи, тож мож сгодится:
You MUST switch to the 6DOF algorhytm for best performance. I have no idea what might happen the 9DOF algorhytm is used with X, Y, and Z magnentic readings remaining all zeros.
http://forums.parallax.com/showthread.php/146167-MPU-6050-Gyro-Accelerometer
Reply
Сегодня прикрутил другую софтовую библиотеку и получил сырые данные. Есть вероятность того, что жизнь налаживается)))
Reply
Leave a comment