| Yazar | Mesaj |
tilkisinan | | Tarih: 11.09.2008, 17:36 Mesaj konusu: 877ile 877A arasında ne fark var? | |
| arkadaşlar pic16f877 ile çok basit bir devre yaptım 1 led portb nin 1. bitine bağlı 1 sn yanacak 1 sn sönük kalacak tekrar yanacak pic basic de derledim micropro kullanarak k128 programmer ile 877 ye attım devre çalıştı. aynı programı 877a için derledim basic de 877a olarak pice yüklüyorum devre çalışmıyor. 877a yı okutuyorum hex 877a nın içind e ancak devre çalışmıyor yardım edermisiniz sorun ne olabilir teşekkürler.
-----------------------------------------------------
|
|
cturunc | | Tarih: 11.09.2008, 19:52 Mesaj konusu: | |
| bildiğin kadarıyla 877 ile 877A arasındaki fark 877A ya daha hızlı şekilde program yükleyebilmenizdir. normalde bir porgramı usb li bir pic programlayıcıdan 877 ye yüklemek 40-60 saniye sürerken; 877a ile bu işi 10 saniyede yapabilirsiniz. bunun dışında 877 için yazılmış programlar 877a'da da çalışırlar.
benzer bir hata ile karşılaşmıştım. sonradan sorunun bilgisayarımdaki 877a driverları ile ilgili olduğunu farkettim. programı 877'ye göre derleyip 877a ya yüklemeyi deneyin, sorun bir ihtimal buradan kaynaklanıyor olabilir.
bunun dışında 877a yı 20mhz lik kristalle çalıştırmaya çalışıyorsanız bu da sorun yaratabilir. 4mhz lik kristal deneyin.
|
|
tilkisinan | | Tarih: 11.09.2008, 20:25 Mesaj konusu: | |
| devreyi 10 mhz kristal ile çalıştırıyorum. k128 programlayıcı kullanıyorum ve 877 ye göre derlenen hex dosyasını 877A ya atmaya izin vermiyor.
|
|
cturunc | | Tarih: 11.09.2008, 20:39 Mesaj konusu: | |
| piyasada 20mhz ile çalışıyor diye satılan bazı 877a'lar o hıza yaklaşamıyor bile, bir de 4mhz kristal ile deneyin derim.
|
|
ta2mc | | Tarih: 11.09.2008, 22:12 Mesaj konusu: | |
| Üreticisinin ilgili dokümanı:
http://ww1.microchip.com/downloads/en/D...39591a.pdf
16F877'de bulunmayan fakat 16f877a'da olan iki register; CMCON ve CVRCON
16F877A için derleyeceğiniz kodun başına CMCON=7 yazarak analog girişleri iptal edip, dijital giriş olarak ayarlamanız gerekiyor. Kullandığınız derleyiciye uygun karşılığını kolayca bulabileceğinizi sanıyorum.
Kolay gelsin.
|
|
tilkisinan | | Tarih: 12.09.2008, 18:17 Mesaj konusu: | |
| CMCON=7 yazarak tümgiriş çıkışları digital kullanıyorum. ben bu işi anlamadım aceba benim derleyiciden kaynaklanıyor olabilirmi yada programmerden mı aceba? k128 ve micropro kullanıyorum aynı kodları basicde877 ye derliyorum çalışıyor.877a olarak derliyorum çalışmıyor. kafayı yicem :)
|
|
ta2mc | | Tarih: 12.09.2008, 18:24 Mesaj konusu: | |
| tilkisinan yazmış: ... aceba benim derleyiciden kaynaklanıyor olabilirmi yada programmerden mı aceba?...
Olabilir..
Belki, 16F877A için tanımlama dosyası, 16F877'ninki kopyalanıp ad değiştirilerek oluşturulmuştur..
Aynı şeyi, 16F84-16F84A veya 16F628-16F628A için ben de yapmıştım.. :)
|
|
ete | | Tarih: 12.09.2008, 19:25 Mesaj konusu: | |
| 16F877 de yalnızca ADC girişleri bulunmaktadır. Dolayısıyla bu picde default olarak açılan analog girişler ;
ADCON1=7 komutu verilerek bu girişler digitale çevrilirler.
16F877A da ise hem ADC girişleri hemde Comparatör girişleri mevcuttur. Dolayısıyla bu pici kullanırken pinleri digital kullanmak isterseniz hem ADCON1=7 hemde CMCON=7 komutlarını birlikte vermek zorundasınız.
Ete
|
|
tilkisinan | | Tarih: 12.09.2008, 21:43 Mesaj konusu: | |
| alt tarafta 877 için kodları verdiğim hali ile devre 877 de 10mhzkristal porta.5 ebağlı ledi yakıp söndürüyor.
derleyici pbp programmer micropro ve k128 usb programmer.
devre çalışıyor
@ devıce pic16f877
@ devıce pic16f877, wdt_on
@ devıce pic16f877, pwrt_on
@ devıce pic16f877, protect_off
@ devıce pic16f877, xt_osc
'-------------------------------------------------------------------------------
trısa=%00100000
trısb=1
trısc=1
trısd=1
trıse=1
adcon1=7
'cmcon=7
symbol led=porta.5 'yeşil led
basla:
high led
pause 1000
low led
pause 1000
goto basla
end
aynı şartlarda hiç kullanılmamış pic16f877a ya alttaki kodları atıyorum çalışmıyor.
kodları atıyor çünkü read dediğimde hexi okuyabiliyorum. sorun nerede ?
@ devıce pic16f877a
@ devıce pic16f877a, wdt_on
@ devıce pic16f877a, pwrt_on
@ devıce pic16f877a, protect_off
@ devıce pic16f877a, xt_osc
'-------------------------------------------------------------------------------
trısa=%00100000
trısb=1
trısc=1
trısd=1
trıse=1
adcon1=7
cmcon=7
symbol led=porta.5 'yeşil led
basla:
high led
pause 1000
low led
pause 1000
goto basla
end
|
|
ete | | Tarih: 13.09.2008, 07:09 Mesaj konusu: | |
| Her iki programında çalışmaması gerek. Zira Led ismini verdiğin PORTA.5 pinini giriş olarak ayarlamışsın.
TRIS registerlerinde 1 olarak verdiğin bitlere karşılık gelen pinler giriş pini olur. Sıfır verdiğin pinler ise çıkış pini olur.
Giriş pini dışarıdan pic'e dgital bilgi almaya yarar. Çıkış pinleri ise picden dışarı digital bilgi verir.
TRISA=%00100000 şeklindeki komut 5 nolu pini giriş yapar.
Sonra giriş yaptığın bu pini çıkış gibi kullanmışsın. Yani
HIGH LED
Pause....
LOW LED
hata burada
A portunu tamamını çıkış yap yani TRISA=0 komutunu ver ve her iki programı o şekilde çalıştır.
Ete
|
|
|