Tasarım #18
açıkGömülü Yazılım
0%
Dosyalar
Ferzende Tekçe tarafından neredeyse 3 yıl önce güncellendi
https://www.youtube.com/watch?v=92A98iEFmaA&t=37s bu adreste örnekte FS USB işlemi ile ilgili örnek konu anlatımı mevcut. Projede kullanmılabilir.
Ferzende Tekçe tarafından 2 yıldan fazla önce güncellendi
- Dosya DebugConfigFor SwV.png DebugConfigFor SwV.png eklendi
- Dosya DebugConfigFor SwV2.png DebugConfigFor SwV2.png eklendi
Bu debug işleminde her bir fonksiyonun execution time değeri ölçülebiliniyor. Bu işlem özellikle servo motor sürücü için harcanan zamanları ölçmek için önemli. Böylece çıkılabilinir en yüksek hız tespit edilebilir. Bu özelliği aktif edip kullanmak için sırası ile aşağıdaki işlemler yapılmalıdır. Yardım için https://www.youtube.com/watch?v=Eg_GLvLHM1o&list=PLnMKNibPkDnEDEsV7IBXNvg7oNn3MfRd6&index=3 ve https://www.youtube.com/watch?v=N_Q0Cz1vC6k&t=2s videolarına bakılabilir.
1-CubeMx Devce Configuration Tools->System Core->SYS->Debug->Trace Asynchorunus Sw seçilmeli.
2-Debug Congig ekranından ekteki şekilde olduğu gibi ayar yapılmalı.
3-#define ITM_Port32(n) ((volatile unsigned long)(0xE0000000+4*n)) makrosu tanımlandıktan sonra ölçümün başlatılacağı yere ITM_Port32(31)=1; ve biteceği yere ITM_Port32(31)=2; yazılmalı.
4-ITM_Port32(31)=1; ve ITM_Port32(31)=2; ye break point konularak debug başlatılmalı.
5-Debug esnasında Window sekmesinden SWV eklenmeli (Önemli not: Debug başlatılmadan menü görünmüyor. Ayrıca Start Trace (Kırımızı buton) kodda bir Break Point noktasında durulmadığı sürece pasif oluyor.
6-Ekteki 2. şekilde görülen işlem yapılarak fonksiyon Execution Time ölçülebilir.
Ferzende Tekçe tarafından 2 yıldan fazla önce güncellendi
- Dosya AdimRobotEski.rar AdimRobotEski.rar eklendi
- Dosya IlkAdim_Arayüz.rar IlkAdim_Arayüz.rar eklendi
- Dosya ServoAyar.rar ServoAyar.rar eklendi
HizYukle adlı fonsiyon her adımda her adım için gerekli zamanlamaları hesaplayıp bir diziye kayıt ediyor. Bu hesaplamada kullandığını SabitKatsayi2 adlı değişkenin değeri C# ta yazılan yazılımın oluşturduğu patern dosyasındaki bir t1 zamanı için gerekli olan en büyük adım sayısına eşit olarak alınıyor. Aksi taktirde motorların hareketleri arasında senkronizasyon bozuluyor. C sharp uygulamasında on ve arka motorlar için sabit katsayı 0.00533333 ve yatay motor için de 555.555555555 değeri alındı. Bu değerler servo motorun ElectoricGear parametresi 1000 (tüm motorlar için aynı değer kullanıldı) alınarak işlem başarılı bir şekilde test edildi. Hız yetersi. Hızlandırma için optimizasyonlara devam edilecek.
Ferzende Tekçe tarafından 2 yıldan fazla önce güncellendi
Yukarıda eklenen Arayüz uygulamasında boyut küçültmek amaçlı silinen bin ve obj klasörleri projenin çalışmamasına sebep oldu. Başka projeden kopyala yapıştır yapılarak sorun çözüldü.
Ferzende Tekçe tarafından 2 yıldan fazla önce güncellendi
- Dosya usb_interrup.png usb_interrup.png eklendi
STM32F4'te usb haberleşme yüksek timer intrrupt değerlerinde hata veriyordu. Bu da cihazın yüksek hızlara çıkarılmasını engelliyordu. Timer Interrupt Sup Priority değeri 1 ve USB Interrupt Sup Priority değeri 0 olarak ayarlandı. Böylece cihaz ile en yüksek timer interrupt değerlerinde bile sorunsuz haberleşme sağlanabiliniyor.
Ferzende Tekçe tarafından yaklaşık 1 yıl önce güncellendi
- Kalan zaman 40.00 s yapıldı
1-Geliştirme bordundaki E5V ucuna 5 volt verilerek bord beslenebiliniyor.
Bu işlem için jp2 kısmındaki jumper ext ayarına alınmalıdır.
2- Ön tanımlı ayarlar ile işlemcinini frekansı 480 MHZ değerine çıkarılamıyor. 480MHZ için STM32CubeID arayüzünde System Core-> RCC->Product Revisyon Rev.V yapılmalı. Bu işlemden sonra da yine aynı menüden Power Regulator Voltage Scale Değeri 0 seçilmeli.
3-https://www.youtube.com/watch?v=ft8LXVcYFRg&list=PLCqQF0BnY9vDbZiYCUDxmvWo7zydgttHN&index=1&t=768s adresindeki tariflere göre yapılan ayarlanmalara rağmen usb driver çalışmadı. yapılan incelemeler sonucunda Clock Configuration alanındaki USB Clock Mux kısmından frekansın RC48 seçeneği seçilerek 48Mhz yapılması gerektiği bulunmuştur.