Ana sayfa | Hakkımda | İletişim | Sosyal platform
YAZILARIM
PIC'in ısınma nedenlerinden biri

Bu yazımda sizlere port yönlendirme işleminin önemini bilgim ve tecrübelerim kadarıyla anlatmaya çalışacağım.
  Öncelikle sitemizde konu paylaşılan derleyicilerdeki bu komutları hatırlayalım.

PIC ASM : Bu derleyicide ilgili TRIS bank'ine gerekli değerler yüklenerek portların giriş çıkış durumları belirtilir.
PIC CCS C: Bu derleyicide ise programınızın tanımlama kısmına " #use fast_io(port ismi) " ve ana programınıza gerekli konfigürasyon ayarlarını yaptıktan sonra "set_tris_x(0b001100000); " fonksiyonu ile ilgili portun istenilen pinlerini giriş ya da çıkış olarak ayarlayabilirsiniz.
   1 bilgisi istenilen pinin giriş, 0 bilgisi ile istenilen pinin çıkış olacağını belirtir. İsterseni binary kodlamayı derleyiciniz desteklediği sürece hexadecimal, decimal gibi formatlarda kullanabilirsiniz. Zaten CCS C ve ASM derleyicileri bu biçimleri destekliyor.
 
   Şimdi gelelim yaşadığım sorunun çözümüne. Öncelikle yaşadığım sorundan biraz bahsedersem, aynı duruma düşen arkadaşların faydalanması mümkün olacaktır.

   Yaptığım bir projede yer alan buton ve sensörlerden gelen sinyalleri algılama işlemi yapmıştım. Şöyle ki daha öncelerde fast_io komutunu kullanıp verim alamadığım projelerim vardı. Yine bu projede de kullanmadım. Buton ve sensörlerden pull-down üzerinden bilgi alıyordum. Ana program başlangıcına denetleyicide bulunan bütün portları lojik 0 ile dolduran bir iki komut yazdım. Sürekli 1 bilgisi gelen sensör tabi lojik 0 ile karşılaşınca kısa devre oluyor. Fakat bu durumda sistem gayet sağlıklı bir şekilde çalışıyor ve denetleyici  800mA akım çekiyor.
   Port yönlendirme işlemlerini yaptıktan ve program başında yer alan bütün çıkışları 0 yap komutlarını kaldırdıktan sonra denetleyicinin çektiği akım 60mA 'e düştü. :) Dolayısıyla varolan can sıkıcı ısınma yok oldu. 
  Aslında küçük gibi görünen bir yazılımsal hata can sıkıcı durumlara sebep oluyor. Son olarak giriş bilgisi aldığınız portu hiçbir zaman tamamıyla 0 veya 1(girişin pull-up veya pull-down olma durumuna göre) bilgisi yüklemeyiniz.

CCS C için örnek port yönlendirme işlemi

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include 
#use delay(clock=xM)
#fuses xt,nowdt //...
#use fast_io(a)


Void main(){
setup_timer_1(T1_DISABLED); // vs.
//...
//...  Dahili modül ayarları
//  Ardından;
set_tris_a(0b00000001);  // A portunun 0. biti giriş diğer bitler çıkış olarak ayarlandı.
 
 For(;;){
 ///...///
  }
}
ELEKTRO ÇAVUŞ
Ana sayfa | Hakkımda | İletişim | Sosyal platform
ELEKTRO ÇAVUŞ2012 | elektrocavus.com