zamanlayıcı denemesi sorunu

Başlatan tatavi, 08 Aralık 2010, 14:28:01

tatavi

merhabalar
yeni yeni pic ögrenmeye çalışıyorum basit oldugunu düşündüğüm bir devre kurmak istedim
16f628a kullanıldı c ile yazıldı program ledi tetik aldıgında 5 sn yakacak sonra 30 sn kadar bekleyecek tekrar 1sn yakacak ve tetik bekleyecek bu arada ilk tetikten sonra döngü bitene kadar yeni tetik alsa bile herhangi başka bir işlem yapmayacak
kodda bir sorun oldugunu düşünmüyorum (ben yazmadım daha ögreniyorum yavaşca)
isiste simulasyonda sorunsuz çalışıyor zaten arkadaşda devreyi kurmuş bana koddave devrenin çalışmasında  bir sorun olmadıgını bildirdi (kod aşagıdadır)
usb ile yukleyen brenner8 programlayıcı aldım clon tabiki nelkit adıyla satılıyor
kullandıgım dizüstü win7 64 bit işletim sistemli programlayıcıyı biraz zorluklada olsa tanıttım ayarlarını filan yaptım kalibrasyonunuda hallettim bir sorun oldugunu zannetmiyorum şu sebebden dolayı:
programlayıcının software ini açıp pici takmadan picin içindeki dosyayı kaydet dediğimde tek bir satırlık bir dosya kaydetti  daha sonra yuklediğimi düşündüğüm pici taktım ve içerigini kaydet dediğimde oluşturdugu dosyayı orjinal dosya ile karşılaştırdım aynısı oldugunu gördüm bu mantıkla sorun olmadıgını düşünüyorum 
velakin fuse ayarlarında biraz takıldım şöyleki :
harici osilaskop kullanıldıgından dolayı fuse ayarlarından xt yi seçtim
diğer ayarları şöyle

1 osilator: xt
2watchdogtimer:on
3power off timer:on
4master clear:enable
5brown out detect:enable
6low voltage program:disable
7data ee read project:disable
8code project .off

bu şekilde zaten pici tanıtıp hexi gösterdiğimde bu ayarlar otomatik olarak ayarlanıyor

besleme olarak 4.9 v 450 ma vdc adoptor kullandım ölçtüğümde ise 5.09 v 465ma oldugunu gördüm (sanırım bundan dolayı sorun yoktur elektronikciye sordugumda sorun olmayacagını söyledi en azından)

bunları guzel bir şekilde yaptım isisteki gibi devreyi board üzerine aynısının tıpkısını kurdum ek olarak 100nf koydum (koymamı tavsiye ettiler nedenini ögrendikten sonra bende ekledim )
ne yaptım isede çalıştıramadım herparçayı belki bozuktur diye defalarca değiştirdim her giriş çikişi
belki temassızlık vardır diye defalarca kontrol ettim malesef tık yok mutlaka bir yerlerde yanlışlık yapıyorum
diye düşünüyorum(gunlerdir)
bu kadar ugraştıktan sonra dışarıda yaptırmak istemiyorum artık lütfen nerde hata
yapıyorum söyleyin bitsin şu çilem :)
saygılarımla






c kodu

#include <16f628A.h>                             
#pragma fuses XT,NOWDT,NOPROTECT   
#pragma device adc=10
#pragma use delay (clock=4000000)
#type SIGNED, INT=16, LONG=32

#pragma byte PORTA    = GETENV("SFR:PORTA")
#pragma byte PORTB    = GETENV("SFR:PORTB")
#pragma byte TRISB    = GETENV("SFR:TRISB")
#pragma byte TRISA    = GETENV("SFR:TRISA")

#define role_on()    (PORTA |= 0x1)
#define role_off()   (PORTA &= ~0x1)

unsigned long bres;
unsigned int saniye;

#pragma int_timer0
void timer_ISR(){

   bres += 256;   

   if(bres >= 62500)   
   {
      bres -= 62500;   
      saniye++;
     
      if(saniye == 5)
         role_off();
      else if(saniye == 35)
         role_on();
      else if(saniye >= 36){     
         role_off();
         saniye = 0;
         disable_interrupts(int_timer0);
         clear_interrupt(int_ext);
         enable_interrupts(int_ext);
      }
     
   }
   
}

#pragma int_ext
void Ext0_ISR(){
   disable_interrupts(int_ext);
   saniye = 0;
   set_timer0(0);
   role_on();
   clear_interrupt(int_timer0);
   enable_interrupts(int_timer0);   
}

void main ()                                 
{   
   TRISA = 0x0;
   TRISB = 0x1;
   PORTA = 0;
   PORTB = 0;
   delay_ms (2) ;
 
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);
   ext_int_edge( L_TO_H );
   enable_interrupts(int_ext);
   enable_interrupts(GLOBAL);

   while(1){
     
   };
   
}

not:
pic olarak 16f628a ,16f628 ve 16f628 o4/p ile deneme yaptım sağolsun her elektronikci başka vermiş
buda olur diye herbirinden 3er tane denedim :)halimi siz düşünün artık


watchdog timer i off yaparakta denedim sonuç aynı halen


resimde 22pf lerin bacaklarını yanlış takmışım duzelttim ama sonuç aynı
100nf yide düzelttim hatta sonrasında çıkarttım gene çalışmıyor

iyildirim

Programa bakmadım. Resim flu, yanlış göermediysem sanki besleme de sorun var gibi. 16f leri çok bilmem ama 5 nolu bacak vss olmalı diye biliyorum. ama bir bağlantı göremiyorum. Sanırım besleme bağlantılarında sorun var. Birde MCLR sürekli low da duruyor. sanırım  mclr ye bağlı kahve kablo bir yana 5 nolu bacağa bağlanmalı

tatavi

problem çözüldü
hatalar 22 pf yanlış baglamışım ,100nf yi yanlış baglamışım en komiği pice besleme vermemişim
daha bir komiği breadboard ım bozuk muş barçalayınca içinden kısa devre yaptıran bakır hatlar çıktı fazladan
şu anda sorunsuzca devrem çalışmakta
onlarca acemi soruma sıkılmadan cevaplayan abilerime kardeşlerime sonsuz tesekkur ederim
saygılarımla