Перейти к содержанию
    

Не срабатывает прерывание dsPIC33

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

}

 

 

Спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы MPLAB C30:

 

--skipped

 

Спасибо

 

Может добавить обработку Trap Vectors с индикацией попадания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...