pickit2 delirtti

Başlatan kado17, 13 Ağustos 2016, 11:09:40

kado17

merhaba arkadaşlar pickit2 programlayıcı kullanıyorum k128 çok eski bir programlayıcı ile 12f675 programı atıyoruz devre normal çalışıyor ama aynı hex dosyasını pickit ile attığımızda devre çok alakası olmayan şekilde saçma çalışıyor nedeni nedir acaba bunun çözemedim yardımcı olurmusunuz.


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 11.01.2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
'—————————————————————–
@ DEVICE pic12F675 'işlemci 12F675
@ DEVICE pic12F675, WDT_ON   'Watch Dog timer açık
@ DEVICE pic12F675, PWRT_ON  'ower on timer açık
@ DEVICE pic12F675, PROTECT_OFF  'Kod Koruma kapalı
@ DEVICE pic12F675, MCLR_off            'MCLR pini kullanılMIYOR.
@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'______________________

DEFINE OSCCAL_1K1  'bu  komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
DEFINE OSC 4
DEFINE ADC_BITS 10  'ADCIN resolution  (Bits)
DEFINE ADC_SAMPLEUS 10 'ADC sampling time (uSec)
CMCON = 7
VRCON = 0
ANSEL =%00010001
ADCON0=%10000001
GPIO=0
TRISIO=%00001011
WPU=0

        ANSEL.0 = 1                  ' Set AN0 (GPIO.0) as analaog input
        ANSEL.1 = 0                  ' Set AN1 (GPIO.1) as Digital input
        ANSEL.2 = 0                  ' Set AN2 (GPIO.2) as Digital  input
        ANSEL.3 = 0                  ' Set AN3 (GPIO.3) as Digital  input

HAM VAR WORD
x var byte : x=0


MAIN:

IF GPIO.3=0 THEN GOSUB KONTROL

SARJ:   
adcin GPIO.0,HAM : pause 10

IF GPIO.1=0 THEN   
   
    IF HAM<715 THEN
        GPIO.5=1 : PAUSE 500
        GPIO.4=1 : PAUSE 500
        GPIO.2=1 : PAUSE 500
        GPIO.5=0 : GPIO.4=0 : GPIO.2=0 : PAUSE 500
        GOTO SARJ
    ENDIF
   
    IF HAM>714 AND HAM<812 THEN
        GPIO.5=1 : GPIO.4=1 : PAUSE 500
        GPIO.2=1 : PAUSE 500
        GPIO.5=1 : GPIO.4=0 : GPIO.2=0 : PAUSE 500
        GOTO SARJ
    ENDIF
   
    IF HAM>811 AND HAM<850 THEN
        GPIO.5=1 : GPIO.4=1 : GPIO.2=1 : PAUSE 500
        GPIO.5=1 : GPIO.4=1 : GPIO.2=0 : PAUSE 500
        GOTO SARJ
    ENDIF
   
    IF HAM>849 THEN
        GPIO.5=1 : GPIO.4=1 : GPIO.2=1 : PAUSE 500
        GOTO SARJ
    ENDIF
ENDIF

IF HAM<688 THEN
    TOGGLE GPIO.5 : PAUSE 500
    GOTO MAIN
ENDIF

GPIO.2=0 : GPIO.4=0 : GPIO.5=0
   
GOTO MAIN
END
 
KONTROL:

IF HAM>810 THEN
   GPIO.5=1 : GPIO.4=1 : GPIO.2=1 : GOTO SON 
ENDIF

IF HAM>715 THEN
   GPIO.5=1 : GPIO.4=1 : GPIO.2=0 : GOTO SON     
ENDIF

IF HAM<716 THEN
   GPIO.5=1 : GPIO.4=0 : GPIO.2=0 : GOTO SON
ENDIF

SON:
PAUSE 3000
GPIO.2=0 : GPIO.4=0 : GPIO.5=0
RETURN
GOTO MAIN 

ete

Programda o kadar çok Pause 500  varki normal çalışmasını beklemek haksızlık olur.
Programda;
ANSEL =%00010001
komutu altında ayrıca;
        ANSEL.0 = 1                  ' Set AN0 (GPIO.0) as analaog input
        ANSEL.1 = 0                  ' Set AN1 (GPIO.1) as Digital input
        ANSEL.2 = 0                  ' Set AN2 (GPIO.2) as Digital  input
        ANSEL.3 = 0 
komutları yer alıyorki yukarıdaki komut zaten aynı işi yapıyor. Neden bu sonrakiler ilave edilmiş. Onları silmek lazım.
İlk ANSEL komutuna bakınca GPIO.4 pini anolog olarak ayarlanmış gözüküyor. Ama program içinde aynı pin Output hemde digitial kullanılmaya çalışılıyor. Bunlar hep yanlış işler.
Bütün Ansel komutlarını silip yerine ANSEL=%00000001 yazmak daha doğru olur.

Define komutlarında ADC CLK ayarı verilmemiş.
DEFINE ADC_CLOCK 1    ' ADC clock source  (Fosc/8)  eklenmesi gerekir.

Ayrıca DEFINE ADC_SAMPLEUS 10 ' ADC sampling time (uSec) verilen süre 20us verilmeli . Bu işlemcide örnekleme süresi 19,72us dir buna en uygun süre ise 20us olmalıdır. (DEFINE ADC_SAMPLEUS 20 ' ADC sampling time (uSec))

Son olarak bu işlemcide fabrikadan ayarlı bir OSCCON ayarı vardır. Bu ayar program hafızasının son adresi olan $3FFF adresine kayıt edilir. İşlemci programlanırken programlayıcılar bu OSCCON değerini önce o adresten okur ve yeni programla birlikte aynı yerine kayıt eder. İşlemciyi manuel ilerak silerseniz bu değerde silinir ve işlemci çalışamaz hale gelir.
Pickit2 bu OSCCAL değerini okuyamaz ise üst tarafta kırmızı renkli ikaz çıkartır no OSCCAL value şeklinde. Bana kalırsa asıl sebep bu olsa gerek. Ya yeni işlemci kullanacak yada Pickit2 ye silinen OSCCAL değerini buldurmanız gerekecektir. (tools menüsünde OSCCAL seçeneği ile)
Başkada bir şey olamaz. K128 programlayıcısı tam anlamı ile geri zekalı bişr programlayıcı olup Pickit2 ondan kat kat üstündür. K128 ile programlanınca çalışıyor demenize de pek inanasım gelmiyor. İşlemci ilk defa K128 ile programlanınca çalışabilir elbette. Çalışmayan halini K128 ile programlayın bakalım çalışacakmıdır önemli olan budur. OSCCAL değeri silinmiş ise kiminle programlarsan programla çalışmayacaktır. Taaki OSCCAL değerini yeniden hesaplattırıp yerine yazdırıncaya kadar elbette.

Ete




kado17

hocam allah razı olsun nezaman birşeye sıkışsam hemen yardımcı oluyorsunuz saol un varolun sadece birşey isteye bilirmiyim sizide uğrastırmak istemem ama code tagleri arasına  düzenleyip siteye yükleyebilirmisiniz oradan alıp deniyim çünki birkaç yerde kafam karıştı hata yapmak dahada karıstırmak istemiyorum işi

ete

Programı ve oluşturduğum hex dosyasını ilişikte veriyorum.
Dene bakalım. Programda sigorta ayarları 64 bit makinaya göre ve MPASM de derlenecek şekilde ayarlı.
Aşağıdaki gibi satırı kapatıp diğer sigorta ayarlarını açarsan 32 bit makinada derlenebilir.
; @ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF

Ete

kado17

#4
denicem hemen hocam

kado17

çalıştı hocam mükemmel yine herzamanki gibi sorunum çözüldü emeğinize sağlık cok saol hocam

kado17

hocam yolladığın hex yazdım süper sorun yok derlemeye çalışdığımda hata alıyorum

@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF

alanı siliyorum derleyip hex cıkıyor ama yüklediğimde sapıtıyor

ete

derlersen seninkide çalışır. Nasıl derleneceği öğrenmen için aşağıdakilinki iyice okuman gerek.
http://etepic.com/index.php/topic,1687.0.html
Ete

kado17

teşekkürler yardımlarınız için linkteki dökümanı okudum hallettim sorun çözüldü hocam eline emeğine sağlık

Powered by EzPortal