Здравствуйте, помогите разобраться почему не срабатывает прерывание ШИМ.
код(MPLAB C30):
#include <p30f2023.h>
#include "functions.h"
_FOSCSEL(FRC_PLL); //FRC with PLL
_FOSC(CSW_FSCM_OFF & FRC_HI_RANGE & OSC2_IO & HS_EC_DIS); //Clock switching is disabled,FCKSM is disabled
_FWDT(FWDTEN_OFF); //Watchdog timer off
_FPOR(PWRT_OFF); //Power-on Reset
_FICD(ICS_PGD);
int main(void)
{
init();
while(1)
{
}
}
void __attribute__((interrupt,no_auto_psv)) _PWM1Interrupt(void)
{
IFS1bits.PWM1IF=0;
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
asm volatile ("nop");
}
void init (void)
{
OSCTUNbits.TUN=0b0000;
//......................//
TRISA=0b0000000000000000;
TRISB=0b0000000000000000;
TRISD=0b0000000000000000;
TRISE=0b0000000000000000;
TRISF=0b0000000000000000;
PORTA=0b0000000000000000;
PORTB=0b0000000000000000;
PORTD=0b0000000000000010;
PORTE=0b0000000000000000;
PORTF=0b0000000000000000;
LATA=0b0000000000000000;
LATB=0b0000000000000000;
LATD=0b0000000000000010;
LATE=0b0000000000000000;
LATF=0b0000000000000000;
// PWM1 //
PTCONbits.PTEN=0b00;
PTCONbits.PTSIDL=0b00;
PTCONbits.SESTAT=0b00;
PTCONbits.SEIEN=0;
PTCONbits.EIPU=0b00;
PTCONbits.SYNCPOL=0b00;
PTCONbits.SYNCOEN=0b00;
PTCONbits.SYNCEN=0;
PTCONbits.SYNCSRC=0b00;
PTCONbits.SEVTPS=0b0000;
PTPER=30960;
PDC1=15480;
PWMCON1bits.FLTSTAT=0b00;
PWMCON1bits.CLSTAT=0b00;
PWMCON1bits.TRGSTAT=0b00;
PWMCON1bits.FLTIEN=0b00;
PWMCON1bits.CLIEN=0b00;
PWMCON1bits.TRGIEN=0;
PWMCON1bits.ITB=0b00;
PWMCON1bits.MDCS=0b00;
PWMCON1bits.DTC=0b10;
PWMCON1bits.XPRES=0b00;
PWMCON1bits.IUE=0b00;
FCLCON1bits.FLTMOD=0b11;
FCLCON1bits.CLMODE=0;
DTR1=0b000000000000;
IOCON1bits.PENH=1;
IOCON1bits.PENL=1;
IOCON1bits.POLH=1;
IOCON1bits.POLL=1;
IOCON1bits.PMOD=0b00;
IOCON1bits.OVRENH=0;
IOCON1bits.OVRENL=0;
PTCONbits.PTEN=1;
//настройка прерываний//
INTCON1bits.NSTDIS=1;
SRbits.IPL=0;
IPC4bits.PWM1IP=6; //interrupt priority for PWM
IFS1bits.PWM1IF=0;
IEC1bits.PWM1IE=1;
}
Спасибо.