I realized that in most of my projects that don't have an FPGA, I need some sort of a microcontroller.
In most of those situations, the MCU used doesn't really matter. It would just need to do some timing, and toggle some pins. Anything will work.
I have always been using AVRs and PICs for those. I have built perhaps 10-20 AVR/PIC-based projects, as that's what I go to "by default", if there are not really any requirements.
But more and more, I'm realizing that I'm just giving myself a hard time, compared to, for example, just using a Cortex-M3 based MCU.
My biggest complaint for 8-bit micros is the lack of (good) tools. PIC doesn't have good free development tools - MPLAB has restrictions for the free version (and doesn't run on Linux), and SDCC is just too buggy. AVR is a little better thanks to avr-gcc, but debugging requires very expensive tools, and only has primitive hardware support (correct me if I'm wrong, as I haven't been able to afford JTAG ICE). 8051 is in similar situation.
On the other hand, Cortex-M3 has many high quality open source tools - GCC, OpenOCD, GDB, Eclipse. Cheap JTAG programmer/debugger ($50 - just slightly more expensive than PICKit or AVRISP), and is available from quite a few manufacturers, so a lot more choices of compatible chips with different emphasis (speed, power consumption, size, etc).
Sure, for applications where you need 8-pin $0.50 micros, 8-bit ones are probably a better idea. But most of my projects are a LITTLE bigger than that. My by far most used AVR/PICs are in the $4-$5 range, and there are many Cortex-M3s in that range also.
So now I don't really see any reason why I shouldn't switch to 32-bit. Sure, I'll need to learn some new stuff, but it's new stuff I'll probably be using for a long time, so I don't mind that.
I know some people stick with 8-bit micros for 5V and DIP. That's the reason I chose to start with them as well (beside the fact that my school taught them first). Nowadays, though, all my projects are 3.3V, and all PICs/AVRs I use are TQFP anyways, so those things aren't really important any more. I make a lot of PCBs and I'm pretty good at soldering TQFP now. I can probably do them faster than DIPs (no huge pins to heat up).
The extra speed/functionality is just nice bonus. It makes my life a lot easier to stick with one architecture from the $2 range to $20 range.
What do you think?
Edit:
Using a 32-bit architecture also makes porting PC code easier, because many people assume int's are at least 32-bits when they program for PC. That means, things like compression or XML libraries can be easily ported over.
There's also no weird memory layouts to worry about. Everything is flat.