Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: robikod - 03 Ekim 2019, 15:08:03

Başlık: PWM sinyali
Gönderen: robikod - 03 Ekim 2019, 15:08:03
Merhaba,
 Aynı işlemci üzerinde ürettiğim pwm sinyalin, yükselen kenarlarını saymak istiyorum bunun için ne yapmam gerekiyor. TIM_GetCounter() denedim ancak başarılı olmadı doğru bir şekilde count edemiyorum. TIM8 CH4 kullanıyorum. Input capture kullanmak istemiyrum çünkü o zaman donanımsal olarak input pinini outputa bağlamak gerekiyor. Donanımsal müdehale yapamıyorum. Kendi ürettiği sinyalde yükselen kenarları saydırma işlemi nasıl mümkün olur ?
Başlık: Ynt: PWM sinyali
Gönderen: Tagli - 03 Ekim 2019, 16:21:59
Kendi ürettiğin sinyalin yükselen kenarlarını saymaya neden ihtiyaç duyuyorsun?

Bence TIM kesmesi ile sayabilirsin. Frekans zaten çok yüksek gözükmüyor, işlemciyi fazla yormaz.
Başlık: Ynt: PWM sinyali
Gönderen: robikod - 03 Ekim 2019, 16:34:03
Alıntı yapılan: Tagli - 03 Ekim 2019, 16:21:59Kendi ürettiğin sinyalin yükselen kenarlarını saymaya neden ihtiyaç duyuyorsun?

Bence TIM kesmesi ile sayabilirsin. Frekans zaten çok yüksek gözükmüyor, işlemciyi fazla yormaz.

yükselen kenar olması gerekiyor..
Başlık: Ynt: PWM sinyali
Gönderen: Tagli - 03 Ekim 2019, 16:43:31
Bildiğim kadarıyla kesme desteği olmayan timer yok. Ancak bazen birden fazla donanım tek bir kesme vektörünü paylaşıyor. Bazen de TIM modüllerinin kesmeleri farklı vektörlere dağılabiliyor. Projede kullandığın startup_stm32fxxxx.s startup dosyasını açarak vektör tablosunu görebilirsin. O dosyada TIM8 diye aratırsan bulursun zaten. Örneğin STM32F407'de TIM8_UP_TIM13_IRQHandler kesmesi hem TIM8'in update event'lerini hallediyor (diğer TIM8 kesmeleri başka vektörlere gidiyor) hem de TIM13'ün tüm kesmelerini hallediyor. Bir vektör birden fazla kesmeye hizmet verdiğinde, kesme kodunun başında donanımın ilgili register'larını okuyarak kaynağı belirlemek senin yapman gereken bir iş.
Başlık: Ynt: PWM sinyali
Gönderen: robikod - 03 Ekim 2019, 16:45:06
Alıntı yapılan: Tagli - 03 Ekim 2019, 16:43:31Bildiğim kadarıyla kesme desteği olmayan timer yok. Ancak bazen birden fazla donanım tek bir kesme vektörünü paylaşıyor. Bazen de TIM modüllerinin kesmeleri farklı vektörlere dağılabiliyor. Projede kullandığın startup_stm32fxxxx.s startup dosyasını açarak vektör tablosunu görebilirsin. O dosyada TIM8 diye aratırsan bulursun zaten. Örneğin STM32F407'de TIM8_UP_TIM13_IRQHandler kesmesi hem TIM8'in update event'lerini hallediyor (diğer TIM8 kesmeleri başka vektörlere gidiyor) hem de TIM13'ün tüm kesmelerini hallediyor. Bir vektör birden fazla kesmeye hizmet verdiğinde, kesme kodunun başında donanımın ilgili register'larını okuyarak kaynağı belirlemek senin yapman gereken bir iş.
Teşekkürler
Başlık: Ynt: PWM sinyali
Gönderen: robikod - 04 Ekim 2019, 08:47:20
TIM8 ile ilgili interrupları denedim olmadı. Yazılımsal olarak output pinini input pinine bağlamak söz konusu olabilir mi bu konuda bilgisi olan var mı ?