Ok, maybe not entirely obsolete, but getting there quickly.

To put this remark into perspective, read this article about 8 and 16 Bit Microcontrollers. Unfortunately, there’s no date on this article. It may have appeared in the Embedded Systems journal, but I didn’t check. --Michael Pruemm

For more details on the architectures discussed here, see the microcontroller shootout.

Over the last ten or so years, I’ve “checked in” periodically with the state of 8-bit microcontrollers, hoping to find something more delicious (and better suited to Forth, among other languages) than the 8051 or HC11 or various PIC derivatives. I never found anything I liked.

Sure, there are lots of tiny chips out there that can do amazing things, but you’re stuck programming weird and awkward old-school architectures, in assembler (or throwing away what performance you do have by using a C compiler). Even though some of these things are cheap, many aren’t that cheap. Silicon Labs, né Cygnal, sell quite fast 8051 derivatives (25M clock, and many instructions execute in one cycle) but prices start at $7 or so, and go up from there. And you’re stuck with an 8051, albeit a very fast one.

I have hoped, for years, that my architecture of choice, the ARM architecture (hereafter “ARM”), would someday take over the world.

Well, folks, it looks like it is finally poised to do so. In 2003, Philips (now NXP) announced the LPC2100 series: an ARM 7TDMI-based, low pin-count (48 to 64 pin) microcontroller, with on-chip Flash (up to 512k in some variants) and RAM (up to 64k). It runs at 60M, and because of some cleverness in the Flash memory interface, it can mostly execute full speed directly out of Flash. These things are relatively cheap considering what you get. Prices seem to start around the $10 mark. But you get a very capable microcontroller that can double as a medium-speed DSP: it can do a 32x32 multiply-accumulate in 4 clocks (one clock per 8 bits of coefficient).

Philips/NXP are constantly adding new variations and new peripherals. The initial member, and the most “basic” in the line, is the LPC2106. It has 128k Flash, 64k RAM, lots of peripherals, but no A/D or D/A, and no CAN interface. Another interesting variant is the LPC2129, which has A/D and CAN interfaces, but less RAM (16k). See the entire family here.

Many believe, and I agree, that the ARM architecture is poised to be the 8051 for this millenium.

I’m very excited about these chips, and would like to build some kickass tools for programming them. I’ve written an ARM assembler and disassembler in Forth, and have done a lot of thinking about how to structure a native Forth. I’d also like to see some kind of small, strict functional language on one of these. Can we fit a Caml-like runtime in 8k or so?

How about the Lua programming language? It’s designed for embedding. It’s a strict functional language. Could be lots of fun.

Other than these new ARM-based chips, I think the most interesting microcontrollers now available are:

That said, I’ve decided to use a Freescale S08 chip for my Spoken Word project. (I have my reasons.)