STM32F4'de garip bir Timer kesme sorunu

Başlatan Mucit23, 30 Mart 2021, 11:40:02

Mucit23

Selamlar

STM32F449 MCU üzerinde Timer kesmesi oluşturuyorum. Anlamadığım bir sorun var ilk defa karşılaştığım birşey. Anlam veremedim siz değerli forum ahalisine sorayım dedim. TIM2 Update Kesmesi aktif. 100ms'de bir update kesmesi olacak şekilde ayarlı.

Kesme fonksiyonum bu şekilde

void TIM2_IRQHandler(void){
GPIO_ToggleBits(STS_LED_PORT,STS_LED_PIN);
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}
Bu şekilde çalıştırdığım zaman MCU sanki kesme bayrağı sıfırlanmamış gibi yaklaşık 200nS sonra kesmeye gidiyor mcu. Sonraki kesmeye gidişinde kesme bayrağı siliniyor ve tekrar update kesmesi olana kadar kesmeye gitmiyor. Fakat Kesme fonksiyonunu aşağıdaki gibi yaparsam hiçbir sorun yok.

void TIM2_IRQHandler(void){
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
GPIO_ToggleBits(STS_LED_PORT,STS_LED_PIN);
}

Kesme bayrağının nerede silindiğinin bir önemi var mıydı bu mcu larda?

Tagli

#1
Evet, var. ARM'ın kendi sitesinde güzel bir şekilde açıklanmış:
https://developer.arm.com/documentation/ka003795/latest

Aslında kesme bayrağının tam nerede indirildiği önemli değil ama, kesme fonksiyonunun son yazma komutu bu olmamalı.
Gökçe Tağlıoğlu

Mucit23

Teşekkürler. Durumu anladım. Tamamen Cortex M4 mimarisiyle alakalı bir durum. Dikkat etmek gerekiyor bu konuya

apsis

Bende hep alışkanlık olmuştur. Kesmeye girer girmez bayrağı temizlerim.
Böyle bir sorunun oluştuğunu ve teknik açıdan kaynağını bilmek faydalı oldu.
"Makineye Beyin" MEKATRONİK