Hi there,
The system is composed of a MSP430F2232 and a DM3x.
The DM3x is powered by 5.4v/3.3v/1.8v/1.2v (all buffered, regulated from DCIN).
The MSP430 is powered by MSP_PWR in the attached circuit and serves:
1. DCIN monitor informs DM3x by interrupt.
2. Power controller of DM3x by reset.
3. UBL (User Bootcode Loader) via UART to DM3x.
4. RTC, ADC, and IO extender via I2C for DM3x.
The MSP430 crashes unexpectedly (approx. once in a month after DCIN is removed)
with power consumption between normal mode and LPM3 mode.
Only a HW reset can bring the MSP430 back to free DM3x from reset.
Please indicate the way to find the reason or indicate possible reasons why it crashes.
Thanks & regards,
Yulin.
//--------------------------------------------------------------------------
The pseudo code of the main loop is:
SysState = S_SLEEP;
while(1){
switch(SysState){
case S_SLEEP:
if(SysCfg.OnFlag){ //asserted by ADC in TimerB ISR.
if(CheckDCINbyADC()){
SysState = S_UBL;
break;
}
}
LPM3; //LPM3_EXIT in TimerB ISR
break;
case S_UBL:
Uart_Open();
Pulse a reset pulse to DM3x and starts UBL.
Uart_Close();
if(UBLisOK) SysState = S_READY;
break;
case S_READY:
Check and respond DM3x command
if( DM3x_ShutdownIsCompleted || DCINIsLostForMoreThan3seconds ){
ResetDM3x();
SysState = S_SLEEP;
break;
}
CheckDCINbyADC and notify DM3x for DCIN unstable or lost.
LPM0; //LPM3_EXIT in TimerB ISR
break;
}
}