Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Cortex ARM => Konuyu başlatan: Mucit23 - 30 Mart 2021, 11:40:02

Başlık: STM32F4'de garip bir Timer kesme sorunu
Gönderen: Mucit23 - 30 Mart 2021, 11:40:02
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?
Başlık: Ynt: STM32F4'de garip bir Timer kesme sorunu
Gönderen: Tagli - 30 Mart 2021, 13:02:18
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ı.
Başlık: Ynt: STM32F4'de garip bir Timer kesme sorunu
Gönderen: Mucit23 - 30 Mart 2021, 14:06:31
Teşekkürler. Durumu anladım. Tamamen Cortex M4 mimarisiyle alakalı bir durum. Dikkat etmek gerekiyor bu konuya
Başlık: Ynt: STM32F4'de garip bir Timer kesme sorunu
Gönderen: apsis - 30 Mart 2021, 21:02:13
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.