This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR2111: Waking device from low power mode using eCOMP interrupt

Part Number: MSP430FR2111

I am planning to minimize power by keeping the device in LPM4 during a base level loop with the eCOMP interrupt enabled, and wake up the device when the voltage on P1.1 (configured as the V+ eCOMP input) exceeds a threshold set in the eCOMP 6-bit DAC, which is configured as the V- eCOMP input. I set up the eCOMP as shown below, and set up the SR for low power mode like this -- __bis_SR_register(LPM4_bits + GIE);.

// Configure eCOMP

static const int thresholdFlu8_9 = 20;
CPCTL0 = CPPSEL0 | CPNSEL1 | CPNSEL2 | CPPEN | CPNEN;         // Select C1 as input for V+ terminal
                                                                                                                  // Select DAC as input for V- terminal
                                                                                                                  // Enable eCOMP input
CPDACCTL = CPDACREFS | CPDACEN | CPDACBUFS;                      // On-chip 1.5V Vref selected, DAC enabled
                                                                                                                  // CPDACBUFS=1 and CPDACSW=0 -- CPDACBUF1 selected as buffer control source
CPDACDATA = thresholdFlu8_9;
CPCTL1 = CPMSEL | CPHSEL_3 | CPIE | CPEN;                                  // Low power eCOMP mode, rising edge interrupt enabled, eCOMP enabled in 30 mV hysteresis mode

Based on the eCOMP characteristics table in section 8.12.9.1 of SLASE78E, I expected that enabling the eCOMP like this would increase the current draw by 5uA or less while in the base level loop with no interrupt present, but my tests so far show a current draw increase of 100 uA when the eCOMP gets enabled. Is there something wrong with my configuration?

  • CPDACCTL = CPDACREFS | CPDACEN | CPDACBUFS;                      // On-chip 1.5V Vref selected, DAC enabled

    I dug up an old program which used the FR2311 ADC, with a selection for whether to use the internal INTREFGEN, and I found this line:

    > #if USE_REF // extra 60uA

    I don't see that number in the data sheet (FR2111 nor FR2311) so I suppose I measured it. (It was written to measure the consumption of the ADC, so that's plausible.)

    Can you get away with using CPDACREFS=0 [DACREF=VDD]?

  • Thanks, I will switch to using VDD as the DAC reference and see how that effects the current drain.

  • Switching to CPDACREFS=0 (DEC reference = Vdd) did eliminate the unexpected additional 100 uA of idle current draw. So the issue is resolved, but, as far as I know, this current penalty caused by using the on-chip 1.5V reference is undocumented. Is that correct? Can anyone point me to a TI document that documents this?

**Attention** This is a public forum