Инициализация ШИМ
Код
unsigned int imp;
PR2 = (char)(1000/((float)f*0.2) + 0.5) - 1;//4Tosc = 0.2мкс, предделитель не используется, f - частота в кГц
imp = 2*PR2 + 2; // длительность импульса 1/2 периода (CCPR1L:CCP1CON<5:4>) = 2[(PR2) + 1]
CCPR1L = (imp >> 2) & 0xFF; // старшие 8 бит
CCP1CONbits.DC1B0 = imp & 0x01;
CCP1CONbits.DC1B1 = (imp >> 1) & 0x01; // младшии 2 бита
PR2 = (char)(1000/((float)f*0.2) + 0.5) - 1;//4Tosc = 0.2мкс, предделитель не используется, f - частота в кГц
imp = 2*PR2 + 2; // длительность импульса 1/2 периода (CCPR1L:CCP1CON<5:4>) = 2[(PR2) + 1]
CCPR1L = (imp >> 2) & 0xFF; // старшие 8 бит
CCP1CONbits.DC1B0 = imp & 0x01;
CCP1CONbits.DC1B1 = (imp >> 1) & 0x01; // младшии 2 бита