hpwm hakkında yardım

Başlatan efor, 22 Haziran 2012, 14:38:41

efor

merhaba hocam.

16f628a ile donanımsal pwm üretmem lazım. sizinde derslerinizden bakarak birşeyler yapmaya çalıstım fakat kafam karıstı biraz.

buton ile duty ayarlamaya çalıstım fakat olmadı. yanlış yada eksık yerlerm varsa yardım edebilirmisiniz?

hocam birde bunu 16f628A  olarak derledigim zaman osc hatası verıyor


 @ DEVICE pic16F628
@ DEVICE pic16F628, WDT_off
@ DEVICE pic16F628, PWRT_On
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_off
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
PORTA=%00000001:TRISA=0
PORTB=0:TRISB=0
CMCON=7
T2CON =%00000100   
PR2=49

HAM VAR WORD
DUTY VAR BYTE                       

CCP1CON.2=1 
CCP1CON.3=1

DUTY=1
GOSUB AYAR





MENU:

IF PORTA.0=0 THEN DUTY=DUTY+1:PAUSE 200:GOSUB AYAR

IF DUTY=100 THEN DUTY=1

GOTO MENU




AYAR:

HAM=(49+1)*4*(DUTY/100)

CCP1CON.4=Ham.0
CCP1CON.5=Ham.1
CCPR1L=Ham>>2   

ete

Programda AYAR kısmında Return eklenmemiş.
Baktım çalışıyor. Buton kısmında Pause 200 çok olmuş onu 20 yaptım. Böylece hızlı değişmeyi görebildim.

Ete
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_off
@ DEVICE pic16F628A, PWRT_On
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_off
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

PORTA=%00000001:TRISA=0
PORTB=0:TRISB=0
CMCON=7
T2CON =%00000100   
PR2=49

HAM VAR WORD
DUTY VAR BYTE                       

CCP1CON.2=1 
CCP1CON.3=1

DUTY=1
GOSUB AYAR
DUTY=50:GOSUB AYAR

MENU:

IF PORTA.0=0 THEN
   DUTY=DUTY+1   
   PAUSE 20:
endif   

IF DUTY=100 THEN DUTY=1
GOSUB AYAR
GOTO MENU


AYAR:

HAM=(50)*(DUTY/25)

CCP1CON.4=Ham.0
CCP1CON.5=Ham.1
CCPR1L=Ham>>2   
RETURN


efor

hocam eklerken return kısmını almamıs normalde koydum.

programı bende bıraz ugrastım yaptıgınız duzenlemeler gıbı yaptım calıstırdım fakat 16F628A için yaptıgım zaman derleyemiyorum. daha önceden çalısan programlarda şimdi aynı hatayı vermeye başladı


undefined symbol  'INTRC_OSC_NOCLKOUT'

şeklinde her programda hata verıyor. microcode de bi hatamı var ayarları felanmı oynanmıs hocam ?

ete

Derlenirken PBP M16F628A.INC isimli dosyayı kullanırç
PBP klasöründe INC diye bir klasör daha vardır . Orada M16F62XA.INC dosyasını MCS içinde yükle bak bakalım sigorta ayarlarında söylediğin komut varmı yokmu. Yada aynı yere  M16F62X.INC dosyasınıda yükle ikisini karşılaşır.

Ben hemen yükledim ve baktım. Zaten baş taraflarda yer alıyor .
M16F62x.INC dosyasında şu satırlar var;
INTRC_OSC_CLKOUT equ    3FEC0011h       ; XX XXXX XXX1 XX01
INTRC_OSC_NOCLKOUT equ  3FEC0010h       ; XX XXXX XXX1 XX00
INTRC_OSC       equ     3FEC0010h       ; XX XXXX XXX1 XX00

M16F62XA.INC dosyasında ise
INTOSC_OSC_CLKOUT equ   3FEC0011h       ; XX XXXX XXX1 XX01
INTRC_OSC_NOCLKOUT equ   3FEC0010h       ; XX XXXX XXX1 XX00
INTOSC_OSC_NOCLKOUT equ   3FEC0010h       ; XX XXXX XXX1 XX00
satırları mevcut
gördüğün gibi her ikisinde de istenilen satır mevcut
Seninkinde sanırım bir şekilde silinmiş.

Ete

Powered by EzPortal