ProblemwithPWMfrequency


Results 1 to 38 of 38

Threaded View

  1. #19
    Join Date
    Oct 2011
    Posts
    52


    Did you find this post helpful? Yes | No

    Default Re: ProblemwithPWMfrequency

    Hi HenrikOlsson
    I have manage to combine the code,compile it successfully and get the correct PWM frequency(5khz) thanks for all.
    (a) As you told me early the DutyVal of PR2*4=100% that means that my value of PR2=199 the DutyVal can vary within (0-796).One problem I have is in my lookup table the there is value greater than 796.What happen to this values greater than 796?

    (b) Also I have read PIC Midrange manual(http://ww1.microchip.com/downloads/e...doc/33023a.pdf) page 211 and 212 it says
    (1) " If the PWM duty cycle value is longer than the PWM period, the CCPx pin will not be cleared. This allows a duty cycle of 100%".
    (2) " Any value greater than 255 will result in a 100% duty cycle".
    is this two reason cause some part of my wave form not to have a PWM frequency of 5khz? having a long off time
    here is code and two phase PWM output

    Code:
    STEPCOUNT var byte
    STEPCOUNT1 var byte
    
    LED1  VAR  PORTB.1
    
    STEPCOUNT = 0   'pointer for phase one in sinearray
    STEPCOUNT1 = 12 'pointer for phase two  in sine array
    ADCON0 = %00000000
    ADCON1 = %00000000
    
    TRISB = %11111101
    TRISC = %11111001  'PMW output for CCP1 AND CCP2
    TRISA = %11111111
    TMR2 = 0
    PR2 = 199 'generate 5khz  'set for 18Khz HPWM
    CCP1CON = %00001100 'set CCP1 for PWM OPERATION
    CCP2CON = %00001100 'set CCP2 for PWM OPERATION
    T2CON = %00000100  'TIMER2ON and prescale of 1:1 
    
    sineval var byte[36]
    sineval[0] = 512    
    sineval[1] = 583   
    sineval[2] = 652
    sineval[3] = 717
    sineval[4] = 775
    sineval[5] = 825
    sineval[6] = 866
    sineval[7] = 896
    sineval[8] = 915
    sineval[9] = 921   
    sineval[10] =915
    sineval[11] =896
    sineval[12] =866   
    sineval[13] =825
    sineval[14] =775
    sineval[15] =716
    sineval[16] =652
    sineval[17] =583
    sineval[18] =512   
    sineval[19] = 441
    sineval[20] = 372
    sineval[21] = 308 
    sineval[22] = 249
    sineval[23] = 199
    sineval[24] = 158
    sineval[25] = 128
    sineval[26] = 109
    sineval[27] = 103
    sineval[28] = 109 
    sineval[29] = 128
    sineval[30] = 158
    sineval[31] = 199
    sineval[32] = 249
    sineval[33] = 308
    sineval[34] = 441
    sineval[35] = 512
    
    timerone var word 
    Temp var byte
    Temp1 var byte
    INCLUDE "DT_INTS-14.bas"     ; Base Interrupt System          emp
    INCLUDE "ReEnterPBP.bas" 
     
    ASM
     
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler   TMR1_INT,   _sine,   PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
     
    T1CON = 000001                 ; Prescaler = 1;1, TMR1 ON
    @   INT_ENABLE  TMR1_INT     ; Enable Timer 1 Interrupts 
     
    timerone =  65080' gives1818hz interruptfrequency or about 50 htz sine 
    Main:
           PAUSE 5
     
    GOTO Main
     
    '---[TMR1_INT - interrupt handler]------------------------------------------
    
    sine:
         T1CON = 000000 'stop the timer
    
        TMR1L = timerone.byte0  'reload the timer
        TMR1H = timerone.byte1
        T1CON = 000001          ' start the timer
        
        
        TeMP = sineval[STEPCOUNT]
        CCP1CON.4 = Temp.0 ' bit 0
        CCP1CON.5 = Temp.1 ' bit 1       
        CCPR1L = Temp >>2  'Bit 2-7 
        
        TeMP1 = sineval[STEPCOUNT1]
        CCP2CON.4 = Temp1.0 ' bit 0
        CCP2CON.5 = Temp1.1 ' bit 1       
        CCPR2L = Temp1 >>2  'Bit 2-7
        TOGGLE LED1 
        stepcount =  stepcount +1
        stepcount1 =  stepcount1 +1
        
        if stepcount =36 then stepcount =0
        if stepcount1 =36 then stepcount1 =12
         
     
    @    INT_RETURN
    Help to help me to solve this problems
    thanks
    Attached Images Attached Images

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts