Magvay 0 3 декабря, 2008 Опубликовано 3 декабря, 2008 · Жалоба Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы 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 0 3 декабря, 2008 Опубликовано 3 декабря, 2008 · Жалоба Здравствуйте. Помогите разобраться почему не срабатывает прерывание. Вот код программы MPLAB C30: --skipped Спасибо Может добавить обработку Trap Vectors с индикацией попадания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magvay 0 6 декабря, 2008 Опубликовано 6 декабря, 2008 · Жалоба Странно, но все заработало как-то само собой. Не понятно,почему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться