Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: veliusta - 05 Mayıs 2016, 15:04:19

Başlık: Ynt: 16F877A Reset ve Durma
Gönderen: veliusta - 05 Mayıs 2016, 15:04:19
16F877A Reset butonuna basıyorum fakat yeniden başlamıyor. Herşey kapanıp. Duruyor.
İsiste sorunsuz çalışıyor.

Sorun nerede olabilir?


#include <16f877A.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ılacak osilatör frekansı belirtiliyor.



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

void main ( ){
   setup_psp(PSP_DISABLED);        // PSP birimi devre dışı
   setup_spi(SPI_SS_DISABLED);     // SPI 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(0b11111111);      // B portu komple giriş
   set_tris_d(0b00000000);      // D portu komple çıkış
   set_tris_c(0b00000000);      // D portu komple çıkış

   
   port_b_pullups(1);       // B Portunda bulunan dahili pull-up özelliği aktif ediliyor
  output_d(0b00000000);          // A portu temizlendi.
  output_c(0b00000000);          // B portu temizlendi
   
   delay_us(10);            // Bekleniyor
   
      output_toggle(pin_D6);
      delay_ms(250);
      output_toggle(pin_D6);
      delay_ms(250);
      output_toggle(pin_D6);
      delay_ms(250);
      output_toggle(pin_D6);
      delay_ms(250);
     
      output_toggle(pin_D5);
      delay_ms(250);
      output_toggle(pin_D5);
      delay_ms(250);
      output_toggle(pin_D5);
      delay_ms(250);
      output_toggle(pin_D5);
      delay_ms(250);
   
      output_toggle(pin_D4);
      delay_ms(250);
      output_toggle(pin_D4);
      delay_ms(250);
      output_toggle(pin_D4);
      delay_ms(250);
      output_toggle(pin_D4);
      delay_ms(250);
     
      output_toggle(pin_C6);
      delay_ms(250);
      output_toggle(pin_C6);
      delay_ms(250);
      output_toggle(pin_C6);
      delay_ms(250);
      output_toggle(pin_C6);
      delay_ms(250);
     
      output_toggle(pin_C4);
      delay_ms(250);
      output_toggle(pin_C4);
      delay_ms(250);
      output_toggle(pin_C4);
      delay_ms(250);
      output_toggle(pin_C4);
      delay_ms(250);
     
      output_toggle(pin_D3);
      delay_ms(250);
      output_toggle(pin_D3);
      delay_ms(250);
      output_toggle(pin_D3);
      delay_ms(250);
      output_toggle(pin_D3);
      delay_ms(250);

      output_toggle(pin_D2);
      delay_ms(250);
      output_toggle(pin_D2);
      delay_ms(250);
      output_toggle(pin_D2);
      delay_ms(250);
      output_toggle(pin_D2);
      delay_ms(250);
     
      output_toggle(pin_D1);
      delay_ms(250);
      output_toggle(pin_D1);
      delay_ms(250);
      output_toggle(pin_D1);
      delay_ms(250);
      output_toggle(pin_D1);
      delay_ms(250);
     
      output_toggle(pin_D0);
      delay_ms(250);
      output_toggle(pin_D0);
      delay_ms(250);
      output_toggle(pin_D0);
      delay_ms(250);
      output_toggle(pin_D0);
      delay_ms(250);
     
      output_toggle(pin_C3);
      delay_ms(250);
      output_toggle(pin_C3);
      delay_ms(250);
      output_toggle(pin_C3);
      delay_ms(250);
      output_toggle(pin_C3);
      delay_ms(250);
     
      output_toggle(pin_C2);
      delay_ms(250);
      output_toggle(pin_C2);
      delay_ms(250);
      output_toggle(pin_C2);
      delay_ms(250);
      output_toggle(pin_C2);
      delay_ms(250);
     
      output_toggle(pin_C7);
      delay_ms(250);
      output_toggle(pin_C7);
      delay_ms(250);
      output_toggle(pin_C7);
      delay_ms(250);
      output_toggle(pin_C7);
      delay_ms(250);
     
while(1){ // Sonsuz döngü

if(input(pin_B7)==1){
output_high(pin_D6);
}else{
output_low(pin_D6);
}
   
if(input(pin_B6)==1){
output_high(pin_D5);
}else{
output_low(pin_D5);
}

if(input(pin_B4)==1){
output_high(pin_D4);
}else{
output_low(pin_D4);
}

     
   }
}




mesaj birleştirme:: 06 Mayıs 2016, 05:11:15

Sanırım devrede sahte direnç var. Entegreyi çıkartıp MCRL pinindeki 10K direnci ölçüyorum. 7.90K gösteriyor. Diğer dirençler normal.
Sorun Bundan olabilir mi?

Sorunu çözdüm:   Ben devreyi yıkamıştım. Butonun içine biraz su kaçmış.
Başlık: Ynt: 16F877A Reset ve Durma
Gönderen: SysTick - 05 Mayıs 2016, 15:21:14
Butonun sağlamlığından emin misiniz ?
Başlık: Ynt: Ynt: 16F877A Reset ve Durma
Gönderen: mehmet - 05 Mayıs 2016, 15:23:07
Alıntı yapılan: veliusta - 05 Mayıs 2016, 15:04:19


mesaj birleştirme:: 05 Mayıs 2016, 15:11:15

Sanırım devrede sahte direnç var. Entegreyi çıkartıp MCRL pinindeki 10K direnci ölçüyorum. 7.90K gösteriyor. Diğer dirençler normal.
Sorun Bundan olabilir mi?

Bu direnci devre üzerinde mi ölçüyorsunuz? Öyle ise
yanlış çıkma ihtimali olabilir. Ayrıca MCLR üzerindeki
direnç değerinin hassas değeri yok. Sadece +5V da
tutabilecek bir direnç yeterli.

Şemanızı ve kurduğunuz devrenin resmini de görsek
fena olmaz...

Ek: Sanırım portları yazılımda değiştirdiniz devrede
değiştirmediniz. Zira açıklamalar ile kodlar biraz uyumsuz...
Başlık: Ynt: Ynt: 16F877A Reset ve Durma
Gönderen: robomaster - 05 Mayıs 2016, 15:41:49
1) Program ilk çalışmaya başladığı zaman kısa bir gecikme (10ms) koyup sonucu bir söyleyin.
2) 1. de bir sonuç elde edemezseniz devre beslemesine bir 470uf veya 1000uf kapasitör koyup reset atın deneyin.
Sonuçları paylaşın.
Başlık: Ynt: Ynt: 16F877A Reset ve Durma
Gönderen: dursuncemal - 05 Mayıs 2016, 18:35:17
#fuses  ayarlarina mclr yi ekleyerek deneyin derim.
Başlık: Ynt: 16F877A Reset ve Durma
Gönderen: overlok - 05 Mayıs 2016, 18:59:33
Alıntı yapılan: veliusta - 05 Mayıs 2016, 15:04:19
Sorunu çözdüm:   Ben devreyi yıkamıştım. Butonun içine biraz su kaçmış.
Sanırım sorunu çözmüş arkadaş.
Başlık: Ynt: Ynt: 16F877A Reset ve Durma
Gönderen: veliusta - 05 Mayıs 2016, 20:09:19
Sorun çözüdüde. XT mi yapacam ben HS mi ?

4MHz iki pinli kristal var bende.
Başlık: Ynt: Ynt: 16F877A Reset ve Durma
Gönderen: tekosis - 05 Mayıs 2016, 21:03:45
Xt oluyor