CHIPCAD KFT
9
PIC TANFOLYAM PWM 1/7
TERVEZÉSI FELADAT
3
4
:
A FELADAT EGY 5 kHz-ES FREKVENCIÁJÚ PWM JELET KIBOCSÁTÓ GENERÁTOR TERVEZÉSE. A PERÓDUSIDEJE A 200 µSEC PERÓDUSIDEJŰ JEL KITÖLTÉSÉNEK 1…200 µSEC TARTOMÁNYBAN KELL VÁLTOZNIA 1 µSEC -OS LÉPÉSBEN. AZ ADOTT KITÖLTÉS SZÁMÉRTÉKÉT SOROS VONALON KAPJA A GENERÁTOR.
200 MIKROSEC
A PWM periódusidejét a PR2 regiszter tartalma határozza meg. A frekvencia ennek reciproka. Mikor TMR2 regiszter tartalma megegyezik a PR2-ben lévő értékkel, a következők történnek: 1.TMR2 törlődik 2.CCP1 láb 1 állapotú lesz, (ha PWM kitöltés 0%, akkor CCP1 láb 0 marad.) 3.A PWM kitöltés értéke CCPR1L regiszterből CCPR1H regiszterbe másolódik. 4. A frekvencia beállításához csak TMR2 előosztóját használhatjuk! (ADATLAP!) Ennek értéke 1,4,16 lehet csak. PWM Period = [(PR2) + 1] * 4 * TOSC * (TMR2 Prescale) 8 MHz-es óra esetén TOSC=0.125 mikrosec 200=(x+1)*4*0.125*(1,4,16) 200=(x+1)*0.5*4 x=99 1-es előosztásnál PR2>256! , illetve 16-os előosztó választásával x nem lesz egész, vagyis a frekvencia nem lesz pontos.
CHIPCAD KFT
9
3
PIC TANFOLYAM PWM 2/7
PWM KITÖLTÉSI TÉNYEZŐJE
4
:
A PWM KITÖLTÉSI 10 BITES TÉNYEZŐJÉT A CCPR1L REGISZTERBE ÍRT 8 BIT (FELSŐ BITEK), ÉS CCP1CON<5:4> LEGELSÓ KÉT BIT) BITJEI HATÁROZZÁK MEG. AZAZ: [CCPR1L:CCP1CON<5:4>]. A KÖVETKEZŐ EGYENLET HASZNÁLHATÓ: PWM Duty Cycle = (CCPR1L:CCP1CON<5:4>) TOSC • (TMR2 Prescale Value) CCPR1L:CCP1CON<5:4> ÚJ ÉRTÉKEIT BÁRMIKOR ÍRHATJUK, A KITÖLTÉSI TÉNYEZŐ VÁLTOZTATÁSÁHOZ, DE CSAK ÚJ PERIÓDUS KEZDETEKOR KERÜL BEÍRÁSRA (KETTŐS PUFFERELÉS). PWM MÓDBAN CCPR1H CSAK OLVASHATÓ REGISZTER. VIGYÁZAT! HA A MAXIMÁLIS KITÖLTÉS 200 MIKROSEC, AKKOR 200= [CCPR1L:CCP1CON<5:4>] * 0.125 * 4 VAGYIS [CCPR1L:CCP1CON<5:4>] ÉRTÉKE MAXIMUM 400 LEHET! HA ENNÉL NAGYOBB ÉRTÉKET ÍRUNK BE, AKKOR A PWM KIMENET MINDIG 1 LESZ. A MAXIMÁLIS PWM FELBONTÁS EGY ADOTT PWM FREKVENCIÁNÁL: PWMRmax=LOG(8000/5)/LOG(2) 2^PWMRmax=250 PWMRmax közel 8 bit
VAGYIS 1 BITHEZ KB. 0,5 MIKROSEC LÉPÉS TARTOZIK
CHIPCAD KFT
9
3
PIC TANFOLYAM PWM 3/7
T2CON ÉS CCP1CON REGISZTEREK
4
:
CHIPCAD KFT
9
3
PIC TANFOLYAM PWM 4/7
A PROGRAM FŐBB RÉSZEI (A TELJES:PWM5KHZ.ASM)
;PWM periódus: PR2 feltöltése ;PWM kitöltés CCPR1L:CCP1CON<5:4> ;CCP1 láb kimenenet - TRISB<3> bit törlése. MOVLW B'00001100' MOVWF CCP1CON movlw .99 ;PWM frekvencia 5kHz movwf PR2 ; bcf TRISB,3 ;kimenet movlw 0x01 ;most ez lesz a kitöltés movwf CCPR1L ;
AZ ITT LÁTHATÓ INICIALIZÁLJA A PERIFÉRIÁT.
CCPR1L:
CCP1CON<5:4>
:
RÉSZ PWM
A KITÖLTÉS: CCPR1L:CCP1CON<5:4>
;TMR2 beállítása T2CON feltöltésével ;Configure the CCP2 module for PWM operation movlw B'00000101‘ ;1:1 post 1:4 pre t2on movwf T2CON A FELADAT NEM KELLEMES: A ÁTMOZGATNI A VÁZOLT MÓDON:
4
ÉRTÉKEK MÓDOSÍTÁSÁVAL VÁLTOZTATHATÓ. A 10 BITES KITÖLTÉSI TÉNYEZŐT, PRAKTIKUSAN EGY 16 BITES REGISZTER TARTALMÁVAL KELL FELTÖLTENI.
PWMD_H:PWMD_L REGISZTER 10 BITES TARTALMÁT KELL 6 BIT
PWMD_H
8+2 = 10 BIT
PWMD_L
CHIPCAD KFT
9
3
PIC TANFOLYAM PWM 5/7
PWM FELTÖLTÉSE
4
:
;A 16 BITES REGISZTER TARTALMÁT 6 BITTEL BALRA FORGATJUK 16 BITES REGISZTER;ÁTMÁSOLJUK MAJD TOVÁBBFORGATVA VISSZÁLL AZ EREDETI FORGATÁSSAL OLDHATÓ ;000000XX XXXXXXYY TOLÁS PWMD_H PWMD_L MEG A FELADAT. ;XXXXXXXX YY000000 CCPR1L=PWMD_H A 10 BITES KITÖLTÉSI ;CCP1CON.5=PWMD_L.7 CCP1CON.4=PWMD_L.6 TÉNYEZŐT TARTALMAZÓ ;HASZNÁLJA: PWMD_H,PWMD_L,CIKL REGISZTEREKET PWM_DUTY PWMD_H:PWMD_L MOVLW .6 ;FORGATÁS BALRA 6-SZOR REGISZTER TARTALMÁT 6 MOVWF CIKL ;CY ÉRTÉKE NEM ÉRDEKES SZOR BALRA FOGATJUK, TOL6 RLCF PWMD_L,F ;CY=L.7 A KAPOTT ÉRTÉKET RLCF PWMD_H,F ;H.0 = CY MÁSOLJUK, MAJD DECFSZ CIKL,F TOVÁBB-FORGATJUK AZ BRA TOL6 EREDETI ÁLLAPOTÁBA. MOVFF PWMD_H,CCPR1L ;MÁSOLÁS BITCOPY PWMD_L,7,CCP1CON,5 BITCOPY PWMD_L,6,CCP1CON,4 BITCOPY MACRO MOVLW .11 ;TOVÁBBFORGATVAEREDETI ÁLL. REG1,BIT1,REG2,BIT2 MOVWF CIKL BTFSS REG1,BIT1 TOL11 RLCF PWMD_L,F ;CY=_L.7 BCF REG2,BIT2 RLCF PWMD_H,F ;H.0 = CY BTFSC REG1,BIT1 DECFSZ CIKL,F BSF REG2,BIT2 BRA TOL11 ENDM RETURN
CHIPCAD KFT
9
PROGRAMRÉSZLETEK
3
PINI
IDE
PINI
IDE
PIC TANFOLYAM PWM 6/7
MOVLW MOVWF MOVLW MOVWF RCALL RCALL MOVWF RCALL MOVWF RCALL BRA
HIGH .200 PWMD_H,F LOW .200 PWMD_L,F PWM_DUTY BE_HEX PWMD_H,F BE_HEX PWMD_L,F PWM_DUTY IDE
MOVLW MOVWF MOVLW MOVWF RCALL RCALL MOVWF RCALL MOVWF RCALL BRA
HIGH .200 PWMD_H,F LOW .200 PWMD_L,F PWM_DUTY BE_HEX PWMD_H,F BE_HEX PWMD_L,F PWM_DUTY IDE
4
BE_SOROS BTFSS PIR1,5 ;RCIF=1, HA JÖTT BRA BE_SOROS MOVF RCREG,W ;VETT ADAT W-BEN MOVWF CHARBUF BSF STATUS,Z CLRF PIR1 RETURN
A TELJES PROGRAMOT A PWM5KHZ.ASM FÁJL TARTALMAZZA.
:
CHIPCAD KFT
9
3
PIC TANFOLYAM PWM 7/7
PWM DEMO
4
: