TMS320F28027 ePWM Interrupt Gecikmesi

Başlatan quarko, 18 Eylül 2020, 15:48:15

quarko

TMS320F28027 üzerinde pwm interrupt ı alıyorum. PWM sayacım up-down olarak sayıyor. Örneğin ben sayaç ile period eşleşmesi gerçekleştiğinde interrupt alınacak şekilde ayarladığımda interruptı alıyorum fakat birkaç us gecikme ile alıyorum. Bu durum, normal değil gibi.

Kod flash tan çalıştığında bu interrupt gecikmesi birkaç us civarında oluyor. Interrupt fonksiyonunu ram dan çalıştırdığımda ise bu gecikme 700-800ns civarlarında oluyor. Böyle bir gecikme olması biraz garip. 100kHz anahtarlama frekansım var. 10us periyot için bu gecikmeler önem arz ediyor maalesef.

Bu konu ile alakalı bilgisi olan varsa yorumlarınızı alabilirim.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

z

Islemcinin Clk frekansini kontrol ettin mi?

quarko

Evet işlemci frekansını daha önce kontrol etmiştim. Dahili osilatörle de, harici kristallede durum aynı. (MCU 60MHz de çalışıyor.)
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

z

Ayni pwm in urettigi bir diger int daha var mi?

Mesela Cmp int aciksa Cmp Int, Peryod Int dan daha once uretilecegi icin once varsa cmp int rutini isler birazdan gelecek Peryod int bu esnada int rutini isletilirken isleme alinmayacaktir. Ne zaman cmp int rutini bitti o zaman peryod int rutinine girersin bu da gecikme sebebi olabilir.

1 us boyle bir islemci icin dehset bir gecikme.





quarko

Yok hocam. Aynı pwm in ürettiği başka bir interrupt daha yok. Amacım sayaç aşağı doğru sayarken, CompareB değeri ile eşleştiğinde interrupt almaktı. En son 600-700ns gecikme ile interrupt fonksiyonunu ram den çalıştırarak elde ettim.

ePWM1'i kullanıyorum normalde. ePWM4 ü de aynı şekilde ayarladım. PWM4'ün compareB değerini, gecikmeyi hesaba katarak verdim. Ona göre istediğim yerde interrupt alabildim.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

z

Ama sorunun kaynagını bulmak lazım.

Cok ilginç bir durum bu.

Bu işlemciylemiydi tam hatırlamıyorum CLA birimi olan modeliyle kısa bir süre çalıştım ve PWM ile ilgili böyle bir sorun yaşadığımı hatırlamıyorum.

quarko

Ben bu işlemci ile ilk defa bir proje yapıyorum hocam. CLA birimi yok bu işlemcide. Daha üst ailelerde var. Böyle bir soruna mantıklı bir açıklama bulamadığım için burada paylaşmak istedim aslında.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

quarko

PWM interruptlarındaki gecikme problemi, PWM ile ADC_SOCx tetiklemelerde de mevcut maalesef. PWM sayacı zero dan geçerken, ADC_SOC tetiklemesi yapacak şekilde ayarlıyorum. Maalesef çevrim sürelerine ilaveten mevzubahis gecikme ile birlikte, örnekleme periyodunda bana pahalıya patlıyor.  :-[
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."