mplata 9 23 мая, 2021 Опубликовано 23 мая, 2021 · Жалоба Опять из дома и не по работе. Собрал mpu-6050 (GY-521) + avr Mega2560. Подружил их (то есть получаю ответ WHO_AM_I) могу писать в регистры и затем читать оттуда данные, но к сожалению по осям акселерометра, гироскопа и температуры читаю нули. Уже не знаю куда копать, казалось бы простая задача, но не получается, перерыл документацию, перечитал форумы, пробовал примерять чужие алгоритмы инициализации - бесполезно. Скачал стек памяти MPU-6050: 000001 00:23:15.952 F9 03 85 02 4E 31 FC 28 00 77 02 B8 28 50 4E B7 щ.….N1ь(.w.ё(PN· 000002 00:23:15.952 D6 00 00 00 00 00 00 00 00 07 00 18 00 00 00 00 Ц............... 000003 00:23:16.681 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000004 00:23:16.681 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 ................ 000005 00:23:17.410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000006 00:23:17.410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000007 00:23:18.138 00 00 00 00 00 00 00 00 00 00 00 02 00 00 0F 77 ...............w 000008 00:23:18.138 00 00 00 00 00 68 00 00 00 00 00 00 00 00 00 00 .....h.......... Как видно 68 считывается. И устройство не в режиме сна. Но нужных данных нет ( Может кто сталкивался? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 24 мая, 2021 Опубликовано 24 мая, 2021 · Жалоба попробуйте ему послать несколько команд перед чтением данных с него. в частности записать нужные значения в регистры 0x6B, 0x1A,0x19,0x1B,0x1C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mplata 9 24 мая, 2021 Опубликовано 24 мая, 2021 · Жалоба mpu6050_writeByte(MPU6050_RA_PWR_MGMT_1, 0x01); mpu6050_writeByte(MPU6050_RA_CONFIG, 0x00); mpu6050_writeByte(MPU6050_RA_SMPLRT_DIV, 0x07); // 200 Hz mpu6050_writeByte(MPU6050_RA_GYRO_CONFIG, 0x18); mpu6050_writeByte(MPU6050_RA_ACCEL_CONFIG,00); Вот такая настройка у меня указанных вами регистров. После чего я пробую прочитать значения и получаю все регистры как указано выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 25 мая, 2021 Опубликовано 25 мая, 2021 · Жалоба быть может режим/обмен I2C не соблюдается до конца? быть может адрес не тот используется? хотя по дампу видно что он отдал данные.. вот с таким DEFAULT ADDRESS он у меня в свое время отвечал и корректно работал // MPU6050 7-bit adress = 0x68, 8-bit adress = 0xD0; #define MPU6050_ADDRESS_AD0_LOW 0x68 #define MPU6050_ADDRESS_AD0_HIGH 0x69 #define MPU6050_ADDRESS_DEFAULT (MPU6050_ADDRESS_AD0_LOW << 1) могу кинуть свои исходники. в свое время пока не перешел на другой датчик - успешно работали. там С но только под STM32. процессоро зависимый кусок там получается при работе с I2C Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mplata 9 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба В итоге я нашел процедуру обмена, которая заработала. Почему не работала моя не знаю, но видимо и не узнаю ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться