Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не срабатывает прерывание dsPIC33
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
pipka
Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы 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;
}


Спасибо
Vlad27
Цитата(pipka @ Dec 3 2008, 15:11) *
Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы MPLAB C30:

--skipped

Спасибо


Может добавить обработку Trap Vectors с индикацией попадания?
pipka
Странно, но все заработало как-то само собой. Не понятно,почему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.