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ış.
Butonun sağlamlığından emin misiniz ?
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...
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.
#fuses ayarlarina mclr yi ekleyerek deneyin derim.
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ş.
Sorun çözüdüde. XT mi yapacam ben HS mi ?
4MHz iki pinli kristal var bende.
Xt oluyor