PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   [help] power control pwm module - pic18f4331 (http://www.picvietnam.com/forum/showthread.php?t=7664)

boydtbk 04-01-2011 09:11 AM

[help] power control pwm module - pic18f4331
 
Mình đang có rắc rối với con PIC18F4331 về phần điều khiển động cơ dùng chức năng POWER CONTROL PWM MODULE.
Mình có đoạn code sau, ko hiểu sao lại ko chạy, có cao thủ nào biết xin chỉ giáo với, thanks nhiều!

#define OSCILLATOR d'20000000'
#define PWM_TIMER_PRESCALE d'01'
#define PWM_FREQUENCY d'16000'

PTPER_VALUE = (OSCILLATOR/(4*PWM_FREQUENCY*PWM_TIMER_PRESCALE))-1


;================================================= ====
;=============== PCPWM CONFIGURATION ===================
;================================================= ====

CLRF TRISB ; Port B is output
CLRF LATB
CLRF PORTB

;PCPWM outputs initialized in independent mode.
;PWM<0:5> are enabled
CLRF PTMRH
CLRF PTMRL
CLRF PDC0L ;Clear all PWM duty cycle registers
CLRF PDC1L
CLRF PDC2L
CLRF PDC3L
CLRF PDC0H
CLRF PDC1H
CLRF PDC2H
CLRF PDC3H

MOVLW b'00000000' ;PWM timer is in free running mode(Edge aligned) with Fosc/4 input clock
MOVWF PTCON0 ; Postscale = 1:1 , Prescale = 1:1

MOVLW b'10000000' ; PWM Time base is ON
MOVWF PTCON1 ; PWM Time base count UP

MOVLW LOW(PTPER_VALUE) ; 20KHz = 0xFA ;20KHz of PWM frequency
MOVWF PTPERL ;16KHz = 0x137
;12KHz = 0x1A0
MOVLW HIGH(PTPER_VALUE)
MOVWF PTPERH

MOVLW b'01001111' ; PWM0 to PWM5 Enable
MOVWF PWMCON0 ; Independent mode

MOVLW b'00000001' ; Output overrides via the OVDCON register are synchronized to the PWM time base
MOVWF PWMCON1 ; 1:1 Postscale
; A Special Event Trigger will occur when the PWM time base is counting upwards
; Updates from Duty Cycle and Period Buffer registers are enabled

MOVLW b'00000000' ;No dead time inserted
MOVWF DTCON

MOVLW b'00000000' ;PWM<0:5> PWM Duty cycle on overide
MOVWF OVDCOND

MOVLW b'00111000' ; All PWMs = 0 on init
MOVWF OVDCONS

MOVLW b'10110011' ;FaultA = Over current,cycle by cycle mode
MOVWF FLTCONFIG ;FaultbB = Over voltage,cycle by cycle mode

MOVLW 0x00 ;Special event not used
MOVWF SEVTCMPL
MOVLW 0x00
MOVWF SEVTCMPH

Nhân tiện cho hỏi luôn, thanh ghi LAT như LATA. LATB,.. để làm gì ? Mình mới chuyển qua PIC18 nên chưa rõ lắm


Múi giờ GMT. Hiện tại là 08:31 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam