2012-03-09 5 views
0

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

Работает на 3V 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; 
}   

ответ

0

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

быть осторожным: Перед включением делителя между Timer0 и WDT Модули рекомендуется TMR0 и WDT сброс, в противном случае он может быть случайным (непреднамеренным) сбросом процессора.

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