PROTONDA TIMERLER NASIL KULLANILIR?

Başlatan Murat Mert, 29 Temmuz 2009, 12:16:33

Murat Mert

S.A
Sn. Picprojeciler protonda 16f877-20 ve 18fxxx-20 serilerinde timerler nasıl kullanılır konfigrasyonları nasıl ayarlanır ricam bilenler anlatırsa ve dökümanlarınız varsa açıklarsanız sevinirim. Protonun kitabından tam anlamadım :(
İlgilenen arkadaşlara şimdiden eşekkürler. Kolay gelsin.
mert07

Murat Mert

S.A.
Arkadaşlar konu hakkında araştırma yaptım amatam bir olumlu cevap bulamadım. Sadece bir 16f628 saat programı buldum. Onu 20 Mhz 16f877 uyarladım çok hızlı saydı conf. ayarlarıyla biraz oynadım ama yinede hızl gidiyor. Amacım delay komutlarını kullanmadan programlamak böyece programın askıda kalmasını engellenmekti. karıştırarak 60 sn ayarını yakaladım gibi.Kullanım amacım programda bağımsız bir zaman sayacı olarak kullanarak çeşitli timerler oluşturmaktı yaptımda. Ama timerler nasıl kullanılır, kullanım çeşitlei ve conf. ayarları nasıl yapılır bilgisine ulaşmak ve bunlar ile paket timerler oluşturmak ve programlamayı hızlandırmak. Bilgi yardımlarınızı ica ediyorum.
Kolay gelsin.
mert07

zakbay

Merhaba

eğer amacın bir saat yapmaksa
bunun için timer0 ı kurman yeterli olacaktır.


timer0 kesmesini aktif etmek için  

INTCON  = %11100000

olarak ayarlamalısın buradaki intcon.5 timer0 ı aktif eder.

OPTION_REG REGISTER

dan da timer0 önbölücü yü ayarlaman gerekir

20mhz kullanıyorsan 1 saykıl 0.2 mikrosaniye dir. ona göre önbölücüyü hesapla     0.2 x 255 x önbölücü = gecikme zamanı

timer0 ı 1 ms ye ayarlarsın her kesmeye geldiğinde de. sayacları 1 artırırsın.

10 ms için 10 kez
100 ms için 100 kez gibi

bu sayacları da program içinde kontrol ederek istediğin gecikmeleri elde edersin.

şu an çıkmam lazım yine görüşürüz.
Tek dostum çalışmak...

Murat Mert

Sn. zakbay ilginiz için çok teşekkür ederim. Amacım saat yapmak değil. Delay komutunu kullanmadan zaman ve gecikmeleri ayarlamak. komut geldikten sonra zamanlamayı çalıştırarak programsal timerler yapmak. bununla ilgili işlemler yapmak. Kolay gelsin.  :)
mert07

muhittin_kaplan

iyi çalışmalar
programsal timer derken ben pek anlamadığımı belirteyim. yanlız dilim döndüğünce anlatayım..
timer0 kontrol etmek için intcon reg ndeki interrupları set etmen gerek bunlar GİE ve T0IE, T0ie bayrağı t0 interruptını enable eder, gie ise enable edilmiş tüm interruptları yetki verir.


peki zamanlamayı nasıl ayararız;
hesap söyle
20Mhz de çalışan bir işlemci aslınad 20/4=5Mhz de çalışır (1 makina saykılı)buda 1 saniyede 5000000 komut işlediği anlamına gelir. peki ben 1/2 lir bir oran seçersem(Bu seçimi- Option_Reg in 0,1,2 den yapılır)

kaç ms bir kesmeye gider. F=1/T den T yi bulmak için T=1/F den 1/5000000Hz=0,0000002 sn. Yukarda bahsettiği Option_reg den1/2 olduğuna göre 4uS de bir kesmeye . Ama Bunlar için Kesme kullanımını bilmek gerek. (bildiğinizi farzediyorum)

Murat Mert

S.A.
Sn.  muhittin_kaplan emeğinize teşekkürler programda çeşitli timerler derken annı anda bir kaç sayıcı yapmaktı counter gibi sayacaklar yani. Kolay gelsin. Allah razı olsun.
mert07

muhittin_kaplan

yukardaki hesapla..istediğiniz kadar sayıcı yaparsınız.
söyle

Dim Sayici_1 as byte
Dim Sayici_2 as byte
Dim Sayici_3 as Byte
......
......
Kesme:
if Sayici_1=9 then
  sayici_1=0
.....
else
  inc sayici_1
endif

if Sayici_2>150 then
  sayici_2=0
  .....
else
  inc sayici_2
endif

kod..kod..kod....

yaparak istediği kadar sayı değişkenini arttırıp sonra bunları kntrol ettirebilirsin. bunları kesme rutininin içinde yapabildiğin gibi ana rutin içindede kontrol ettirip, kesme rutini içerinde sadece arrtırabilirsin (kesmeen hızlı çıkması için)