Nerede hata yapıyorum?

Başlatan FatihBAKIR, 10 Ocak 2012, 22:42:48

FatihBAKIR

Merhaba arkadaşlar,
Bugün hobi amaçlı PIC programlama öğrenmek için kitap, malzeme vs. aldım ve bütün akşam kitaptaki ilk örneği yapmak için uğraştım ama nedense çalışmadı.

Kitapta Verdikleri Devre Şeması:


Benim Kurduğum Devre: (Lehimde kendime güvenmediğim için breadboard\'a kurdum)



(11-12-13-14 bacaklarını 12-13-14-15 olarak takmışım sonradan düzelttim ama yine de olmadı)

Direnç ve kapasitörlerin değerlerinin doğru olduğuna eminim.

Kodları direk kitapta ne varsa geçirdim, doğru olduğuna eminim, PIC\'in içine de attığıma eminim, entegreden kodları okuttup karşılaştırıyorum elimdeki hex ile aynı çıkıyor. Entegreyi doğru taktığıma da eminim.

Devrede nereyi eksik bırakmışım / unutmuşum?

Bu arada kullandığım CCS C Kodu Aşağıda orada bir sorun olabilir mi?
Alıntı Yap#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=4000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_b(0x00);    // B portu komple çıkış olarak yönlendiriliyor

   output_b(0x00);        // B portu çıkışı komple sıfır yapılıyor.

   basla:               // Etiket ismi

   output_high(pin_b0);  // RB0 pini çıkışı lojik-1 yapılıyor
   delay_ms(500);        // 500 ms gecikme veriliyor
   output_low(pin_b0);   // RB0 pini çıkışı lojik-1 yapılıyor
   delay_ms(500);        // 500 ms gecikme veriliyor

   goto basla;           // basla etiketine dallanılıyor
}
Hata yapmış mıyım diye direk kitaptaki kodu kopyaladım yine de olmadı.

Flatron

kristali 12 ve 14 .bacaklara bağlamışsınız gibi geldi bana 13 ile 14  olması gerekiyor
kabloları böyle uzun kullanmayın mümkün olan en kısa bağlantılarla yapın.daha çok direnç kondansatörlerin ayaklarını kullanın


FatihBAKIR

Hocam PICnin tüm bağlantılarını kontrol ettim bir sorun göremedim.

Flatron

peki 21.bacak PICin kaç numaralı bacağının karşısındadır?

gevv

#4
kristal çok uzakta   kalmış  sorun olabilir direkt  entegrenin  bacaklarının olduğu bölüme takın    ayrıca  +5v   besleme  bacağından  şaseye karşı 100nf  bağlayın

Flatron

Hocam 21.bacağı 1 numaralı bacağın karşında gibi düşünmüşsünuz sanırım .Oysa 20 nolu bacağının karşısı 21 olarak kabul edilir

gevv

evet @Flatron  abim  doğru söylüyor kristal bağlantısıda sorunlu  14 ve  15 arasına bağlanmış  şemada  13-14  görünüyor

FatihBAKIR

Önerileriniz doğrultusunda sistemi tamamen baştan kurdum ama sonuç yine negatif ne yazık ki :(

Olabildiğince az kablo kullandım bu sefer.

Alıntı yapılan: gevv - 10 Ocak 2012, 23:12:07kristal çok uzakta   kalmış  sorun olabilir direkt  entegrenin  bacaklarının olduğu bölüme takın    ayrıca  +5v   besleme  bacağından  şaseye karşı 100nf  bağlayın
Tamam hocam kristali de oraya geçirdim, ama diğer dediğinizi anlayamadım nereye bağlayacağım?

Alıntı yapılan: Flatron - 10 Ocak 2012, 23:13:37Hocam 21.bacağı 1 numaralı bacağın karşında gibi düşünmüşsünuz sanırım .Oysa 20 nolu bacağının karşısı 21 olarak kabul edilir

Haklısınız hocam onu da düzelttim ama yine olmadı.

Flatron

Breadboard üzerinde 40 yazan yere yakın olan 22 pf lık kondansatörün boşta kalan 2 bacağını bir kablo ile birleştirip eksiye bağlamalısınız(Eğer varsada bu yarım resimde görülmüyor)

FatihBAKIR

Alıntı yapılan: Flatron - 11 Ocak 2012, 00:11:49Breadboard üzerinde 40 yazan yere yakın olan 22 pf lık kondansatörün boşta kalan 2 bacağını bir kablo ile birleştirip eksiye bağlamalısınız(Eğer varsada bu yarım resimde görülmüyor)

Orası da bağlı hocam resimde görünmemiş.

Flatron

son resimde 45 yazan bölgeyi boardu döndürüp o bölgeyi tekrar çekip gönderirmisiniz 12.pinde hata var gibi sanki
(şaşı oldum yaa ;D)

FatihBAKIR

#11
Alıntı yapılan: Flatron - 11 Ocak 2012, 00:31:40son resimde 45 yazan bölgeyi boardu döndürüp o bölgeyi tekrar çekip gönderirmisiniz 12.pinde hata var gibi sanki
(şaşı oldum yaa ;D)
Hemen hocam:

Valla yoruyorum sizi de ama kusura bakmazsınız inşallah :D 6 saattir falan bu aletle uğraşıyorum...

Üstteki yamuk olmuş biraz:

FatihBAKIR

Hocam çözdüm sanırım.
#include <16f877.h>     // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.

#fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD // Denetleyici konfigürasyon ayarları

#use delay(clock=20000000)   // Gecikme fonksiyonu için kullanılan osilatör frekansı belirtiliyor

#use fast_io(b) // Port yönlendirme komutları B portu için geçerli

/********* ANA PROGRAM FONKSİYONU********/

void main ()
{
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_timer_1(T1_DISABLED);     // T1 zamanlayıcısı devre dışı
   setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
   setup_adc_ports(NO_ANALOGS);    // ANALOG giriş yok
   setup_adc(ADC_OFF);             // ADC birimi devre dışı
   setup_CCP1(CCP_OFF);            // CCP1 birimi devre dışı
   setup_CCP2(CCP_OFF);            // CCP2 birimi devre dışı

   set_tris_b(0x00);    // B portu komple çıkış olarak yönlendiriliyor

   output_b(0x00);        // B portu çıkışı komple sıfır yapılıyor.

   basla:               // Etiket ismi

   output_high(pin_b0);  // RB0 pini çıkışı lojik-1 yapılıyor
   delay_ms(500);        // 500 ms gecikme veriliyor
   output_low(pin_b0);   // RB0 pini çıkışı lojik-1 yapılıyor
   delay_ms(500);        // 500 ms gecikme veriliyor

   goto basla;           // basla etiketine dallanılıyor
}

Kodu bu hale getirince yanmaya başladı ama kalıcı olarak yanıyor yanıp sönme yok, orasını da kendim halletmeye çalışayım bari :)

Çok teşekkür ederim yardımlarınız için.

Flatron


hawke

#14
programda #use delay(clock=20000000)  olarak yazılmıs ama sen  4mhz lik kristal kullanmıssın yanıp sönmeme sorunu burada olabilir parogramdan pek anlamam ama ben bunu farkettim
30 kupona alınmadı bu vatan

kudretuzuner

#15
Merhaba
PIC programlamaya yeni başlayan biri için,16F877A oldukça gelişmiş ve pin sayısı da çok olan bir PIC\'tir.Bu bakımdan sistemi tam anlamadan yaptım oldu,olmadı şeklinde öğrenmek yerine pin sayısı daha az ve de daha düşük frekanslı kristal ile çalışan PIC\'lerle başlamak bana göre daha doğru olur.Aşağıdaki linkte verdiğim dosyalar ile sıfırdan PIC programlamak için gerekli tüm bilgiler mevcut.Anlaşılmayan yer olursa tekrar yazın lütfen.Kolay gelsin.Not:Bordtaki deliklere sadece bir eleman takınız.Eğer  birkaç elemanı aynı deliğe takarsanız bordunuzun delikler genişleyip elemanı tutmaz hale gelir kısa zaman sonra da kullanılmaz.
 https://rapidshare.com/files/1096640038/ANTRAK1_ASM_BASLANGC.rar
KU

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın