Почему dsPIC30F4012 сбрасывается? - PullRequest
0 голосов
/ 09 марта 2012

У меня есть небольшая схема с dsPIC30F4012, иногда она работает нормально, но иногда без какой-либо причины случайным образом сбрасывается обратно к запуску программы.

Питание от 3 В MCLR имеет резистор 10 кОм

Некоторые настройки:

_FOSC(CSW_FSCM_OFF & FRC_PLL4 & CSW_ON_FSCM_OFF & CSW_FSCM_OFF); 
_FWDT(WDT_OFF); 
_FBORPOR(PBOR_OFF & MCLR_DIS & PWRT_OFF & BORV20);
_FGS(CODE_PROT_OFF & GWRP_OFF); 

#define TMR1_PERIOD 7369

{
TMR1 = 0; /* clear timer1 register */
PR1 = TMR1_PERIOD; /* set period1 register */
T1CONbits.TCS = 0; /* set internal clock source */
IPC0bits.T1IP = 4; /* set priority level */
IFS0bits.T1IF = 0; /* clear interrupt flag */
IEC0bits.T1IE = 1; /* enable interrupts */
SRbits.IPL = 3; /* enable CPU priority levels 4-7 */
T1CONbits.TON = 1; /* start the timer */
}


/****** START OF INTERRUPT SERVICE ROUTINES *********/

void __attribute__((__interrupt__, __shadow__, __no_auto_psv__ )) _T1Interrupt(void) 
{
Timer1 ++;
Timer2 ++;
Timer3 ++;
Timer4 ++;
MainCounter++;
IFS0bits.T1IF = 0; /* clear interrupt flag */
return;
}           

1 Ответ

0 голосов
/ 09 марта 2012

СБРОС процессор может быть вызван по следующим причинам: запуск источника питания , сброс сигнала ввода / MCLR или переполнение WDT .

Будьте осторожны: перед переключением прескалера между Таймер 0 и WDT Рекомендуется использовать модули Сброс TMR0 и WDT в противном случае это может быть случайный (непреднамеренный) сброс процессора.

Проверьте это.

...