Freescale Shrinks World’s Smallest ARM-Based MCU by 15%
media.freescale.com
media.freescale.com
Another interesting one: stm32f401, cortex-m4 ,84mhz,512KB flash, 96 KB ram, low power and can run python(micro python) - at only 3X3 mm.
Freescale's best trick with these is putting them in business cards (between thin plastic).
Heck, Electric Imp is close to that size. https://electricimp.com/
http://atmelcorporation.wordpress.com/2014/02/24/atmels-smar...
In comparison Atmels use of IoT in that case seems more justified by the fact that they are marketing a solution with network connectivity. And imho the integration of connectivity and microcontroller is far more significant than 15% reduction of already ittybitty package size.
Granted, that dust as described is more capable. But we know how that curve tends to go.
It seems that the science fiction writers are barely keeping ahead of "reality", these days. Kind of amazing.
Related: Atmel's got tiny 8-bit micros that can run off 0.7V, making it feasible to run off a single alkaline cell.
8 bit would be dead if the 32 bit parts included all of the peripherals engineers actually need to build stuff (SPI,analog,timers,etc).
But what's even more interesting is to actually compile apps and compare code size. Miro Samek did this for a couple of RTOS-like framesworks and compared across a mix of 8, 16 and 32 bit micro architectures (PIC, 8051, M8C, 68HC08, AVR, MSP430, M16C, ARM7 Thumb, and ARM Cortex-M3 Thumb2). For his test, the MSP430 was the most dense, but Thumb2 wasn't far behind. (http://embeddedgurus.com/state-space/2009/03/insects-of-the-...)
Of course, there are 4 bit micros out there...
I guess I'm nitpicking, but Cortex-M0+ and Cortex-M0 are basically Thumb only. The only Thumb-2 instructions implemented by these cores are the ones for barriers and transferring data between general purpose registers and special registers. These are:
1) Without an equivalent Thumb instruction
2) Required on the ARM architecture
3) A tiny, tiny percentage of instructions executed or just not used by typical application code.
Regarding the linked test, the toolchain and optimisation flags are going to make a significant difference. I wonder how GCC (which is free and probably the most popular) and armcc (which generally produces significantly better output) would fit in there.
Would Love to get one to play with :D.
There is also a fantastic RTOS called ChibiOS that has a focus on the STM32 chips and has great support.
http://www.ti.com/ww/en/launchpad/launchpads-tivac-ek-tm4c12...
Hell, at that price, you can afford to do stupid shit with them, like put them in your friends' LED lightbulbs to screw with them, or build a physical neural-network computer, just so you can hook up LEDs between all the interconnects and make a blinklichten display.
The only problem is that they are ball grid array devices. I wouldn't necessarily say that BGA is impossible for a hobbiest, but typically you're just not going to find that kind of equipment at your local hackerspace.
It even works with the Mbed system, so you don't need to worry about setting up a compiler environment becuase you can do it all online (unless you want to - it works with GCC)
Personally, I've switched to using MCUs in QFP packages a while ago. You get a lot more pins, peripherals, speed, etc for the physical dimensions and price. If you decide to make a custom PCB for a project you don't end up stuck with a huge DIP package or having to evaluate and port the software to a new MCU in an SMD package.
QFPs are perfectly easy to hand solder with the right tools, which are in fact really basic: either a temperature controlled soldering station or a hot air station and solder paste.
I'm now experimenting with QFN packages, which reduce cost and size compared to QFP. Hand soldering seems to work ok, but I have yet to see the yield for small batch manual assembly.
I usually check the quality of their assembly under a 20x microscope. I've only found 1 board that had a bit of stray solder between 2 pins which was easy to clean. So, yes, manual assembly seems to work, but that may depend on the assembler proficiency.
Assembly: probably no. Have a look at what people are doing in C++ on the Arduino platform (the Mega328 has the same Flash/RAM).
void setup_code() {
// configure SPI
// analog to digital converters
// timers
// fix internal and external buggy hardware
}
void interrupt_handler() {
TURN_OFF_INTERRUPTS;
// packet recv
// time expired
// etc
TURN_ON_INTERRUPTS;
}
setup_code();
register_interrupt_handler(interrupt_handler);
while(1) {
// application code
}
Microcontrollers like this only have 2k of working state, the presentable complexity is in the code, not the data.