I have a setup similar to this (The real one is a bit more complicated):
So, the CELL Modem sometimes takes too much current and the voltage of the battery drops below 2.2 Volts. My MSP430 resets and I loose the current state. So the SVMHIFG is used to disable the booster and SVMHVLRIFG to enable the booster.
#pragma vector = SYSNMI_VECTOR __interrupt void SYSNMI_ISR(void) { // switch (__even_in_range(SYSSNIV, SYSSNIV_SVMHVLRIFG)) { case SYSSNIV_SVMHIFG: // 0x04 Supply Voltage Monitor High P1OUT &= ~BIT3; // Eneble Booster break; case SYSSNIV_SVMHVLRIFG: // 0x12 SVM H voltage level reached P1OUT |= BIT3; // Disable Booster break; } }
I do not loose the state of my system, but is this a good approach?
Also, what is happening now is when the system is de-powered and powered back up, the MSP430 becomes unresponsive, unless it is depowered for few hours till the msp430 VCC us under 1.2 volts. I need to be able to quckly reset the system, so I set the SVSPE as so:
PMMRIE |= SVMHVLRIE + SVMHIE + SVSLPE
Unfortinately it did not make any difference. The SVSPE Causes the POR. The BOR has the following effects:
But I cannot find anywhere what the POR does. What is the difference. I did see some posts on the difference but nowhere does it list specifically what POR does. So when the voltage dips below SVSL, why does the system not run the pre-main and re-init all of the globals?