S.a. arkadaşlar proteusta çalışan kodlar işlemciye atınca çalışmıyor. Genel tavsiyeleriniz nelerdir. Telefondan bağlandığım icin kodları atamadım. Kodlar proteusta çalışıyor ama 16f88 breadborda hiç tepki vermiyor. Internal osilatör kullandım pice sadece vdd gnd ve mclr bağlantısı yaptım. Dikkat etmem gereken hususlar nelerdir acaba. Teşekkür ederim.
MCLR yi sigortalarda kontrol edermisin..
Alıntı yapılan: ipek - 16 Şubat 2017, 20:47:50
MCLR yi sigortalarda kontrol edermisin..
mclryi kodlarla kontrol ettigimde bu kezde proteusta çalışmıyor onun icin programı atarken kontrolü dışardan olacak şekilde ayarlıyordum. Birde öyle deneyeyim yarın. Sagolun
kodlarinizi gorebilsek belki yardimci olabiliriz.
kodlar ve şemayı görürsek yardımcı olalım.
ustam dac ile ilgi yazılım ise gerçekte çalışmaz.simülasyonda çalışır.çalışmama sebebi kodların yanlıştır.sadece bu bir örnek.
Arkadaşlar kod ve sema ekliyemiyorum çok özür dilerim kodlar bilgisayarda ben cepten bağlanıyorum ama şöyle soyleyim basit bir led yakma söndürme bile olmuyor. Pic kit 2 ile sorunsuz atıyorum programı proteusta yanıp sonen led boarda olmuyor mclryi denedim olmadi. Başka pic denedim olmadi. Sabahtan beri en basit programları bile denedim olmadi boardda degistirdim. Yalnız bir ayrıntı picler bir kac yıldır kendi halinde duruyordu. Bir problem olurmu bundan dolayi. Gerçi pickit program atıyor ve okuyor
dirençleri kontrol et ustam
Alıntı yapılan: serkancetin - 16 Şubat 2017, 23:36:25
dirençleri kontrol et ustam
kendi yazdığım programı denemekten vazgeçip sadece led yakip söndürme yapıyorum onda da sadece led direnci var yani sorun sanırım direnclerde değil. Sanki problem sigorta ayarlarında gibi ama onlarda da bir kac değişiklik yaptım yine olmadi. Belki picler bozuktur.
__CONFIG _CONFIG1, _CP_ON & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_ON & _INTRC_IO
__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
Sigortaları bunlardır.
Ayrıca ;
OSCCON=%01101110
CMCON=7
adcon1=7
ansel=0
Yaparak deneyin.
Bunlarida denedim. Sonradan 16f88 değil 12f675 işlemci denedim oda olmadi acaba pickit mi bozuk diye düşünmeye başladım ama dediğim gibi oda yazıyor yazdığını geriye okuyor
programin akisinda wdt yi sifirliyormusun.? eger emin degil sen ; '_WDT_Off 'dene olmaz ise belemelerini iyice kontrol et. yinede olmaz ise kodlari gormekte fayda var.
@ __config _CONFIG1, _INTRC_IO & _CCP1_RB3 & _WDT_OFF & _PWRTE_ON & _MCLR_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_ON & _CP_OFF
@ __config _CONFIG2, _FCMEN_OFF & _IESO_ON
define OSC 4
OSCCON=%01111000
porta=0
trisa=0
TRISB=%00000001
OPTION_REG=%00000000
INTCON=%10010000
ANSEL=0
CMCON=7
Tik var word
deGer var byte
kayiT var byte
kayit =0
i var word
TMR1H = 0
TMR1L = 0 'Reset TMR1
'ON INTERRUPT GoTo KESME 'kesme oluşursa KESME adlı etikete git.
start:
portb.4=0
pause 1000
portb.4=1
pause 1000
goto start
disable
Kesme:
portb.4=1
pause 1000
intcon.1=0
resume
enable
end
Kod bu deneme amaçlı yaptığım bu kod bile çalışmıyor. Yalnız bugun sunu farkettim pic enerji üstündeyken gnd yi ayırdığım zaman portb.4 ten çıkış veriyor yani sadece vdd bağlı iken çıkış veriyor gndyi bağlayınca çıkış kesiliyor. Sanırım buda picin bozuk olduğunu gösteriyor.
devreyi neyin uzerinde calitiriyorsunuz. inteerup u iptal edip denermisiniz?
interrupt zaten iptal buraya iptal edilmemiş halini koydum breadboard üstünde deniyorum. Olmayacak sanırım. Denemediğim şey kalmadı. İlk defa böyle bir şey gördüm.
(https://s24.postimg.cc/5hlnyo49t/Ads_z.png) (https://postimg.cc/image/5hlnyo49t/)
asıl denediğim devre bu kodlarda bunlar alıcı ve vericiden oluşuyor.
verici
@ __config _CONFIG1, _INTRC_CLKOUT & _CCP1_RB3 & _WDT_OFF & _PWRTE_OFF & _MCLR_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF & _CP_OFF
@ __config _CONFIG2, _FCMEN_OFF & _IESO_ON
define OSC 4
OSCCON=%01111000
TRISB.0=1
TRISB.1=1
TRISB.3=0
PORTA=0:TRISA=0
PORTB.3=0
CMCON=7
OPTION_REG=%10000000
deGer var byte
'deGer var bit[7]
'deGer[0]=1
'deGer[1]=0
'deGer[2]=0
'deGer[3]=1
'deGer[4]=1
'deGer[5]=0
'deGer[6]=1
'deGer[7]=1
i var byte
T2CON =%00000101 'Bölücü 1/1 olarak verildi ve TMR2 aktif hale getirildi.
PR2=%11111001
'PWM-Peryot= (49+1) x 4 x ¼ x 1 =50 us ve F=1000/50 = 20 KHz PWM frekansı dır.
start:
' pause 10
if portb.0=0 then
while portb.0=0 : wend
deger=%11001100
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 30 '20000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15 '10000 uS
for i=7 to 0 step -1
if deger.0[i]=1 then
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 20 '14000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15
else
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 10 '8000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15
endif
next
i=0
endif
if portb.1=0 then
while portb.1=0 : wend
deger=%01010101
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 30 '20000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15 '10000 uS
for i=7 to 0 step -1
if deger.0[i]=1 then
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 20 '14000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15
else
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1
pause 10 '8000 uS
CCP1CON.2=0 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=0
pause 15
endif
next
i=0
endif
'goto start
'gOnder:
pAUSE 200
goto start
End
alıcı
@ __config _CONFIG1, _INTRC_CLKOUT & _CCP1_RB3 & _WDT_OFF & _PWRTE_ON & _MCLR_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _DEBUG_OFF & _CP_OFF
@ __config _CONFIG2, _FCMEN_OFF & _IESO_ON
define OSC 4
OSCCON=%01111000
porta=0
trisa=0
TRISB=%00000001
OPTION_REG=%00000000
INTCON=%10010000
CMCON=7
Tik var word
deGer var byte
kayiT var byte
kayit =0
i var word
TMR1H = 0
TMR1L = 0 'Reset TMR1
ON INTERRUPT GoTo KESME 'kesme oluşursa KESME adlı etikete git.
start:
if kayit =%11001100 then
PORTB.4 =1
endif
if kayit=%01010101 then
PORTB.4=0
endif
goto start
disable
Kesme:
portb.4=1
T1Con.0=1
while portb.0=0 : wend
T1Con.0=0
tik.highbyte=tmr1h
tik.lowbyte=tmr1l
tik=tik/1000
tmr1h=0
tmr1l=0
if tik>27 and tik<32 then
write 2,tik
for i=7 to 0 step -1
while portb.0=1 : wend
t1con.0=1
while portb.0=0 : wend
t1con.0=0
tik.highbyte=tmr1h
tik.lowbyte=tmr1l
tik=tik/1000
tmr1h=0
tmr1l=0
write 3,tik
if tik>18 and tik<22 then
kayit.0[i]=1
elseif tik>8 and tik<12 then
kayit.0[i]=0
else
pause 160
endif
'Reset TMR1
next
else
portb.4=0
endif
pause 100
write 0,kayit
intcon.1=0
resume
enable
end
proteusta sorunsuz iletişim kuruyor ama boarda gelince tık yok