реклама на сайте
подробности

 
 
> гироскоп mpu6050 и i2c lockup- виснет i2c
Onkel
сообщение Jul 2 2016, 15:07
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



mpu6050 (6 осевой гироскоп) на гиростабилизированной платформе - все работает как часы, пока не подключен мотор. Когда подключен мотор - виснет i2c, может сразу, может через минуту, ну через 10 минут точно. Симптоматика - clk встает в 1, sda в 0, и так зависает или через некоторое время передает шум. Дело, видимо, в 6050 - инет полон жалоб на 6050 при любых контроллерах, от ардуино до эдисонов. Сижу гадаю - или забить на mpu6050 и взять что еще, но у 6050 бортовой вычислитель, что экономит кучу ресурсов мк, а других я такой фичи не видел. Какая- то наводка, это точно, при одних моторах виснет сразу, при других - через минуту, обвешивал кондерами как дикобраза, проверял перепроверял signal ground? делал даже полную опторазвязку, причем отдельные блоки питания для моторов и для мк с imu - все точно также.
Помогите кто чем может.

Вот хороший пример плача Ярославны, показатель что не я один такой :

I've tried two devices (though both from the same manufacturer/class of devices, MPU6050 and MPU9250), I've tried all the different I²C speed settings, I've tried running the polling loop at a lower frequency (slowing it down with usleep()), I've tried to not do any setup or self-testing or calibration and just getting the values, I've tried both I²C buses, I've tried a couple of different level converters... Not sure what else I can tell you; it's my experience that it doesn't really matter what you do or what steps are taken---the I²C bus will eventually freeze on 2.1, at least with the devices I've tried and polling in a loop the way I am.
I threw weeks of testing on this with a bunch of different software approaches (from as barebones as possible to thoroughly scanning the datasheets to configure each register that seemed relevant to optimise the chances of things working) and hardware wiring/configurations (hence the different level converters and plain resistive voltage dividers, two different IMUs that do the same thing, two different Edisons on two different mini breakout boards, different breadboards in case of dodgy internals to eventually soldering things thoroughly on prototype boards) and it just didn't matter. Turns out the problem was seemingly in the Edison kernel/drivers themselves. Ugh.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jul 3 2016, 09:26
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Onkel @ Jul 2 2016, 18:07) *
Симптоматика - clk встает в 1, sda в 0, и так зависает
Если я правильно понял описание, MPU6050 является I2C-slave. Состояние SCL=1, SDA=0 вполне законно для I2C, копайте программу вашего мастера - именно он должен продолжить дергать SCL.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016