Timer1 Sorunu..Yardımm Lütfen

Katılım
2 Mar 2014
Mesajlar
20
Puanları
1
Yaş
32
Konum
İzmir
Arkadaşlar herkese kolay gelsin.
pic ile frekans okumak istiyorum. Bunun için timer1 i 1 saniye çalıştırıp durdurmam gerek. 1 saniye çalıştırıp durdurmayı nasıl yapabilirim. CCS C de yazıyorum kodları.
 
Kullandığın mcu ve osilatör frekansına göre değişir,
örneğin 16F877A 2MHz kristal ile:
1.png
 
karaapak cevabın için teşekkür ederim. Timer1 i external olarak kullanıcam. Kod olarak 1 saniye çalıştırmam mümkün müdür?
 
Mantık bir timer ile timer modda 1 saniye sayarken,
başka bir timer ile counter modda dışarıdan gelen sinyali saymak.

Timer1 i external modda kullanacaksan
başka bir timer ı 1 saniye saymak için kullanmalısın.
Ama başka bir timer 1 saniye sayabilecek kapasitede değil,
başka çözümlerde var tabiki,
1 saniye sayacağına 0.1 saniye sayabilirsin.
Yani 0.1 saniye boyunca dışarıdan gelen x pals saydım
o zaman dışarıdan gelen sinyal 10x Hz dir gibi.

Nette birçok hazır örnek var,
bunları incele hatta anlatımlarda var,
takıldığın yer olursa sor
cevaplamaya çalışırım.
 
anladım. Ben dış kesmeyi kullanarak gelen sinyallerde timer1 saydırıp değer okuyup frekans a çevirmiştim. Yalnızca timer1 ile olur mu diye merek ettim
 
Olur ama pek sağlıklı olmaz,
birde mcu ya başka hiçbir iş yaptıramazsın.

Misal timer1 i 1 saniye sayması için kurdun,
sayacağın harici kaynağı mcu nun hehangibir pininden kontrol ediyorsun diyelim,
ilk harici pals geldi timer1 i başlatırsın,
anbean harici kaynaktan palsi okuyan pini kontrol edersin
timer1 1 saniyeyi tamamlaığında kaç pals okuduğuna bakarsın.

Veya sana 1 saniyede bir pals veren bir kaynak bulursun,
misal ds1307 gibi rtc entegreleri,
bu pals sana external interrupt ile haber versin,
bu esneda timer1 ile counter modda dışarıdan gelen palsleri sayarsın
yine frekansı elde etmiş olursun.

Yani elindeki donanıma göre istediğin yöntemi kullanabilirsin ama
sonuçta frekans ölçmek için
belirli bir zaman geçti bilgisi ve
bu zaman içinde şu kadar harici pals sayıldı bilgisi lazım
bu açık.
 
Değerli yorumlarınız için teşekkürler.Peki bu frekansı hesaplama işi capture komutuyla da yapılabilinir mi? Olursa da nasıl yapılır?
 
İlla puls ( frekans ) saymak gerekmez.
Periyot uzunluğunu bulup >>> F=1/T
Yani iki puls arası sayıcı çalıştır.
Zaten frekans düşükse frekans değil periyot sayılır , temel mantık ...

------
Bölmek evet ama çarpmak , cıkkk ..
 
iki puls arası sayıcı çalıştır derken tam olarak neyi kastettiniz? Çünkü ben zaten dış kesme sinyali geldiğinde timer1 sayıcısını çalıştırıp Hesaplama yaparak 1 periyod arasındaki süreyi hesaplayıp timer1 sıfırlıyorum. Tekrar kesme sinyali geldğinde işlem aynı şekilde tekrarlanıyor.
 
Kazım hocam senin kullandığın yöntemi söylemiş zaten,
ama dikkat çekiyor frekans düşükse bu yöntem daha iyi sonuç verir diyor.

Benim anlattığım diğer yöntem oluyor,
düşük frekanslarda iyi sonuç vermez
hatta 1Hz altını zaten ölçemez,
hatta 0.1 saniye ölçüm yapıldığında
çözünürlük doğal olarak 10Hz olur

Ölçeceğin frekans aralığı nedir?
Hangi mcu yu kullanıyorsun?
Bunlar önemli.

Capture ilede frekans ölçebilirsin
yine benim anlattığım yönteme döner
bir yerde 1 saniye süre sayarken
capture ile toplam kaç pals aşmışım diye bakarsın.
 

Forum istatistikleri

Konular
129,880
Mesajlar
930,991
Kullanıcılar
452,753
Son üye
Emrecannnn

Yeni konular

Geri
Üst