Easyelectronics.ru

Электроника для всех
Текущее время: 11 апр 2021, 00:33

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: DMP в MPU 9150/6050
СообщениеДобавлено: 19 сен 2013, 23:44 
Заглядывает иногда

Зарегистрирован: 04 мар 2013, 03:25
Сообщения: 61
В датчиках MPU 9150/6050 есть такая полезная фича как DMP, которая обрабатывает сырые данные с датчиков, и выводит результат в виде кватернионов или углов эйлера. Но фича не документированная.

Есть ардуиновый код https://github.com/Pansenti/MPU9150Lib/tree/master/libraries/MotionDriver, например. Но там я никак не могу разобраться. Инициализация скорее похожа на магию скорее.

Соответственно, кто знает, есть ли более-менее подробное описание этой фичи?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 01:05 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
tanshihaj писал(а):
В датчиках MPU 9150/6050 есть такая полезная фича как DMP, которая обрабатывает сырые данные с датчиков, и выводит результат в виде кватернионов или углов эйлера. Но фича не документированная.
... ...
Инициализация скорее похожа на магию скорее.
Это не магия, а закрытый код. Всё firmware для функции DMP грузится в чип как бинарный образ размером 3 Кбайт. В расшифрованном виде это firmware вряд ли где есть.
Зато ВСЁ остальное - хороший понятный код, функции очень компактные и интуитивно понятные. Уж точно без магии :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 01:50 
Заглядывает иногда

Зарегистрирован: 04 мар 2013, 03:25
Сообщения: 61
Хорошо. Тогда лучше задавать конкретные вопросы.
В функции инициализации dmp есть такой кусок кода:
// get MPU hardware revision

setMemoryBank(0x10, true, true);
setMemoryStartAddress(0x06);
uint8_t hwRevision = readMemoryByte();
setMemoryBank(0, false, false);

Что за memory bank? За что он отвечает?

Что делает этот кусок кода в целом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 01:52 
Заглядывает иногда

Зарегистрирован: 04 мар 2013, 03:25
Сообщения: 61
// check OTP bank valid
uint8_t otpValid = getOTPBankValid();

Что за OTP bank? Как это расшифровать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 02:00 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
tanshihaj писал(а):
В функции инициализации dmp есть такой кусок кода:
// get MPU hardware revision

setMemoryBank(0x10, true, true);
setMemoryStartAddress(0x06);
uint8_t hwRevision = readMemoryByte();
setMemoryBank(0, false, false);

Что за memory bank? За что он отвечает?

Что делает этот кусок кода в целом?
Найдите в проекте саму функцию setMemoryBank() и посмотрите её. Если смотреть только на место вызова функции, то этак дооолго можно думать :-)

А кусок кода этот - считывает ID-шник с определённого (производителем MPU) смещения во внутренней памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 02:03 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
tanshihaj писал(а):
// check OTP bank valid
uint8_t otpValid = getOTPBankValid();

Что за OTP bank? Как это расшифровать?
One Time Programming. Блок программируемой памяти, в которую зашиты калибровочные параметры и прочие данные, индивидуальные для каждого экземпляра MPU. Прошивают на фабрике. Вы потом уже не можете перепрошить другие значения. Это и есть OTP.

Данный кусочек кода, очевидно, проверяет OTP на валидность (там может быть прошита контрольная сумма содержимого OTP, что и позволяет сделать такую проверку).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 02:17 
Заглядывает иногда

Зарегистрирован: 04 мар 2013, 03:25
Сообщения: 61
AlexPM писал(а):
tanshihaj писал(а):
В функции инициализации dmp есть такой кусок кода:
// get MPU hardware revision

setMemoryBank(0x10, true, true);
setMemoryStartAddress(0x06);
uint8_t hwRevision = readMemoryByte();
setMemoryBank(0, false, false);

Что за memory bank? За что он отвечает?

Что делает этот кусок кода в целом?
Найдите в проекте саму функцию setMemoryBank() и посмотрите её. Если смотреть только на место вызова функции, то этак дооолго можно думать :-)

А кусок кода этот - считывает ID-шник с определённого (производителем MPU) смещения во внутренней памяти.


Её код я смотрел - там идёт запись (0x10 | 0x1F | 0x20 | 0x40) в недокуметированный регистр MPU6050_RA_BANK_SEL (0x6D)
Так что за MemoryBank? Просто полезная информация о продукте?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 02:18 
Заглядывает иногда

Зарегистрирован: 04 мар 2013, 03:25
Сообщения: 61
AlexPM писал(а):
tanshihaj писал(а):
// check OTP bank valid
uint8_t otpValid = getOTPBankValid();

Что за OTP bank? Как это расшифровать?
One Time Programming. Блок программируемой памяти, в которую зашиты калибровочные параметры и прочие данные, индивидуальные для каждого экземпляра MPU. Прошивают на фабрике. Вы потом уже не можете перепрошить другие значения. Это и есть OTP.

Данный кусочек кода, очевидно, проверяет OTP на валидность (там может быть прошита контрольная сумма содержимого OTP, что и позволяет сделать такую проверку).

Спасибо большое. Понятно теперь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DMP в MPU 9150/6050
СообщениеДобавлено: 20 сен 2013, 02:22 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
tanshihaj писал(а):
Её код я смотрел - там идёт запись (0x10 | 0x1F | 0x20 | 0x40) в недокуметированный регистр MPU6050_RA_BANK_SEL (0x6D)
Так что за MemoryBank? Просто полезная информация о продукте?
Думаю, это оперативная память чипа. Внутренний RAM чипа.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB