16f883 pull-ups çalışmıyor

Başlatan frederic, 16 Aralık 2012, 15:31:00

frederic

Merhabalar,aşağıdaki satırı eklediğimde normal de tüm portun pull-up dirençlerinin aktif olması gerekirken,sadece B0 'daki direnç aktif oluyor.

port_b_pullups(TRUE);

Bu satırı şöyle değiştirdiğim de ise ;

port_b_pullups(0xff);

Tüm portlar akitf hale geliyor,sıkıntısız derleniyor.Yalnız pickit2 ile programı yükleyince ilk yükleme de sorun çıkmaz iken,2.yükleme de program memory failed hatası veriyor.

Tecrübelerinizi paylaşmanızı rica ederim.

tyildizak

Eski 87x serisinde portb pull-up'larının tamamı option register rbpu biti ile aktif hale getirilebiliyordu
88x serisinde buna ek olarak wpub registeri var ve bu register bitleri ile her pinin pull-up durumu tek tek belirlenebiliyor.

Programınızda tanım kısmında wpub registerini ve tek tek kuracaksanız bitlerini tanımlayın:

#byte   WPUB = 0x095
#bit    WPUB0 = WPUB.0
#bit    WPUB1 = WPUB.1
#bit    WPUB2 = WPUB.2
#bit    WPUB3 = WPUB.3
#bit    WPUB4 = WPUB.4
#bit    WPUB5 = WPUB.5
#bit    WPUB6 = WPUB.6
#bit    WPUB7 = WPUB.7



main fonksiyonu başında da pull-up durumda olmasını istediğiniz bitleri set edin:

void main()
{
     port_b_pullups(true);
     
     WPUB0 = 1;
     WPUB2 = 0;
     WPUB3 = 1;
     WPUB4 = 1;
     WPUB5 = 1;
     WPUB6 = 1;
     WPUB7 = 0;
     
     ......
     ......
     ......

}


kolay gelsin

frederic

Teşekkür ederim hocam,yaptım dediğiniz gibi aynen çalışıyor.