pic16f877 hiç yanıt vermiyor

Başlatan mstfhrgl, 15 Mart 2013, 01:50:33

mstfhrgl

bi süredir 16f628a ile uğraşıyordum. dahili osilatörü kullanıyordum daha basit ve rahattı. fakat bir proje için daha gelişmiş bir mikrodenetleyici gerekti. 16f877a aldım. test etmek için led yakıp söndürme uygulaması yaptım. çalışmayınca defalarca değiştirdim isis te test ettim. fakat pic hiç yanıt vermiyor. örneğin b portunu full 0 sonra 1 yapıyorum(gecikme ile) picten hiç 1 alamıyorum. konfigurasyonda HS , RC falan osilatör tipleriyle test ettim aynı. osilatör olarak 4MHZ kristal kullanıyorum. hiç cevap vermemesi çok garip değil mi, acaba pic mi bozuk ben mi hata yapıyorum.

not1: MCLR i (-)GND e bağladım.

not2: osilatörde kristale 22pf 2 kondansatör bağlamam gerekiyo sanırım ama şuan elimde olmadığı için farklı faradlarda kondansatörlerle denedim. sorun bundan kaynaklanıyo olabilir. ama hiç yanıt vermemesi  çok garip.

not3: pic programlayıcı ile sorunsuz olarak hex yükleyebiliyorum ve yüklediğim hex i  okuyorum. attığımla aynı hexi veriyor okuduğumda. yani pic arızalı değil gibi geliyor.

yardımcı olur musunuz?

ipek

MCLR yanlış yerde VCC + 5 volt'ta olacak ,istersen 1k...10k direnç ile bağlayabilirsin.

bunun 16F628 gibi esnek olan içinde osc'si falan olan modeli 16F887.

22pf neredeyse klişeleşmiş bir kapasite bu değeri aşmamanı tavsiye ederim eğer elinde yok ise hiç bir şey bağlamamanda fayda var...

mstfhrgl

pardon MCLR i +5 v a bağladım zaten yanlış yazmışım. direnç de koydum araya. kristale hiç kondansatör bağlamadan ya da osilatörsüz olarak test ediyorum. pic in çıkışları hep 0. pic e okuma ve yazma yapabiliyorum yani bozuk olmaması lazım.  programda da hata yok. TRISB = 0x00; yapıyorum ve 1000 ms lik delaylar ile PORTB yi 0x00 ve 0xFF yapıyorum. aynı programı 16f628a da denedim çalıştı. sorun başka ne olabilir sizce. bu arada 16f877 de dahili osilatör var mı?

ete

Icat çıkarmışsın. Nereden aklına geldi kondansatörsüz kristal bağlamak. Hiç data  sheetlere bakmak aklınıza gelmiyormu. Her şey orada gösterilmiş durumda. Lisan bilmeyede gerek yok şekiller var.
Her neyse, bu pic de dahili osc yok. Kristal kullanman gerekiyor. 4 mhz kristal yada rezonatör kullanman gerekir. Kristal bacaklarını 22pf ile gnd ye bağlamak zorundasın yoksa osilasyon başlamaz. Rezonatör kristalin kondansatörlü hali olup 3 bacaklıdır. Dıştaki bacaklar pic in kristal bacaklarına ortadaki ise gnd ye bağlanacaktır. 16f877A kullandı isen  A portu önce komparatör olarak açılır cmcon=7 ile iptal edersen analog pine döner. Onuda digital yapmak için Adcon1=7 komutunu vermen gerekir. A olmayan seride komparatör yoktur. 6 mhz kristale kadar sigorta ayarlarında XT_OSC seçeneği , üzerinde ise HS_OSC yi seçmen gerekir.
Mclr yi iptal edemezsin 4k7 ile pullup yaparsan iyi olur.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mstfhrgl

bugün 22pf lık kond. aldım. kristali de değiştirdim (4Mhz) . configüreasyonda XT osilatör olarak ayarladım. mikroc ile yazdığım programım:

void main() {
TRISB = 0X00;
PORTB = 0XFF;
while(1){
       Delay_ms(1000);
       PORTB = 0X00;
       Delay_ms(1000);
       PORTB = 0XFF;
}

}


ayarlar:

devre:







pic in b portlarından hiç 1 alamıyorum. pic bozuk olabilir mi?

mstfhrgl

aynı osilatör devresini (4mhz kristal 2 adef 22pf kond.) ve programı  XT osilatör seçerek 16f628a da denedim çalışıyor.

ete

Bu pic in 1 nolu pini MCLR  yani reset pinidir. Mesajımda belirtmiştim 4k7 direnç ile bu pini +5V ta bağlamalısın. Anlayacağın bu pin High da beklerse işlemci çalışır değilse reset konumunda kalır. Senin devrende 1 nolu pinde bir şey gözükmüyor.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mstfhrgl

sondan 2. resimde gözüktüğü gibi(diğer resimlerde çok net gözükmüyor) mclr i 4k7 direçle +5 volta bağladım :)

mstfhrgl

başka bir şey olabilr mi sizce sorun? başka bir 877 alıp deneyeyim mi?

cell

resimde 31 (-) ve 32 (+) nolu pinlerdeki besleme ucları boşta onları kontrol edermisin.

Maxim

Alıntı yapılan: cell - 16 Mart 2013, 07:02:52
resimde 31 (-) ve 32 (+) nolu pinlerdeki besleme ucları boşta onları kontrol edermisin.


aynen bağlantılar eksik..

ayrıca pic 16F877 mi ? 877A mı ? arada fark var.
bakın ete hoca yukarıda ne yazmış
16f877A kullandı isen  A portu önce komparatör olarak açılır cmcon=7 ile iptal edersen analog pine döner.
Onuda digital yapmak için Adcon1=7 komutunu vermen gerekir. A olmayan seride komparatör yoktur.


son olarak kristal öyle 1 karış uzun uzun kablolarla kullanılmaz
kristali direk ilgili ayakların hemen yanına kablo kullanmadan takın breadboarda

polleme

877'nin iki gnd ve iki vcc ucu var, dördünü de bağlamak gerekiyor, başıma geldi.

mstfhrgl

herşeyi dediğiniz gibi yaptım(mclr +5v'a 4k7 direnç ilebağladım , 4mhz kristali kablo ile uzatmadan 22pflık 2 kond. ile birlikte, 11 ve 32. pileri +5V'a ve 12 ve 31. pinleri - ye bağladım, A portunu hiç kullanmama rağmen  CMCON = 0x07 ve  ADCON1 = 0x07 yaptım, bağlantıları defalarca kontrol ettim, breadbord un diğer tarafını kullandım). fakat hiç bi şekilde çıkış alamıyorum. yeni bir pic almadan son defa sorayım dedim. sorun nerede olabilr?

FEHMİ_ASM

#13
Arkadaşım bir ihtimal, bread-boardın üst pozitif hattının bir kısmı enerji alamıyor olabilir. Bread boardlarda, üst ve alt pozitif hatlar, bread boardın uzunluğu boyunca ikiye bölünmüştür, yani boardın sol yarısı + alırken, sağ tarafı normalde almaz, buraya jumper atman lazım.  Burayı kontrol et.  Ayrıca mclre nin 1 nolu pinde olduğundan emin misin? Resimlerin bazılarında hiç de öyle değil gibi gözüküyor.
Bir de kodlarının tamamını verirsen iyi olur.