Forgive me ye Cortex-M[x] fans but my active dealings with microcontrollers date back to the times when programming these things was exciting but also art for art’s sake. I mean: a few enthusiastic men (sic) would drive say 100 miles to meet in a rundown place to meet up and rejoice over the complexity and abstract beauty of a complex arrangement in an 8-bit system that worked sort-of if you knew all the ropes, handles, and DMA channels. That’s how loose it was — in our CDP1802 user group we were happy to have the software (again sort-of) look after the thing we feared most, the software! HIDs there were none except maybe a pushbutton, a small beeper, and the odd 5-mm LED. Despite the primitive means we had available back in 1985, all of us realized the immense potential of the stuff in our hands. After all, if you can make one LED light under software control, you can launch a rocket. And believe me, one of us actually did “something similar” at CERN — though with a different micro I guess.

At the time there was much hullaballoo and praise for two gifted club members who managed to cram a cold-boot sequence into 256 bytes of static RAM with battery backup from two AA dry cells. You’d launch it, wait for the one LED on the board to light, then play a piece of code from a wacky cassette tape into the ultra-lo-fi audio input of the system. That program “automatically” checked its own integrity and that of the tape data,  then unpacked, installed, and configured a 4-Kbyte system monitor, which in turn flashed the LED two times, and then loaded a larger OS from... floppy disk into ... a 48-Kbyte dynamic RAM card. And then TINY BASIC and then beer, and games like Cosmac Space Invaders.

That was a clever feat at economizing on static RAM chips which were quasi unaffordable at the time. I looked into the code at machine level and marveled at its compactness, every byte and clock cycle was tweaked to the max — or should I say to the min — to make it all happen. As you can guess, the program was written directly in opcode (not even assembly language) — and no way any compiler could have pulled this off in 256 bytes nett.

We were poor at practical applications of our systems though and never impressed with any kind of killer application our next-door neighbors would rush off to buy. Best we achieved was traffic lights control packed in 1 Kbyte, all CMOS and stunningly low power and noise resilient.

Today, microcontroller programming is easier and more comfortable. The incredible size of the developer tools, compilers, source code files, debuggers, and data you drag over the net and through your PC may easily amount to 10,000 times that of the object code you hope to burn into your AVR, PIC or ARM micro. But it does not matter as RAM is almost free today and so are the tools. The rest is peanuts for hardware and a few cents in the monthly payment to your internet service provider, and the bill is conveniently shared with your family members. It all makes for a great business case like: code a killer application (not “app”) for the favorite micro.

Which real-life, money-making, money- or time-saving application did you develop with your microcontroller system at home? Only if it was genuinely useful, press the Comment button below and tell everyone about it.