Pic resetleniyor, Çözemedim ?? Çözüldü

Başlatan gazel, 23 Eylül 2006, 12:39:29

gazel

Merhaba Arkadaşlar

Belki basit bir soru olacak ama ben sorunu anlayamadım.

basit bir kod  yazdım ve devresini simulasyonda denedim gayet normal çalıştı.
fakat gerçek devre benim anladığım kadarıyla çok kısa aralıklarla kendini resetliyor.
program şu sekilde:
#if defined(__PCM__)
#include <16F873A.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=12000000)



void main()
{
long int x;
set_tris_b(0x00);
set_tris_c(0x00);
output_c (6);     // 7 segmenti seç
 while(1)
       {


output_b (6);     // 1 yaz
delay_ms(2000);   // 2 saniye bekle
output_b (102);   // 4 yaz
delay_ms(1000);   // 1 saniye bekle

       }


}


Kurduğum gerçek devrede sadece 1 yazdırıyor 4 hiç görünmedi.
Yaptığım devrede veya programda sürekli resetlenmesini sağlayacak ne olabilir

yalnayak

ben asm yaziyorum ama sana sunu soylemeliyim.ilk once donanimindan emin ol.forumda resetlemeyle ilgili bir cok arkadasin sorusuna cevap verildi.onlari oku ve donanimini destekle.beslemesini ,kondansatorunu...
wdt yi kapat vs vs.donanımdan emin olunca programindaki ufak tefek yanlışlıkları daha iyi doreceksin.kolay gelsin.
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

zafzaf82

#use delay(clock=12000000,RESTART_WDT)

yazarak bi dene. Belki sorun çözülebilir.
Birde, umarım Displayleri transistörle sürmüşündür. :D
Kolay gelsin...
Mikroişlemci bi araçtır, amaç değil.....

CaFFeiNe

arkadaşın kodunda WDT kapalı gözüküyor
resetlenmenin bir sürü sebebi olabilir forumda araştırmanı tavsiye ederim
birde #fuse satırına NOBROWNOUT ekleyip bir denemeni öneririm

Subzero

Harici RESET pinine dikkat et, bi sorun olmadığından emin ol.
Bir de LCDyi devreden çıkarıp bi bak,
belki çektiğin akım vs. herhangi bi sorun olabilir.

gazel

Alıntı yapılan: "CaFFeiNe"arkadaşın kodunda WDT kapalı gözüküyor
resetlenmenin bir sürü sebebi olabilir forumda araştırmanı tavsiye ederim
birde #fuse satırına NOBROWNOUT ekleyip bir denemeni öneririm

NOBROWNOUT komutu ekleyince düzeldi.
fakat şimdi de bazen kararsız çalışıyor. bununla adc okutmaya çalıştım. mesela okuması gereken değer 15 ise (10 tabanında) gösterdiği değerler grafiği  şu şekilde oluyor.:


adc okuma pinine baktım kesinlikle değer değişmiyor. proteus simulasyonu zaten ne yapmaya çalıştığımı anlamış olacak ki onu yapıyor :) yani hiç hata vermiyor.

Yardımlarınız için Teşekkür ediyorum

Erol YILMAZ

Tmm işte besleme gerilimin oynuyor.
Onu düzeltmen lazım. Hem ADC hem de kilitlenme düzelecek bu sayede.

gazel

Bu arada Yazdığım adc programı aşağıda
void main()
{
long int x,deg,v1,v2,v3,l,a;
float val;

setup_adc_ports(AN0_AN1_VREF_VREF);
setup_adc(ADC_CLOCK_INTERNAL);
set_tris_b(0x00);
set_tris_c(0x00);
set_adc_channel( 0 );

 while(1)
       {
 x=read_adc();
val=0.19531*x;
 deg=val;
 v1=deg%10;
 deg=deg/10;
 v2=deg%10;
 v3=deg/10;


for(a=1;a<250;a++) yaz(v1,v2,v3);

       }

}

gazel

Alıntı yapılan: "Erol"Tmm işte besleme gerilimin oynuyor.
Onu düzeltmen lazım. Hem ADC hem de kilitlenme düzelecek bu sayede.

Beslemeyi 7805 ile 5 volta regüle ettim.devrede PIc yokken 5.02 Volt okuyorum, fakat devreye Pıc i koyunca 4.6 volt okuyorum. devrede herhangi bir kısadevre filan yok defalarca kontrol ettim. ledleri 500 ohmluk dirençlerle sürüyorum.

Erol YILMAZ

Çok dikkatli çizilmemiş bir pcb de 2 okuma arasında 5-10 LSB fark olması da anormal değil.  Bir de bu okuma sayısını artırıp ortalamasını alırsan gürültülerden çok fazla etkilenmez sonuç.

Erol YILMAZ

7805 in girişi   8 VB un altında sanırım...  Bu durumda LM2940 öneririm
Yada besleme gerilimini biraz artırmalısın.

gazel

Alıntı yapılan: "Erol"7805 in girişi   8 VB un altında sanırım...  Bu durumda LM2940 öneririm
Yada besleme gerilimini biraz artırmalısın.

Beslemesi 8.3V RMS köprü diyot ve 10 uF capasitörden sonra 8.3 dc olarak ölçtüm.  8-10 LSB sorun diil zaten en fazla 1 digit yalnış gösterir. bu ise 30 gösterirken bi bakıyosun 45, 50 filan yazıyor sonra tekrar 30 yazıyor.

gazel

Alıntı yapılan: "Erol"7805 in girişi   8 VB un altında sanırım...  Bu durumda LM2940 öneririm
Yada besleme gerilimini biraz artırmalısın.

Hocam haklıymışsın. beslemeyi farklı bi yerden 10 Vdc olarak verdim sorun kalmadı.
bu arada önerdiğin LM2940 datasheetene baktım. ordaki teknik bilgilerden ben anlayamadım. bunun çıkışıda sabit 5V mu?

Yardımın için Teşekkürler

gazel

Tekrar baktım da evet Çıkışı 5 volt.