Bunalmış hocamızın yaptığı pwm örneğinden aldığım bir kısımı sormak istiyorum...
RCC->APB1ENR|=0x00000020; // Timer7 CLK'u aktif edelim (84 Mhz)
TIM7->CR1=0x0080; // Otomatik Reload
TIM7->PSC =839; // Prescaler degerimiz 839, Count frekansimiz = fCK_PSC / (Yuklenen Deger + 1) 84E6 / (840) = 100 KHz
TIM7->ARR =1; // Counter, Decimal 1 olunca basa donsun. Her 20 mikrosaniye de bir timer int olusacak.
TIM7->DIER=0x0001; // Update Int enable
NVIC->ISER[1] = 0X00800000; // NVIC de Timer 7 interrupta izin verelim
TIM7->CR1|=0x0001; // Counter Enable
}
burada arr 1 olduğunda başa dönsün derken sadece 0 dan 1 e geçiş süresi var demektir..yani 1/100 Khz den 10us oluyor..ama bunalmış hocamız 20 us demiş..hatayı nerede yapıyorum acaba?:s
1'den 0'a geçiş süresi yok mu?
1 olunca başa dönsün denmiş..acaba 1 olduğu anda resetlenip 0 olmaz mı?yoksa dediğiniz gibi 1 den sonra yine 10 us işletip 0 a mı geçer?
Rehber s:459' da zaman çizelgesi var. Oraya dikkat edersen,
conter reload değerine eşit olunca saat darbesinin yükselen kenarında kesme bayrağı çekiliyor. Ancak counter içeriğinin 0 olması, sonraki saat darbesinin yükselen kenarında gerçekleşiyor.
O örnek, yazılımla PWM üretmek için. Örnek uygulama olarak değerlendirilebilir. Ama bu kadar HW PWM çıkışı varken sofrware pwm biraz anlamsız olur.
çok teşekkür ederim hocam anladım ne demek istediğinizi..