PWM sinyali

Başlatan robikod, 03 Ekim 2019, 15:08:03

robikod

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 ?

Tagli

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.
Gökçe Tağlıoğlu

robikod

#2
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..

Tagli

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ş.
Gökçe Tağlıoğlu

robikod

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

robikod

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ı ?