PicBasicPro timer kullanımı

Başlatan leventtt, 18 Nisan 2010, 12:57:43

leventtt

Pic de yazılımın çalışıp çalışmadığı kontrolünü görsel olarak takip etmek istiyorum. Örnek olarak her hangi bir port bitini çıkış olarak ayarlayıp, bu çıkışa bir LED bağlıyorum. Bu LED'in program düzgün çalıştığı sürece 18-20ms frekans ile sürekli yanıp sönmesi için timeri nasıl kullanılabilirim?

Tagli

Timer'ın taşma süresini prescaler ile ayarlama gerekiyor. Eğer bu tam istediğin süreyi elde etmek için yeterli olmazsa kesme sırasında timer register'ını uygun şekilde yükleyerek istediğin süreye ulaşabilirsin. Kullandığın timer'a göre ayarlar değişecektir. Ayrıca timer'ın clock kaynağı da yazacağın kodu doğrudan etkileyecektir. Genelde dahili sistem clock'u kullanılır, bu durumda kodun PIC'in hızına göre değişir.

Öte yandan, bu şekilde yazılımı pek de kontrol edemezsin. Normalde kesme kodu ana programdan bağımsız çalışır, ana programdaki olası bir kilitlenme durumunda da çalışmaya devam eder. Gerçi PicBasic Pro'nun kesme mantığı çok daha farklı, hatta gerçek anlamda kesme bile değil. Bence bu dille uğraşırken timer kesmesinin de bir anlamı yok, çünkü PicBasic Pro bildiğim kadarıyla gerçek anlamda kesmeleri hiç açmıyor, sadece her satırdan sonra bayrak kontrolü yapıyor. Yine de sen bir dene, bakarsın işini görür...
Gökçe Tağlıoğlu

ete

Timer-0 kesmesini açacaksın.
Option registerinden bölme oranını 1/128 olarak ayarlayacaksın.
TMR0=115 değerini vereceksin.
Böylece her 20 ms de bir kesme oluşacak. Her kesme oluştuğunda led'in konumunu değiştirirsen istediğin olacaktır.
Unutma kesme den çıkmadan önce TMR0=115 değerini vermeyi ihmal etme.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

leventtt

Teşekkür ederim arkadaşlar,
bu konuda biraz acemiyim, bu işlemler için kullanacağım picbasic emirleri hangileridir ?

tekrar teşekkürler

Ruzgarbey

kullandığınız picmikro işlemcisine göre değişir.  option_reg ayarlarını kullanacağınız picmikronun datasheetinden bulabilirsiniz.prescaler oranları orada yazmaktadır.ete hocamızın yazdığı gibi trm0=115 değerinde başlatılırsa 20 ms bir kesme oluyormuş.bu komutu program başlarken ve kesmeden çıkarken kullanacaksınız.


disable
kesme:
komut
komut
......
.......

tmr0=115



gibi..kolay gelsin
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK

ete

Leventt,
Yayınlamış olduğum basic derslerinde buna ait bilgi mevcut.
Aşağıda link veriyorum oradan yüklersin. Toplam 13 adet ders var .

http://www.4shared.com/file/JeKE5aho/BASIC-DERS.html

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com