Pic çalışırken bekletilmesi gerekse ?

erdayi

Üye
Katılım
23 Şub 2007
Mesajlar
13
Puanları
1
Yaş
40
pic üzerinde yüklü programı sürdürürken, herhangi bir anda bekletilmesi istenirse,(5 sn led yakmak gibi) bu 5 saniye içinde giriş portlarından gelen herhangi bir değeri dikkate alır mı?.
 
Giriş portu harici kesme pinleriyse ve ilgili kesme özelliği aktifse PIC normal akışını bırakıp kesme programını çalıştırır. Yani herhangi bir değeri dikkate alma olasılığı var.
 
pic üzerinde yüklü programı sürdürürken, herhangi bir anda bekletilmesi istenirse,(5 sn led yakmak gibi) bu 5 saniye içinde giriş portlarından gelen herhangi bir değeri dikkate alır mı?.

Pic veya genel adı ile mikrodenetleyiciler, farklı kaynaklardan gelen sinyal ile işlemekte oldugu programı durdurup önceden program içinde tanımlanmış kesme programını çalıştırdıktan sonra tekrar anaprogram içinde kaldıgı yerden çalışmağa devam eder.
Mikrodenetleyicilerdeki bu özellikler kullanılarak esnek program yazılımına imkan tanınır.
Kesmeler; zamanlayıcı taşma kesmeleri, RB0 harici kesmesi, RB4-RB7 pinlerindeki degişiklik kesmesi........gibi çeşitli kaynaklardan gelen sinyallerle oluşturulabilir ve mikro denetleyici içindeki kaydediciler ile program içinde kullanılır......
 
ana döngünde her şeyi yap. timer ile sn sayacı oluştur (kesme ile kolay yapılır ama elzem değil). Ledini yak ve sayacı başlat. arada sayacın 5 sn ye geldimi diye kontrol et. Gelmiş ise ledi söndür, timeri durdur (veya başka amaçla kullan). Timer ayarını çok kısa tutma. Piclerde 200 ms. rahat elde edilebilir. Her 200 ms de kesmede yazılımda yapacağın ikinci sayacı bir arttır. Sayac değeri 5 olunca 1 sn geçmiş demektir.

Picin 32 bit timeri olanlar çok daha kolay halleder bu işi. Doğrudan 5 sn elde edebilirsin.
 
piclerde bekleme konumunda iken yani picbasicde PAUSE C de dalay_ms gibi komutlarla verilen beklemelerde hiç bir pini dikkate almaz bu interrupt pini dahi olsa bu yuzden uzun süreli beklemeler yapılacaksa bekleme zamanını bir döngü kurarak kullanmak gerekir

Örnek ccs c için :

for (i=1;i<=10;++i) delay_ms(1)


yukardaki örnek 1 ms. aralıklarla 10 ms. gecikme yapar kendi gecikme zamanınıza göre
ayarlıyabilirsiniz
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…