16f877 Timer0

wefa

Üye
Katılım
9 May 2010
Mesajlar
12
Puanları
1
16f877 kullanarak ac kıyıcı yaptım. Timer0 ı 8bitlik seçtim prescaler değerini 128e ayarladım. Tristörlerin kesme açısını belirledim osilatörü 10MHz seçtim tek sorunum Timer0 a girilmesi gereken değerin hesaplanması. Bunu ne şekilde yapabilirim? yardımcı olursanız sevinirim.
 
10 Mhz kristal ile komut periodu 1/(10,000,000/4)= 400 ns olur. Prescaler 128 kullanıldığında tmr0 her 51.2 ms'de bir artar.
Yani bu frekans ve prescaler değerleriyle elde edebileceğiniz en kısa tmr0 kesme periyodu 51.2 ms'dir.
Buna göre tmr0'a örneğin 255 yüklerseniz, 51.2 ms sonra, 254 değeri yüklerseniz: (256-254) * 51.2 = 102.4 ms sonra tmr0 kesmesi oluşur.

Bu arada timer0'ın yükselen ya da düşen kenarda artmasını belirleyen "tose" bitini de kullanım şeklinize göre ayarlamalısınız.
 
yani kesmenin oluşmasını istediğim açı 30 derece, Şebeke frekansı 50hz olduğuna göre kesmenin 1666,7ms de olması gerekir bunun içinde timera 255-(1666,7/51,2)~=222 değerini mi yüklemeliyim?
 
yani kesmenin oluşmasını istediğim açı 30 derece, şebeke frekansı 50hz olduğuna göre kesmenin 1666,7ms de olması gerekir bunun içinde timera 255-(1666,7/51,2)~=222 değerini mi yüklemeliyim?

Hesaplama şekliniz hemen hemen doğru (255 yerine 256 kullanmalısınız) fakat 1666.7 ms süresini tekrar gözden geçirin bence.
 
yardımlarınız için teşekkürler
 

Forum istatistikleri

Konular
128,158
Mesajlar
915,512
Kullanıcılar
449,902
Son üye
gever3030

Yeni konular

Geri
Üst