Hi! I am trying to (re)build a digital watch based on the MSP430F149: http://www.sigma957.org/uc2000.html I am using the FET evalkit from TI with a 32kHz watch quartz, powered from 2 AA cells. I am still at the very beginning, I just made a simple program that uses TimerA to generate interrupts for wakeup at 1s interval. The mainloop updates the display (takes about 5ms) and then enters LPM3 again. The program seems to work as intended. I am using the latest MSPGCC windows build. However, the current consumption is about 50uA for the MSP alone, which is far too much. The display adds another 8uA which is ok. I already checked that ADC, VRef and CompA is switched off, I set all unused ports to 0 output, but I can't seem to get down to the 2uA that I expected for LPM3. Any ideas what I am doing wrong?
MSP430 LPM3 power consumption
Started by ●October 23, 2002
Reply by ●October 23, 20022002-10-23
Can you put in a temporary I/O bit output that is set when the F149 is in its INT - or running in the foreground, and that ONLY clears that I/O line when the F149 indeed is in LPM3 ? It seems, by the looks of your current that you might have the CPU executing all the time...... ? Check that relevant INT flags are cleared before exit of your ISR (otherwise it will re-enter the ISR all the time) Obviously you've made sure all other INTs can't be accidentally entered, or at least make sure that execption is handled properly. (Check that DCO is off too, and not clocking something it shouldn't in LPM3 for example) Another one to look at is your JTAG. The F149 has its JTAG properly pulled up though, so I've never seen excessive currents caused by the JTAG. Is it a "steady" 50 uA - or does it "float" around a bit ? Have you tried the good old "finger test" ? Poke around the I/O, and see if you missed an I/O pin/port somehow.. The only other one would be a static state on I/O port that interfaces with the display, like a clock or data line. A typical mistake is eg. not to ensure a defined state of the outputted data bit after bit testing on the TXd data to the I/F. Eg. try making sure you set data and clock lines (is it Sync I/F ?) LOW after bit bashing to the display etc. (You probably did so if it is sync I/F, but you never know) ----- Original Message ----- From: rothe957 To: msp430@msp4... Sent: Wednesday, October 23, 2002 8:53 PM Subject: [msp430] MSP430 LPM3 power consumption Hi! I am trying to (re)build a digital watch based on the MSP430F149: http://www.sigma957.org/uc2000.html I am using the FET evalkit from TI with a 32kHz watch quartz, powered from 2 AA cells. I am still at the very beginning, I just made a simple program that uses TimerA to generate interrupts for wakeup at 1s interval. The mainloop updates the display (takes about 5ms) and then enters LPM3 again. The program seems to work as intended. I am using the latest MSPGCC windows build. However, the current consumption is about 50uA for the MSP alone, which is far too much. The display adds another 8uA which is ok. I already checked that ADC, VRef and CompA is switched off, I set all unused ports to 0 output, but I can't seem to get down to the 2uA that I expected for LPM3. Any ideas what I am doing wrong? .
Reply by ●October 23, 20022002-10-23
If you haven't already tried, unplug the JTAG and measure the current. Our FET tool takes lots of uA. > I am using the FET evalkit from TI with a 32kHz watch quartz, > powered from 2 AA cells. > I am still at the very beginning, I just made a simple program > that uses TimerA to generate interrupts for wakeup at 1s interval. > The mainloop updates the display (takes about 5ms) and then enters > LPM3 again. The program seems to work as intended. > I am using the latest MSPGCC windows build. > However, the current consumption is about 50uA for the MSP alone, > which is far too much. The display adds another 8uA which is ok. > I already checked that ADC, VRef and CompA is switched off, > I set all unused ports to 0 output, but I can't seem to get > down to the 2uA that I expected for LPM3. > Any ideas what I am doing wrong?
Reply by ●October 24, 20022002-10-24
Hi! Thank you for your suggestions. I think I found the problem. > It seems, by the looks of your current that you might have the CPU executing all the time...... ? I checked it - no, the CPU is in LPM3 most of the time. > Another one to look at is your JTAG. JTAG interface connected or not - no difference. > Is it a "steady" 50 uA - or does it "float" around a bit ? Steady. > Have you tried the good old "finger test" ? No effect, except when I touch the crystal pins. > The only other one would be a static state on I/O port that > interfaces with the display, like a clock or data line. And here it dawned to me... Let me explain: The display (40 char 5x7 alphanumeric LCD with controller) is powered by two symmetric voltages of + and - Vcc/2. I connected + to Vcc and - to Vss, and use a micropower opamp to generated Vcc/2 for the display's logic ground level. To drive the signals (8 data bits, 2 control lines, clock), I used 1M 'pull-down' resistor to Vcc/2, and switched the I/O-pins between active 1 drive and input state (=tristate). This works, but of course if the I/O pin is switched to input (display logic 0 output), the I/O sees Vcc/2... which causes the excess current. The only way I see is putting a diode in very I/O line and use active drive all the time, like I do already with the clock, but space is VERY limited. The whole PCB with controller, quartz, and all other parts, like the opamp, resistors and diodes must fit on a 17x21mm 2-layer 0.5mm FR4 PCB, and the overall height must not exceed 1.7mm... Does anyone know another solution than diodes? Or does anyone know ultraminiature diodes, say 0402?
Reply by ●October 24, 20022002-10-24
> Does anyone know another solution than diodes? I thought about it a little and tried a single diode in the connection from vcc/2 to the 11 pull-down resistors. This way, the inputs see Vcc/2 + Vf, but the 0 level for the display also goes up by Vf. The display still works, and the total current went down to about 25uA. Then it occured to me that if I leave the data lines at active high, I'll have no input problems (except for the few microseconds when I actually have to generate a 0), but the steady current from the 8 pull-downs instead. Give it a try - we are down to 15uA now. Maybe I should try 2M for the data pull downs, this could win me another 4 or 5 uA...
Reply by ●October 24, 20022002-10-24
I've been reading along with you on this. It looks like you're
using
an external LCD module. To get that kind of stand-by power I'm
guessing that you're switching the LCD VCC off? Also, is this a 5V
or 3V LCD/LCD Controller? On-board parts or Off-the-Shelf module?
CP
--- In msp430@y..., "rothe957" <rothe@d...> wrote:
> > Does anyone know another solution than
diodes?
>
> I thought about it a little and tried a single diode in
> the connection from vcc/2 to the 11 pull-down resistors.
> This way, the inputs see Vcc/2 + Vf, but the 0 level for
> the display also goes up by Vf. The display still works,
> and the total current went down to about 25uA.
> Then it occured to me that if I leave the data lines
> at active high, I'll have no input problems (except for
> the few microseconds when I actually have to generate a 0),
> but the steady current from the 8 pull-downs instead.
> Give it a try - we are down to 15uA now.
> Maybe I should try 2M for the data pull downs, this could
> win me another 4 or 5 uA...
Reply by ●October 24, 20022002-10-24
This is a really interesting problem ......... Do you think the display uses a "floating Vcc/2 GND" to create the bias voltages for the LCD, having possibly 2 backplanes ? Is there a state on the controller that leaves the 8 data lines as "input", so you can define your I/O as outputs when they're static in LPM3 ? Probably sounds nuts, but the LCD segment outputs of a F4XX part could "mimic" a GND - Vcc/2 - Vcc output state. Leaving it static would be the trick of course, along with creating the right 8 bit settings out of the 8 LCD segment I/O lines....... What actually constitues a logic "1" and logic "0" on the 8 data lines ? The only other way would be for the F14X to actually have its own GND at the Vcc/2, but then the CPU would run at say 3.3 V / 2 = 1.65 Volts. At such a low clock, you can easily use the lowest core voltage, but < 1.8 Volts of course is not guaranteed... (Then again, I aasume you're not planning on making 100,000 of these units. Still a good challenge.. ! There's other solutions, but they won't fit becuase of form factor. ----- Original Message ----- From: rothe957 To: msp430@msp4... Sent: Friday, October 25, 2002 2:12 AM Subject: [msp430] Re: MSP430 LPM3 power consumption > Does anyone know another solution than diodes? I thought about it a little and tried a single diode in the connection from vcc/2 to the 11 pull-down resistors. This way, the inputs see Vcc/2 + Vf, but the 0 level for the display also goes up by Vf. The display still works, and the total current went down to about 25uA. Then it occured to me that if I leave the data lines at active high, I'll have no input problems (except for the few microseconds when I actually have to generate a 0), but the steady current from the 8 pull-downs instead. Give it a try - we are down to 15uA now. Maybe I should try 2M for the data pull downs, this could win me another 4 or 5 uA... .
Reply by ●October 24, 20022002-10-24
--- In msp430@y..., "Kris De Vos" <microbit@c...> wrote: > This is a really interesting problem ......... > Do you think the display uses a "floating Vcc/2 GND" > to create the bias voltages for the LCD, having > possibly 2 backplanes ? Could be. The problem is, I have very little data. The display is part of a Seiko watch from around 1983. All I know about the display is what I could measure on the original watch. See here: http://www.sigma957.org/uc_pinout.html The original CPU generated Vbatt/2 with a switched capacitor. The CPU itself probably ran from Vbatt/2. The interface to the display controller (a 3 chip solution) consists of a 8bit data bus, 2 strobes and a 32768 Hz clock feed. The L-level on all these lines is Vbatt/2, the H-level is Vbatt. I used a digital scope and a logic analyzer to figure out how the CPU talks to the display. Because I know nothing about the display controller (the protocol is very different from common LCD controllers, see here: http://www.sigma957.org/uc_lcd.html), I want to reproduce the behavior of the original CPU as good as possible. This means generating Vbatt/2 and using this as logic L-level. Vbatt in a watch starts at about 3.4V with a fresh battery, and goes down to 2.2V when the battery is almost empty. Running the MSP430F149 from Vbatt/2 is therefore not a viable option. Using a DC/DC converter is also no option, because the overall power consumption must be less than 20uA in order to get a decent battery life from a 165mAh CR2325 cell. Because ACLK output is the module function of Pin 2.0, it is always active H or L. I tried driving the display clock with MSP430 L-level (-Vbatt/2 for the display) via a 1M series resistor, but the display controller has clamp diodes at the inputs and malfunctions with a 'negative' input voltage. So I used a serial diode and a 1M pull-down to Vbatt/2, and this works, but driving H means 1.5uA current trough the resistor. For the 8 data lines and 2 strobes, I had the idea of using only the pull-downs, and switch the I/Os to 'H-out' for H-level and 'input' (=tristate, I thought) for L-level (via pull-down). > Is there a state on the controller that leaves the 8 data > lines as "input", so you can define your I/O as outputs > when they're static in LPM3? All lines of the controller are always inputs. The strobes are L active, so I have to keep them at H level most of the time. Another 3uA. Maybe I should try 2M here, but the H-L edge would become an even slower slope... But still worth a try. For the data lines, their level is unimportant while the strobe lines are H. So I thought setting them to tristate/input would be the best idea, but this turned out to be a mistake. Setting them to H-output means another 8 x Ipulldown. But with 2MOhms this should be bearable. > Probably sounds nuts, but the LCD segment outputs of a F4XX part could > "mimic" a GND - Vcc/2 - Vcc output state. > Leaving it static would be the trick of course, along with creating the right 8 bit settings > out of the 8 LCD segment I/O lines....... Nice idea. But I don't think this is feasible. Because they cannot be programmed to only assume Vcc and Vcc/2 level and never GND level. And -Vbatt/2 on any logic input will generate clamp currents and probably latch-up in the display controller. > The only other way would be for the F14X to actually have its own GND at the Vcc/2, but then > the CPU would run at say 3.3 V / 2 = 1.65 Volts. When the battery is full. If it is near empty: 2.2V/2 = 1.1V. No, I think I'll stick to running the uC on Vbatt, generating Vbatt/2 via a micropower opamp (MAX4470, 0.75uA, works down to 1.8V), and putting a few 0804 (4 x 0402) size resistor arrays on the PCB. Oh, BTW, are there any current figures for flash selfprogramming?
Reply by ●October 24, 20022002-10-24
--- In msp430@y..., "CP" <cp8071@y...> wrote: > I've been reading along with you on this. It looks like you're using > an external LCD module. To get that kind of stand-by power I'm > guessing that you're switching the LCD VCC off? Also, is this a 5V > or 3V LCD/LCD Controller? On-board parts or Off-the-Shelf module? The LCD is always on (it's a wrist watch, after all). The LCD controller is a 1983 Seiko (?) custom 3-chip solution, See here: http://www.sigma957.org/dissect.html , more specific: http://www.sigma957.org/bilder/UC2000_8.jpg and here: http://www.sigma957.org/uc_lcd.html My project page is this: http://www.sigma957.org/uc2000.html There is also a pic of my humble development board: http://www.sigma957.org/bilder/UC2000_E.jpg
Reply by ●October 24, 20022002-10-24
HI rothe957, r> Using a DC/DC converter is also no option, because r> the overall power consumption must be less than 20uA in order r> to get a decent battery life from a 165mAh CR2325 cell. look at this DC/DC from TI TPS60210,Regulated 3.3-V 100-mA Low-Ripple Charge Pump with Ultra Low Operating Current FEATURES *Regulated 3.3-V Output Voltage From a 1.8-V to 3.6-V Input Voltage Range *UltraLow Operating Current in Snooze Mode, Typical 2 uA With up to 2-mA Output Current *Less Than 5-mV(PP) Output Voltage Ripple Achieved With Push-Pull Topology *Integrated Low-Battery and Power-Good Detector *Switching Frequency Can Be Synchronized to External Clock Signal *Extends Battery Usage With up to 90% Efficiency and 35-uA Quiescent Current *Easy-To-Design, Low Cost, Low EMI Power Supply Since No Inductors Are Used *Compact Converter Solution in UltraSmall 10-Pin MSOP With Only Four External Capacitors Required -- Valeriy