Когда я генерирую ШИМ только на CCP1, я могу получить ШИМ 50 Гц с частотой коммутации 10 кГц. Когда я включаю ШИМ на CCP2 для другого ШИМ, частота обоих ШИМ меняется. Но если я генерирую его на любом из выходов, он работает нормально. Я пытаюсь создать 2 SPWM с фазовым сдвигом 90 градусов, для sin и cos, как на частоте переключения 50 Гц, так и на частоте 10 кГц.
void main(void)
{
ANSELD=0X00;
ANSELC=0X00;
PORTD = 0;
TRISD = 0;
TMR2 = 0;
PR2 = 199; // PWM period = (PR2+1) * prescaler * Tcy
CCPR1L = 0;
CCPR2L = 0;
TRISC = 0; //0b11111011; // Make pin 17 (RC1/CCP2) an output
T2CON = 0b00000100; // Enable TMR2 with prescaler = 1
CCP1CON = 0b00001100; // Enable PWM on CCP1
CCP2CON = 0b00001100;
PIR1.TMR2IF = 0;
T2CON.TMR2ON = 1;
j = i+50;
while(1)
{
PIR1.TMR2IF = 0;
while( PIR1.TMR2IF ==0);
CCPR1L = 0.99*sin_table[i];
CCPR2L = 0.99*sin_table[j];
i = i+2;
j = j+2;
if(i==100)
{
i=0;
}
if(j==100)
{
j=0;
}
}
}