Another low power, "battery operated" 32 bit microcontroller with 80 uA sleep.

Status
Not open for further replies.

t3andy

Well-known member
Another low power, "battery operated" 32 bit microcontroller with 80 uA sleep.

Another low power, "battery operated" 32 bit microcontroller with 80 uA sleep.

http://www.circuitgizmos.com/products/cgmicromite1/cgmicromite1.shtml

It's not here yet but very close in being released. (< 2 months)

This Basic PIC32 could be attached as a I2C slave to the Teensy 3.0/3.1?

We will give it a try for $5.99 $USD :cool:

BTW ... @ ~ 23K Basic instructions per second don't expect this chip to out perform the Teensy.
 
Last edited:
I'll take a quick pass on PIC32. IMO: Illogical move on Microchip's part some years back - investing in a license/using old MIPS silicon as an anti-ARM tactic. Well, whatever works for them.


MMbasic for it. Open source. Nice. Interpreter not compiled. Has floating point and string data type, no integer (!). Said to be a subset of GWBasic of old.

If one wants to program in VB6-like code for the Teensy, Coridium has a beta version of their compiled (not interpreted) ARMbasic that's been on NXP ARMs until now. It's discussed in this forum.
 
Last edited:
Coridium is a non-starter for battery operation. The Coridium LPC1114 ARM Basic chip sleeps at 10 ma. and the PIC32 MicroMite sleeps @ 80 uA.

Of course, you could use the Espruino Java Script STM ARM which sleeps @ 12 ma. or the Micro Python STM ARM sleeps > 30 ma. but your batteries life span would be less than a week. We are talking battery operation NOT speed, compiler, Microchip, ARM. Get it?

 
Last edited:
My post was on the topic of the recent Coridium work for it to run on the Teensy 3, not the NXP LPC chip.
 
My post was on the topic of the recent Coridium work for it to run on the Teensy 3, not the NXP LPC chip.

We believe Coridium Basic does not have the proper sleep command for the Teensy 3. So battery operation would be out of the question.
 
Last edited:
you could do sleep management in your code, no matter the language?

Considering it took Paul S and Duff months to do the sleep management for the Teensy 3. <--- No thanks, we rather buy a solution than to waste our valuable time.

Sleep on the Teensy 3 is < 250 uA and on the MicroMite 80 uA.
 
Last edited:
Coridium is a non-starter for battery operation. The Coridium LPC1114 ARM Basic chip sleeps at 10 ma.

10 mA is the active power for the LPC1114. The SLEEP in BASIC just executes a WFI, which is how the part goes into the various sleep modes, it's up to you what mode you want to use and how you want to wake it up, with deep-sleep at 6 uA and deep-power-down at 220 nA.

As for programming those sleep modes on the Teensy, if you've got Paul's code that sets the register settings, then it shouldn't take more than a hour to translate that into BASIC.
 
Considering it took Paul S and Duff months to do the sleep management for the Teensy 3.

As for programming those sleep modes on the Teensy, if you've got Paul's code that sets the register settings, then it shouldn't take more than a hour to translate that into BASIC.

Anyone -->only one hour to convert Coridium Basic on the Teensy 3 for low power sleep with wake-upon on any interrupt? Easier said than done !!!!

Stevech r u ready???
 
10 mA is the active power for the LPC1114. The SLEEP in BASIC just executes a WFI, which is how the part goes into the various sleep modes, it's up to you what mode you want to use and how you want to wake it up, with deep-sleep at 6 uA and deep-power-down at 220 nA.

@ 6 million basic instructions per second, very, very interesting. Mbed uses this same chip for one of their platforms and Coocox free IDE C,C++ eclipse also supports this chip. After all, what good is an ARM chip without having very low power operation. Coridium Basic should have special commands to the PMU (power management unit) for the NXP LPC1114 for easy user applications.
 
That's what libraries are for, not everything is built into a language. Considering there are 3 different sleep modes, 2 of which you have options for turning off various of the 10 peripherals and choosing which conditions wake the chip up.

So how do you map SLEEP into 1+2*(2**10) *(maybe >4) or 16K different possible configurations? As the BASIC gives direct access to all the registers you program the configuration you want and execute SLEEP (WFI). If you bury the SLEEP function in the firmware the user is stuck with the configuration chosen.

Is there a SLEEP in C? No it too uses function calls.
 
Now we get it ...

The Teensy 3 ARM stamp ( by Paul S) was based on the easy to use AVR Arduino "compatible" commands and libraries. All the user have to do is include the specific library / functions and their user application is good to go.

The Basic MaxiMite / MicroMite ( by Geoff G) is based on the PIC32Mx and GWBasic.
All basic commands are built-in and are thoroughly tested. All the users have to do is
to choose the basic commands for specific hardware function and their user application
is good to go.

Coridium Basic has generic basic commands and if the user wanted to do specific hardware
functions or commands, they would have to dig deep into the NXP manuals and specifications
just to do a simple command like sleep with WFI. There are no specific PMU libraries for
the LPC1114 and looking at the Coridium forum nobody has even entertained in making a PMU library.
Like you said "you could read/write to the registers" BUT that is not an easy task without
an expensive debugger. Compared to the Teensy 3 and MicroMite it is harder to program
in Coridium Basic.

For low power sleep commands for the Teensy 3 and MaxiMite, one or two lines will do it.
We believe, in Coridium Basic we are talking many lines of code for the simple sleep WFI function.

The reason why the Arduino is still #1 is that they kept it simple for their users.
 
Well to enter deep power down on the LPC1114 (which wakes up by pulling P1.4 low, and is the lowest power state). I read 3 pages of the user manual.

Code:
*&H40038000 = 2     ' set deep power down mode   -- there are #defines for many of these, but this shows not using them
*&HE000ED10 = 4     ' enable SLEEP_DEEP mode in ARM
*&H40048238 AND= ~3   ' make sure IRC stays on in PDRUNCFG

SLEEP

I'm not going to argue that ARMs are not more complex than AVRs, they are, but they also outperform AVRs in almost every way. Now for the hobbyist community that doesn't matter all that much.

Different tools are out there for different markets, and no one tool or CPU is perfect for all applications, engineering is the art of the tradeoff. We did the port for the Teensy for the engineering community probably more than for the hobbyist. As the Teensy is a good price/performance package and useful in doing prototype engineering designs, and there is a large enough group of engineers out there that forgot how to program in C, but are comfortable in BASIC.
 
Yep a slight correction-

Code:
*&H40038000 = 2     ' set deep power down mode   -- there are #defines for many of these, but this shows not using them
*&HE000ED10 = 4          ' enable SLEEP_DEEP mode in ARM
*&H40048238 OR= 255    ' turn off all analog peripherals

SLEEP

It takes the power from around 11 mA to 300 uA. And you'll have to decide what to have powered up when it restarts, which is a couple more pokes. The above code puts the part in normal SLEEP mode, there are other power modes that go down below 10 uA.

I just did it here on the bench! Second time through, it's morning and I hadn't had my coffee yet as I was staring at the LED taking 4 mA on the board before I disconnected it.
 
300 uA does not cut it since the Teensy 3 can do <250 uA and even the MicroMite 80 uA with nothing connected on GPIO.

with deep-sleep at 6 uA and deep-power-down at 220 nA.

The deep-sleep spec for the NXP LPC1124, as you stated above, seems like the number to shoot for but like I said "nobody seems to be able to reach the elusive 6 uA"
:cool:
 
I was doing it on a board with various pullup, pulldown resistors that were probably contributing to that 300 uA. It's really not worth my time doing a what if scenario.

Yes you have to be careful when trying to get to the spec, a 50K pullup/pulldown turned on and driven the opposite direction by an external component contributes 66 uA. So it doesn't take much to add up.

I don't happen to have a test board with an isolated LPC1114, I do for other NXP parts, and on those parts we were evaluating them for low power, we could easily hit the published typical numbers that were down in the 300 nA range. So I'm sure I could hit the number on the spec sheet, otherwise I'd be reporting an error in the docs to NXP, it's not like they don't have 1000s of customers (actually last time I talked to them they had nearly 10,000s of customers for their microcontrollers). This is true for Freescale, ST and TI too and their published specs are as accurate as possible. So if you want to hire us to build you a demo that meets those numbers, I'm sure we could do it quickly, and consulting is our business.
 
Status
Not open for further replies.
Back
Top