AnsweredAssumed Answered

QE8 Timer Initialization for Edge-Aligned PWM Mode

Question asked by Paul Savage on Nov 4, 2013
Latest reply on Nov 5, 2013 by iansmusical

Hi All,

 

We are trying to setup a QE8 to produce a variable duty cycle for a motor drive. The timer is set to run continuously.

The WDT is disabled.

 

Below is the code we are using. The output pin on the 28 pin SOIC has been re-routed to PC0/TPM1CH2.

 

The toggle output on channel match works fine and we get a 50% DC pulse at the desired period.

 

The problem we have is changing to Edge-aligned PWM. It just does not work.

 

Obviously we are missing something, any help is appreciated.

 

 

; setup timer period, values are for 100Hz [$0520] [100 prescale]

 

        mov        #$05,TPM1MODH        ;load period into high byte of timer modulo register

        mov        #$20,TPM1MODL        ;load period into low byte of timer modulo register

 

; setup timer pulse width, larger value decreases pulse width

 

        mov     #$01,TPM1C2VH            ;load output compare into high byte of timer value register

        mov     #$10,TPM1C2VL            ;load output compare into low byte of timer value register

 

        mov     #%00001100,TPM1SC    ;CPWMS clear for edge aligned PWM, bus clock source, prescale     

 

;        mov        #%00101000,TPM1C2SC     ;output compare, high true PWM pulse - THIS PRODUCES NO OUTPUT, PC0 STAYS LOW

 

        mov        #%00010100,TPM1C2SC     ;output compare, high true PWM pulse  - THIS WORKS

 

aa     bra         aa                             : stay in loop

Outcomes