pic programı ve arıza

Başlatan styx75, 02 Nisan 2013, 12:00:14

styx75

selam arkadaşlar,,pic programlamaya yeni başladım ve pbp dilinde ilerliyorum
benim sorunumu kısaca özetlemek istiyorum..şimdi kullandıgım sistemler şöyle deka v5 programlama ve deneme kartı, microcode derleyici..başıma gelenler ise şöyle,,yazdıgım bir proramı birkaç defa denedikten sonra ilaveler yaparak tekrar pic yazdırmak istedim pic e yazdırma sonunda hata mesajı aldım (derleyicide hata görünmemişti) ve  picin hafızasını silmek için deneme yaptıgım zaman pic e ulaşılamadıgına dair hep hata aldım ,3 tane 16f628a yı heba ettinden sonra buraya yazmaya karar verdim:)...deneyimli arkadaşlardan yardım bekliyorum..ve pic programlama işinde bu tip arızalara sebep vermemek için nelere dikkat edilmeli ,,bu konuda yol gösterirseniz çok sevinirim..

ayrıca program aşagıdaki gibidir değerlendirirseniz çok sevinirim
TrisA=255
Trisb=0
'------------------------------------------------------------------------------------------------------------
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_ON             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'---------------------------------------------------------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'-------------------------------------------------------------------
USTD1 VAR WORD
ALTD1 VAR WORD
USTD2 VAR WORD
ALTD2 VAR WORD
USTD3 VAR WORD
ALTD3 VAR WORD
GECIKME VAR WORD
SEC VAR BYTE 
GECIKME=10
SYMBOL SECTUS=PORTA.0
SYMBOL ASAGI=PORTA.1
SYMBOL YUKARI=PORTA.2
PORTB=0
SEC=0
'----ANA DÖNGÜ----
BASLA:
   IF SECTUS=0 THEN
   SEC=1
   GOSUB PROG1
   WHILE SECTUS=0
   WEND
   ENDIF 
   END
'-----ALTPR---
PROG1:
  R:
  PAUSE 200
  USTD1=2500
  ALTD1=2
  HIGH PORTB.0
  PAUSE GECIKME   
  GOTO KADEME1
  KADEME1:
  HIGH PORTB.0
  PAUSEUS USTD1   
  LOW PORTB.0
  PAUSEUS ALTD1
  USTD1=USTD1-2
  ALTD1=ALTD1+2
  IF USTD1<2 THEN
  USTD1=2
  ENDIF
  IF ALTD1>2500 THEN
  ALTD1=2500
  ENDIF
  IF ALTD1=2500 THEN G1
  GOTO KADEME1
  G1:
  PAUSE 200
  PORTB.0=0
  USTD2=2
  ALTD2=2500
  LOW PORTB.1
  PAUSE GECIKME
  GOTO KADEME2
  KADEME2:
  LOW PORTB.1
  PAUSEUS ALTD2   
  HIGH PORTB.1
  PAUSEUS USTD2
  USTD2=USTD2+2
  ALTD2=ALTD2-2
  IF USTD2>2500 THEN
  USTD2=2500
  ENDIF
  IF ALTD2<2 THEN
  ALTD2=2
  IF ALTD2=2 THEN G2
  ENDIF
  GOTO KADEME2
  G2:
  PAUSE 200
  USTD1=2500
  ALTD1=2
  HIGH PORTB.1
  PAUSE GECIKME   
  GOTO KADEME3
  KADEME3:
  HIGH PORTB.1
  PAUSEUS USTD1   
  LOW PORTB.1
  PAUSEUS ALTD1
  USTD1=USTD1-2
  ALTD1=ALTD1+2
  IF USTD1<2 THEN
  USTD1=2
  ENDIF
  IF ALTD1>2500 THEN
  ALTD1=2500
  IF ALTD1=2500 THEN B1
  ENDIF
  GOTO KADEME3
  B1:
   PAUSE 200
   PORTB.1=0
  USTD2=2
  ALTD2=2500
  LOW PORTB.1
  PAUSE GECIKME
  GOTO KADEME4
  KADEME4:
  LOW PORTB.2
  PAUSEUS ALTD2   
  HIGH PORTB.2
  PAUSEUS USTD2
  USTD2=USTD2+2
  ALTD2=ALTD2-2
  IF USTD2>2500 THEN
  USTD2=2500
  ENDIF
  IF ALTD2<2 THEN
  ALTD2=2
  IF ALTD2=2 THEN B2
  ENDIF
  GOTO KADEME4   
  B2:
  PAUSE 200
  USTD1=2500
  ALTD1=2
  HIGH PORTB.2
  PAUSE GECIKME   
  GOTO KADEME5
  KADEME5:
  HIGH PORTB.2
  PAUSEUS USTD1   
  LOW PORTB.2
  PAUSEUS ALTD1
  USTD1=USTD1-2
  ALTD1=ALTD1+2
  IF USTD1<2 THEN
  USTD1=2
  ENDIF
  IF ALTD1>2500 THEN
  ALTD1=2500
  IF ALTD1=2500 THEN F
  ENDIF 
  GOTO KADEME5
  F:
  PAUSE 200
  PORTB.2=0
  USTD2=2
  ALTD2=2500
  LOW PORTB.2
  PAUSE GECIKME
  GOTO KADEME6
  KADEME6:
  LOW PORTB.0
  PAUSEUS ALTD2   
  HIGH PORTB.0
  PAUSEUS USTD2
  USTD2=USTD2+2
  ALTD2=ALTD2-2
  IF USTD2>2500 THEN
  USTD2=2500
  ENDIF
  IF ALTD2<2 THEN
  ALTD2=2
  IF ALTD2=2 THEN R
  ENDIF
  GOTO KADEME6
  IF SEC=1 THEN PROG1
  RETURN   
 

saygılar....

ete

Programında açılış gecikmesi yok. BASLA satırından evvel PAUSE 500 şeklinde bir açılış gecikmesi uygula.
Elbette bu eksiklik pici bozmaz ama gecikme gerekli olan bir komut ve eklemende yarar var.

Bir konuya dikkatini çekmek isterim. Basic de program satır takip eder. Bir sonraki satıra gitmek için Goto bir sonraki satır demen gerekmiyor. O zaman bütün satırların sonuna goto birsonraki demen gerekirdi değilmi.
Sen bunu bir çok yerde yapmışsın. Bir tanesini göstereyim ki anla bu kusurunu.
PAUSE GECIKME   
  GOTO KADEME1
  KADEME1:
  HIGH PORTB.0
Yukarıdaki satırlarda GOTO KADEME1 satırından sonra zaten KADEME1 geliyor. Oraya sen Goto Kademe demesende o zaten başka yere gitmeyecek Kademe1 e gidecek.  Bu ve benzeri diğer komutları programdan çıkart.
Sorunun asıl kaynağını bilemiyorum. Programda şayet MCLR_OFF olsa idi bu tür sorunların olması normal olabilirdi. Ama MCLR_ON gözüküyor. Bu ise programın çalışması için MCLR pininde Pullup direncinin olması gerekir. Programlayıcında bu yoktur umarım. Şayet deney boardının kendi programlayıcısı var ise ve buda normal işlemciyi taktığın yerden pici programlıyor ise muhtemelen MCLR de pullup direnci var demektir. Şayet durum böyle ise eksik olan açılış gecikmesi sorunu ortadan kaldırabilir.
Başkada bir sorun yok zaten.

Ete



styx75

ete ilgin için teşekkür ederim,öncelikle
programlama ve deneme kartım hibrit pici progranladıktan sonra çıkarmadan üzerinde deneyebiliyorum,,, pic prog deka v5  ve evt mclr ucunun bağlı oldugu pin pull up yapılmış durumda
bu durumda nasıl bir yol izlememi tavsiye edersin..

ete

Söylemişim zaten ne yapman gerektiğini, "pullup direnci var demektir. Şayet durum böyle ise eksik olan açılış gecikmesi sorunu ortadan kaldırabilir."

Ete

İlyas KAYA

Sayın ETE ye ek olarak PIC lerin arızalandığını düşünmüyorum. Kendi kendine çalışıp programlamayı engelleyebilir.

Brenner da bu sorunu çok yaşadım. 16f628 'i ilk seferde programlarken ikinci seferde programlamıyordu.

Şuan D128 programlayıcı kullanıyorum ve daha önceki atmadığım tüm PIC'lerin çalışır vaziyette olduğunu görüyorum.

Sanırım sizinde programlayıcı ile ilgili bir sıkıntınız var.Dilerseniz yakınınızda farklı bir programlayıcısı olan birinde PIC'i deneyin ve silip sonra kendi kartınızda deneyin.

Deney kartınızı aldığınız yer ile yada üreticisi ile de görüşebilirsiniz. Belki böyle bir sorun vardır ve düzeltme yayınlamışlardır. Düzeltme bazen bir kondansatör eksikliği ile de olabiliyor.

Hatanın bir resmini eklerseniz bir de biz görelim..

Saygılarımla.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

styx75

sayın ilker bey teşekkür ederim
tavsiyenizi deerhal yerine getirecegim

styx75

evet arkadaşlar başka bir programlama kartı ile pic lerin hafızalarını silip yeniden kullanılır hale
getirdim,,
hepinize çok teşekkürler,,
nasıl bu hale geldi ama anlayamadım:)

greatgonzo

benzer sorunu bende brennerle yaşadım ve 2 tane 16f88 yalan oldu gibi. İlginç biçimde programlandıkta sonra bu çipin veri tabanında olmadığına ilişkin hatayla beraber tanımıyor. Ben hep yazdığım kodun (wdt ile 500ms de bir uyanıp lede toggle yapıyordu arta kalan zamanda ise sürekli uyuyordu) sebep olduğunu düşündüm...

İyi çalışmalar.

Powered by EzPortal