What is the place of 8- and 16-bit microcontrollers? Why hasn't 32-bit taken over?
Maybe a year ago, there was a significant difference between the low end 8-bitters and the cheapest 32-bit microcontrollers. Not the case any more.
Based on Digi-Key bulk pricing, you can get an 8-bit PIC10F200 for 35ȼ in 2500 quantities in a SOT-23-6 package. You get a 32-bit CY8C4013SXI-400 (ARM Cortex-M0) for 36ȼ in 2500 quantities in a SOIC-8 package. (Digi-Key bulk pricing is not realistic in terms of what manufacturers actually pay, which is probably much less, but I think it is a valid to use for a rough pricing comparison between different products for similar quantities.)
So the OP is right, they are converging.
So why aren't the 32-bit chips being used more? Well as I said in my first paragraph, this price point and size parity only happened in the last year or 18 months. And they've still got a long ways to go before there are enough chips to be competitive.
Of the 6875 ARM chips available from Digi-Key, there are only four in stock with quantity pricing under a dollar. Four. Meanwhile there are hundreds of 8-bit chips under a dollar for engineers to choose from.
But lets say there were a least a few dozen low-end 32-bit micros available. Would they automatically be picked over the 8-bit ones?
First of all you have to get engineers aware of them. There is always a lot of resistance to change. New things to learn -- from a hardware standpoint, learning how to incorporate the new chip into a circuit. There are new tools, like in-circuit programmers, new compilers, etc. For the firmware engineers, learning how to use a brand new set of peripherals and timers (mostly register layouts and bit meanings).
32-bits is nice and all that, but unless one needs to do a lot of heavy computation, what's the point? If you have only four GPIO pins, accessing them internally as a 32-bit register gives no advantage over using an 8-bit register.
I think power consumption is always going to be in favor of the 8-bit micros.
For example, the PIC10F200 draws 175 µA running at 4 MHz and 2v and 100 nA in sleep mode. The CY8C4013SXI-400 draws approximately 800 µA running @ 4MHz and 2v and 1 uA in sleep mode. (The datasheet for the CY8C4013SXI didn't have numbers for either 4 MHz or 2v, so I had to do some estimating -- the datasheet says it draws 2 ma @ 6 MHz and 3.3v.)
So the ARM draw 4.5 times as much current when awake, and 10 times when sleeping. Doesn't seem like a lot, but its the difference between running on a coin cell for 3 months or for a year. (I'm assuming both microcontrollers are mostly doing timing, updating ports etc. and not doing real heavy computation. If the latter is the case, and the 8-bit micro has to do a lot of multi-byte arithmetic for an extended period of time, it loses some of its advantage.)
It's interesting that the ARM draws about four times as much current as the 8-bitter, and it in turn has internal registers and data paths that are four times as wide. I don't think this is a coincidence. For CMOS, power consumption is roughly proportional to the number of transistors being switched, and the ARM is obviously doing a lot more per instruction executed.
As more ARM vendors bring out low-end chips, I wouldn't be surprised if vendors like Microchip dropped their prices even further. In any case, with the prices more or less equal, similar size packages, but a lot less 32-bit chips to chose from, I think the 8-bit microcontrollers are still going to be around for awhile -- particularly because you've got tens of thousands of engineers familiar with them.
Three main points:
- Price
- Size
- Power consumption
50¢ when you're ordering 10,000 chips is rather a lot of money. Even more when you're ordering 100,000 chips.
You can get 8 bit chips considerably smaller than 32-bit chips, such as the PIC10 that is available in an SOT23-6 package.
32-bit chips, because they are generally clocked faster, and do more, consume much more power than a little 8-bit chip. Batteries drain faster, power systems have to provide more current (and hence be more costly), etc.
After all, why would you buy a juggernaut to take a cup of sugar next door?
The uC applications I've developed for commercial products almost never handled data sizes bigger than 8 bits; so even if 32-bitters were the same price as 8-bitters, there would still be no benefit. As someone else said, we go for what's familiar, so we can punch it out more quickly. The last one I developed however turned out to push the PIC16 I used to the limit in every way-- but that wasn't because of the data size. If I do any more like that, then I really should learn ARM.