STM32F4 ile MPU6050 iletişimi

Başlatan Cemre., 17 Şubat 2016, 23:34:22

okg

#15
Alıntı Yapmuhittin_kaplan - Bugün, 16:39:06
pullUp varmı ?

Hocam bu yorumu gene aynı konu için 2014 yılında da yazmıştınız  ;D ;D


Hal değilde std kütüphanesi ile denemek isterseniz yardımcı olabilirim
KTU Elektronik Haberleşme - YTÜ Haberşelme YL - GTU Haberleşme YL

Cemre.

Bir dönem bu sensör ile düzgün iletişim kurabilmek için iki hafta uğraşmıştım. Sonra ne yaptım hatırlamıyorum ama çalıştı. Şimdi hatırlamadığım nüanslarla birlikte gözüm kapalı I2C iletişimi yapabiliyorum. Bir öğrenme eşiği var ve kendi başınıza öğrenmeye çalışmak yerine hazır kodları kullanmaya çalışırsanız bu eşiği atlamak deveye hendek atlatmaktan daha zor oluyor.

@Sya sorununuza gelirsek, programın çalışması anlamında ayrıntılı bilgi vermediğiniz sürece yardımcı olmak çok zor. Nerede takılıyor? Debug yaptınız mı? Örneğin while'ın içinde INT pini kontrol ediliyor, sizin program hiç True döndürüp koşulun içine giriyor mu? Led yakıp söndüren kısımlar vardı programın çalışıp çalışmadığını anlamak için, sizde hangi ledler yanıyor? Ya da yanıyor mu? Adım adım gidersek sorunu çözebiliriz bence.

Kolay gelsin...

Sya

@Cemre. Hocam çok haklısınız aslında ama bende şöyle bir sorun var; bir şey yapmak istediğim zaman datasheeti açıp kendim başlayamıyorum. Örneğin mpu6050 de datasheet açtım ve ilk adım olarak ne yapacağımı bulamadım, bilemedim. Örnek kodları inceleyerek üstünde değişiklik yaparak ilerlemeye çalışıyorum. Aslında sizin bana bu konuda tavsiye vermeniz benim daha yararıma olur.

Cemre.

https://www.i2cdevlib.com/devices/mpu6050#registers

Datasheet çok da lazım değil. Bütün reg. haritası burada anlatılıyor. Ayrıca https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050 burada kaynak kod da bulabilirsiniz.

https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/MPU6050.cpp
Şurada init rutininde çağırılan fonksiyonlar, bu fonksiyonların içerisinde erişilen Reg.ler incelenebilir.
Benim paylaştığım kodlar da bunların bir benzeri zaten.


muhittin_kaplan

Alıntı yapılan: okg - 24 Ocak 2017, 18:37:09
Hocam bu yorumu gene aynı konu için 2014 yılında da yazmıştınız  ;D ;D


Hal değilde std kütüphanesi ile denemek isterseniz yardımcı olabilirim

"Nalet gitsin" sevmiim ben bu i2c yi Oğuzhan.

Sya

Hocam debug yaparken bazı değişiklikler yapıp adım adım gitmeye çalıştım ama daha ilk HAL_I2C_Mem_Write fonksiyonunda takılı kaldı. i2c hattı sürekli busy durumunu veriyor. Farklı bir hattı kullanmayı denedim i2c2 kanalından denemeye çalıştım ama gene aynı hatayı verdi.

Cemre.

Öncelikle bağlantılarınızı kontrol edin, hatta imkan varsa Arduino gibi bir kart ve hazır çalıştığından emin olunan bir kodla ham veri okumaya çalışın. Donanımla ilgili probleminiz var gibi görünüyor. I2C hattını mümkün olduğunca kısa tutun.

Bir de okumaya başlamadan önce bir 500ms civarı gecikme ekleyin bakalım değişiklik olacak mı. Lojik analizör varsa hattı bir kontrol edin herhangi bir veri alışverişi gerçekleşiyor mu? Pull-Up dirençlerini unutmayın, modül beslemesi ile mcu beslemesi lojik seviyeleri aynıdır sanıyorum. (3.3V-5V dönüşümü yapmadığınızı varsayıyorum.)

Yoksa, en başa dönün, cubemx'te hata yapmış olma ihtimaliniz çok yüksek.