We have a board based on the CC430F5137 MCU. This board has P2.0 (ADC channel 0) connected to a 1.5V battery in order to measure the voltage of the battery. Periodically, our board enters LPM by running the following code:
// Stop WDT disableWatchDog(); // Keep current port selections portSelection[0] = P1SEL; portSelection[1] = P2SEL; portSelection[2] = P3SEL; // Configure port 1 pins as binary outputs tied to GND P1SEL = 0; P1DIR |= 0xFF; P1OUT = 0; // Enter lowest power VCore level and MCLK = 1 MHz _SET_VCORE_1MHZ(0); // Turn off SVSH, SVSM PMMCTL0_H = 0xA5; SVSMHCTL = 0; SVSMLCTL = 0; PMMCTL0_H = 0x00; // Enter LPM3 with interrupts __bis_SR_register(LPM3_bits + GIE);
The above code works perfect without P2.0 connected to the battery, making the board consume less than 2 uA. However, with P2.0 (ADC 0) connected to 1.5V the current consumption rises up to 21 mA or so. Setting this pin as an output during LPM is not a solution, given that there will always be a voltage difference between battery and the pin voltage so there will always be a current flow between pin and battery.
I'm not sure why this is happening. Maybe turning SVSH/SVSM off is causing P2.0 to lose its configuration as an analog input?
Thanks guys for your ideas.