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