2012-03-09 6 views
0

私はdsPIC30F4012の小さな回路を持っていますが、ときどきうまくいきますが、何らかの理由がなくてもランダムにプログラムの先頭にリセットされます。なぜdsPIC30F4012がリセットされるのですか?

3V MCLRによって供給

は10k抵抗

いくつか設定している:

_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

RESETプロセッサは、次の理由のために呼び出すことができる:電源を開始リセット信号入力/ MCLR またはWDTオーバーフロー

は注意してください:プリスケーラを切り替え WDT Timer0の間のモジュールが推奨されている前TMR0とWDTはをリセットし、それ以外の場合は、プロセッサをリセット(意図しない)偶発的であってもよいです。

関連する問題