Quick n dirty HPWM out of phase
Assuming a PIC with at least 2 PWM channels, can someone suggest a quick way to output two PWMs exactly 180 degrees out of phase with each other?
I can do it by turning alternating pins on and off but there's no CPU left to do anything else without messing up the waveform.
Trying not to recreate the wheel...or maybe it's so obvious I can't see the answer.
Thanks
Re: Quick n dirty HPWM out of phase
The following is how I do it. works well and is super easy. I see this is an old post, but hey, it might help someone!
Use the tilda ~ before the variable! I use this on a 16F873A and a 16F1503 and the 1824, works great.
'*********** Define ADCIN parameters *************************************
DEFINE OSC 4
DEFINE ADC_BITS 8 ' Set number of bits in result
DEFINE ADC_CLOCK 3 ' Set clock source (3=rc)
DEFINE ADC_SAMPLEUS 15 ' Set sampling time in uS
XADCVAR VAR WORD ' X ADC Result
PWMOUT1 var byte ' PWM CH1
PWMOUT2 VAR BYTE ' PWM CH2
'*********** SET PORTS ************************************************
TRISA = %000001 ' Set PORTA
TRISB = %00000000 ' Set PORTB
TRISC = %00000000 ' Set PORTC
ADCON0 = 0 ' Set up ADCON1
BEGIN:
'*********** CHECK ADC VALUE ******************************************
MAIN:
ADCIN 0, XadcVar ' convert ADC value to a byte value:
PWMOUT1 = XadcVar ' X Axis
PWMOUT2 = ~XadcVar ' Y Axis
Hpwm 1,PWMOUT1,1600
Hpwm 2,PWMOUT2,1600
Goto BEGIN
end