stm32f10x PWM kenar tespit

Başlatan mistek, 26 Ocak 2014, 21:49:36

mistek

Aynısını yazdım bende, normalde açıp kapatmasam zaten problem yok.

Kodlar karman çorman oldu düzenleyip buraya ekleyeyim.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

mistek

Çalıştı bu. Başka bir kesmede aktif pasif fonksiyonlarını kaldırmayı unutmuşum ahh kafam ahh.
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

geçmiş olsun o zaman : ) .

mistek

Şu basit şeylerden kaybettiğim zamanı birleştirsem yeni bir hayat sürebilirim. Teşekkürler :)
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

mistek

Kenar tespit...

Timer2 i main fonksiyonu içerisinde init ediyorum kesmeleri açıp timerı başlatıyorum, sonrasında PWM in olduğu TIM1 kesmesi içerisinde sürekli aşağıdaki init fonksiyonunu çağırmam lazım yoksa PWM in düşen kenarına yetişemiyor. (TIM1 ARR load değeri 3199) Sürekli init etmeden başka kullanım şekli var mı?

void TIM1_UP_IRQHandler(void)
{
	TIM_ClearITPendingBit(TIM1,TIM_IT_Update);

        TIM_TimeBaseStructure.TIM_Period = 3150; //ARR degeri + 1 . Buraya yazilan degere gelince timer kesme olusturur.
        TIM_TimeBaseStructure.TIM_Prescaler= 399; //On bölücü degeri + 1
        TIM_TimeBaseStructure.TIM_ClockDivision=0; //Saat bölücü
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //Timer modu. Yukari sayici.
        TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);	//Timer yapisi init.

   GPIOD->ODR ^=  1 << 3;

}
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

inite gerek yok , enable - disable etmen yeterli

mistek

Girerken disable yapıp çıkarken enable mı yapacağım hocam?
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

Evet , Tim1 handler içinde daha önceden init edilmiş Tim2'yi enable edip ,

tim2 handler içinde de disable edebilirsin. Bu da düşen kenar kesmesi oluyor. Tim2 handler içinde eğer biliyorsa bir sonraki cycle için tim2 periodu değiştirilebilir.

mistek

PWM periyodu 40ms, Timer1 kesmesi içerisinde toggle yapıyorum toggle periyodu 4-5 saniye :o

PWM normal çalışıyor kesmesi gelemiyor biraz saç yolup geliyorum hocam :)
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

nasıl olur , 40ms de bir toggle olması lazım değil mi ?

mistek

Olmayınca olmuyor işte hocam. PWM çalışıyor TIM2 kesmesi geliyor TIM1 kesmesi geliyor ama geç geliyor. Bayraklarıda siliyorum ama saçma sapan davranıyor.

Enteresan bir şekilde şu oldu.
Kesme içerisindeki
GPIOB->ODR ^= 1 << 15;  satırını silip tekrar yazdım, düzeldi. Ciddi ciddi derleyici bozuk diyeceğim artık. Keil 4.70 :o
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

Bu tip seyler ve cok daha fazlasi oluyor hep keil da. Sebebi naska yerdeki bir sey oluyor ama hata da vermiyor , sorunu bulmak cok zorlasiyor.

Sevmiyorum keil i.

mistek

Hocam saçma gelecek ama gerçekten kullandığım keil 4.70 problemliymiş. Başka fonksiyonları çağırırkende problem yaşadım üstelik derliyorum hexi işlemciye atıyorum kodun bir kısmı normal çalışırken olması gereken yer doğru çalışmıyor.

Bugün kesin tespit ettim. 4.70de derlediğim ve düzgün çalışmayan programı 4.72a versiyonunda hiçbir değişiklik yapmadan (aynı pc'de 4.70'i silip 4.72a yükledim) derledim çipe yükledim.

Sonuç? Saatlerdir çalışmayan kod gayet güzel çalıştı. Böyle problemlerle uğraşmak insanın zoruna gidiyor.

Birkaç bin dolarlık derleyici yapıyorlar bi işe yaramıyor ne kıymeti kaldı ki?


Siz hangi derleyiciyi kullanıyorsunuz?
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R

camby

4.60 dan 5.1 gectim yeni.

Projemi tasirken cok sorun yasadim ama simdi stabil.

Sorun bizim yanlis yerlerde kullandigimiz headerlar define lar vsvs

Sikinti keil in hata vermeden derledigi projelerde sacmalamasi.

mistek

Doğrudur hocam bişeyleri bilmeden eksik yapıyorsak derleyici uyarması lazım ki düzeltelim. Bende şuan 4.72 kullanıyorum. 5.01 den memnun musunuz? Geçmeli miyim? Orada bu tür hatalar oluyor mu?
boş işlerin adamı ---- OHM Kanunu: I = V/R ---- Güç Formülü: P = V*I = I^2*R = V^2/R