“In my day we only had 1’s and 0’s. And sometimes we ran out of 0’s!” – old programmer
Cognitive dissonance means entertaining two conflicting ideas at the same time. Your head hurts. It doesn’t make sense. Some things just should not be.
Take the PMS150C, a microcontroller chip from Padauk, which operates around the corner from a Starbucks and the Go Eat Tapas Bar & Restaurant on the busy Gongdaowu Road in downtown Hsinchu City, Taiwan. It doesn’t seem like it should be there.
I don’t mean the company. The company is real enough. They’re probably nice people. But their products? They make my brain hurt.
The aforementioned PMS150C is an 8-bit microcontroller that sells for $0.03. That’s three cents. As in, pennies. That’s not even the mega-volume price you get when you order a million units. That’s for one single chip. Presumably, they get even cheaper in volume. Which is hard to imagine.
Postage is more expensive than that. A first-class stamp in the United States is currently $0.55. You could buy 17 microcontrollers and still have change left over. Cheap penny candy costs more than this MCU. It’s literally cheaper than dirt.
And the weird part is, it’s not a terrible MCU. Sure, it’s on the rudimentary side, but it’s also useful, like a hammer. It runs at 16 MHz (sort of), it has internal RAM and ROM, and you can program it in C. It plays near the same ballpark as a low-end Microchip PIC or AVR, but weirder and cheaper. Those chips are priced in double digits of pennies! Scandalous.
According to the unevenly translated website, the PMS150C is but one of a family of MCUs from Padauk. Some have more internal ROM than others. Some have more RAM. Some have A/D converters, extra I/O pins, or a hardware multiplier. Oh… you thought hardware multiplication was standard? No, no, that’s an optional feature. Without it, you get to do integer multiplication the old-fashioned way: by shifting and rotating bits.
Prices range from a low of $0.0318 for the PMS150C up to a whopping $0.1621 for the apparently gold-plated PMS232. I love prices with four significant digits after the decimal point.
Coincidentally, the PMS150C compares favorably with the Apollo 11 Guidance Computer we reviewed last week. It’s got a similar instruction set and programmer’s model, but with a much faster clock. Apart from the speed difference, their capabilities are remarkably similar.
The PMS150C and its siblings have no onboard peripherals, unlike most MCUs. It’s just the processor, RAM, ROM, a couple timers, and the I/O pins. That’s it. There is no UART, no SPI, no fancy LCD controller. If you want the pins to wiggle, you’ve got to wiggle them yourself. The PMS150C is for real programmers who hand-craft their own 1’s and 0’s. Get ready to roll up your sleeves.
In fact, the instruction set seems like it was designed specifically for bit-banging the I/O pins. There’s the usual assortment of bitwise logic instructions to toggle bits, but also a few interesting delay and timer instructions that ought to make it easier to create software-only timing loops. All instructions execute in one cycle. It’s also easy to put the MCU to sleep and have it wake on any I/O pin activity. In a sense, all the pins are interrupt pins. You could pretty easily create your own UART or PWM or other serial interface just through software.
There’s a set of shadow registers that allow you to preserve machine state before an interrupt or subroutine call. There’s a stack pointer, so you can find your way back. The machine treats memory and I/O as separate address spaces, so it’s just like an x86! Registers can be used as indirect address pointers, so it can do C-style pointer dereferencing. The company even provides its own IDE, complete with C compiler. The whole download takes about two seconds.
The onboard ROM is one-time programmable (OTP), so be careful what you choose to burn into it; there’s no going back. (Some of its siblings have flash.) But, honestly, a 3-cent microcontroller is cheaper than any flash chip, so you’re better off replacing the whole MCU when it’s time for an update. Kind of like buying a new car when the ashtray gets full.
The PMS150C is just about the cheapest surface-mount component I’ve ever seen, regardless of functionality. There are resistors more expensive than that. I have trouble understanding how Padauk is able to design, manufacture, package, and sell its MCUs so cheaply, but I guess that’s not my problem. At that price, you could replace almost any component, active or passive, with a programmable MCU.
An MCU this cheap turns the normal economics of R&D on its head. In production, the unit cost of the component is negligible. It doesn’t really matter if you’re buying 100 MCUs or 100,000 of them. What does cost money are the development tools and the engineering time. That, more than any hardware cost, will determine the ultimate profitability of the project. In effect, all the cost is up front, in development. After that, it’s nearly free.
As long as you don’t try to mail it anywhere.