11 Ekim 2015 Pazar

STM32F4 DISCOVERY MPU6050 DMP


Merhaba arkadaşlar, geçen yazımda MPU6050 raw acc ve gyro datalarını okumuştuk. Bu yazıyı okuyup daha detaylı bilgi elde edebilirsiniz. Burada bahsetmiştim raw dataları doğru okuyabiliyorum ama DMP de sorun olduğunu. Bu yazıda kullandığımız kodlar Jeff Rowberg' in Arduino için yazdığı kodlar. Bu kodlar chibiOS için C diline çevrilmiş. Bende kodları STM işlemciler için uyarladım ve şuan da doğru bir şekilde çalışıyor. Bu kodları da githuba attım buradan kodları çekip kullanabilirsiniz. Tabi ki burada bir teşekkür etmek beni mutlu eder:))

Kodları direk çevirince dmp initialize ederken kodlar takılıyordu. Neredeyse bu kodlar için 6 aydır uğraşıyorum ve sonunda hatayı buldum. Ayrıca şunu da belirteyim Jeff Rowberg'in kodlarının dmp kısmını STM de çalıştıran bir kod bulamadım. Yani bu kodlar STM için çalışan ilk dmp kodları olabilir. Yada sizin bildiğiniz başka kodlar varsa lütfen belirtin.

Peki hata nerede, dmp kodu initialize ederken "Setting motion detection threshold to 2..." işleminden önceki MPUgetFIFOBytes(fifoBuffer, fifoCount) satırında I2C takılıyor eğer bu satırı kaldırırsak kodlar doğru bir şekilde çalışıyor. Başka bir değişikliğe gerek yok. Temelde mainde ki kodlarda şu şekilde



Bu https://github.com/srcnert/STM32F4DISCOVERY_MPU6050_DMP github adresinden kodları inceleyebilir ve içindeki Processing örnek programı ile üç boyutlu bir nesneyi kontrol edebilirsiniz.