zamanlı çalıştırmada sorun nerde ?

tatavi

Üye
Katılım
1 Eki 2009
Mesajlar
17
Puanları
1
Yaş
49
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:eek:n
3power off timer:eek:n
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 saolsun 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
 
22 pf ile 100nf bacaklarını düzelttim ama genede sonuç aynı
 
Koçum mikrodenetleyicinin besleme uçları nerde :)

pic16f628apinoutdip18.gif


5 nolu bacağı - ye, 14 nolu bacağı ise +5v 'a bağla ;)

ve 22p lık kapasitörleri nasıl bağladığın net görünmüyor. Bir bacağını kristalin devamını diğer bacağını ise direk - ye gir, diğer kapasitör içinde aynısını yap. 100nF ı ise besleme girişine ( + ile - arasına ) koy sen.
 
resimde 22 pf nin baglantısını düzelttim 100nf yi ise dediğin gibi düzelttim geriye besleme baglantısı kaldı onuda bir halledebilirsem sonucu yazarım hemen
 
resimde 22 pf nin baglantısını düzelttim 100nf yi ise dediğin gibi düzelttim geriye besleme baglantısı kaldı onuda bir halledebilirsem sonucu yazarım hemen

Hadi bakalım bekliyorum sonucunu. Ben ilk LED i PIC ile yaktığımda yarım saat izlemiştim :D
 
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


tam 15 kere çalıştırıp seyrettim kardeşim :)
 
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


tam 15 kere çalıştırıp seyrettim kardeşim :)

Ellerine sağlık koçum ;) Keyfin ve elektronik tutkun bol olsun.
 

Yeni mesajlar

Forum istatistikleri

Konular
127,964
Mesajlar
913,940
Kullanıcılar
449,610
Son üye
cagriaytmz

Yeni konular

Geri
Üst