Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы MPLAB C30:
#include<p33fj128MC708.h>
//////////////////////
//Configuration word//
//////////////////////
_FOSCSEL(FNOSC_PRIPLL);
_FOSC(FCKSM_CSECME & POSCMD_XT);
_FWDT(FWDTEN_OFF);
_FPOR(PWMPIN_OFF & HPOL_OFF & LPOL_OFF & FPWRT_PWR1)
_FICD(JTAGEN_OFF & ICS_PGD1);
//////////////////////
main()
{
init();
while(1);
}
void __attribute__((interrupt,no_auto_psv)) _PWMInterrupt(void)
{
PORTCbits.RC1=1;
LATCbits.LATC1=1;
PDC1=4000;
PDC2=4000;
PDC3=4000;
IFS3bits.PWMIF=0;
}
void init(void)
{
////////////////////////
//Настройка осцилятора//
////////////////////////
OSCCONbits.COSC=0b011;
OSCCONbits.NOSC=0b011;
OSCCONbits.CLKLOCK=1;
OSCCONbits.LPOSCEN=0;
CLKDIVbits.ROI=0;
CLKDIVbits.DOZE=0;
CLKDIVbits.PLLPOST=0;
CLKDIVbits.PLLPRE=0;
PLLFBDbits.PLLDIV=0x4E;
//.......................//
///////////////////////
// Настройка портов //
///////////////////////
TRISA=0b0000000000000000;
TRISB=0b0000000000000000;
TRISC=0b0000000000000000;
TRISD=0b0000000000000000;
TRISE=0b0000000000000000;
TRISF=0b0000000000000000;
TRISG=0b0000000000000000;
PORTA=0b0000000000000000;
PORTB=0b0000000000000000;
PORTC=0b0000000000000000;
PORTD=0b0000000000000000;
PORTE=0b0000000000000000;
PORTF=0b0000000000000000;
PORTG=0b0000000000000000;
LATA=0b0000000000000000;
LATB=0b0000000000000000;
LATC=0b0000000000000000;
LATD=0b0000000000000000;
LATE=0b0000000000000000;
LATF=0b0000000000000000;
LATG=0b0000000000000000;
////////////////////////////
// Настройка модуля ШИМ //
////////////////////////////
PTCONbits.PTMOD=0b10;
PTCONbits.PTCKPS=0b00;
PTCONbits.PTOPS=0b0000;
PTCONbits.PTSIDL=1;
PTMRbits.PTMR=0;
PTPER=4000;
PWMCON1bits.PEN1L=1;
PWMCON1bits.PEN2L=1;
PWMCON1bits.PEN3L=1;
PWMCON1bits.PEN4L=0;
PWMCON1bits.PMOD1=0;
PWMCON1bits.PMOD2=0;
PWMCON1bits.PMOD3=0;
PWMCON1bits.PEN1H=1;
PWMCON1bits.PEN2H=1;
PWMCON1bits.PEN3H=1;
PWMCON1bits.PEN4H=0;
PWMCON2bits.SEVOPS=0x0;
PWMCON2bits.IUE=0x0;
PWMCON2bits.OSYNC=1;
PWMCON2bits.UDIS=0x0;
DTCON1bits.DTAPS=0b10;
DTCON1bits.DTBPS=0b10;
DTCON1bits.DTA=20;
DTCON1bits.DTB=20;
DTCON2bits.DTS1A=0;
DTCON2bits.DTS1I=0;
DTCON2bits.DTS2A=0;
DTCON2bits.DTS2I=0;
DTCON2bits.DTS3A=0;
DTCON2bits.DTS3I=0;
FLTACONbits.FAEN1=0;
FLTACONbits.FAEN2=0;
FLTACONbits.FAEN3=0;
FLTACONbits.FAEN4=0;
FLTBCONbits.FBEN1=0;
FLTBCONbits.FBEN2=0;
FLTBCONbits.FBEN3=0;
FLTBCONbits.FBEN4=0;
PTCONbits.PTEN=1;
///////////////////////////
// Настройка прерываний //
///////////////////////////
INTCON1bits.NSTDIS=1;
SRbits.IPL=0;
IPC14bits.PWMIP=4;
IFS3bits.PWMIF=0;
IEC3bits.PWMIE=1;
}
Спасибо