Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы 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; }
Спасибо
|