(Taking a breath, he writes, in the AVR forum...)
So I've long been an AVR devotee. Used retched PICs briefly, then AVRs for years.
Lately, I've been working with ARM7's the low end of the ARM processors. Yes, there was much to learn but no more than as an AVR novice, for the same functions on both. But the typical ARM7 has far more capability than the mega128x.
So there's the costs-more scenario. Yes, if a $1 or $3 AVR does the job, there's no debate. But compare the prices of top of the line mega128, 1280, etc. They're as much or more than bottom of the line ARMs. And there are perhaps 10 vendors for ARM chips = more competition = lower cost and hopefully, more user benefits due to competition.
And it seems to me that NXP (ex-Phillips) LPC ARMs are 25% or so cheaper than Atmel's ARMs. Maybe not, I did a quick look. The NXP LPCs seem to be very omnipresent though.
and the cottage industries like Coridium.com, SparkFun's reselling, LPCtools.com, Olimex, et al.
It's not all about cost, of course.
I've done C code for the NXP LPC2103 and 2106 of late. Easy. WinARM (GCC) is fine and with Eclipse as the IDE, it's OK. Better, the 32KB limited but free and really great IDE/compiler from IAR. I wrote a clean dual-UART interrupt driver for the FIFO-based UARTS, and a Timer interrupt routine. Hooked UARTs to C lib standard I/O. Easy.
It *is* nice to not fight the dual address space as on AVRs and other Harvard processors, esp. with GCC that has kludges like printf_P() and PSTR() macros. Sans Harvard Arch, we just have one flavor of pointers. And in debugging, you can download to RAM instead of flash, if you want.
Some/most ARMs run CPU clocks faster than flash cycle time, but deal with it by doing 64 or 128 bits at at time fetches from flash.
It's also nice to have, relative to AVRs, gobs of on-chip RAM.
I found that in thumb mode, the code is 20-30% smaller for a minor speed penality, as compared to the full 32bit ARM mode. And 32bit registers everywhere sure are nice.
I adapted FreeRTOS to the LPC2103 (32KB flash, 8KB RAM, one address space). Only about 6KB including the C library for printf() and malloc() and my serial and timer drivers and a demo program. Most of that flash is for printf() and friends.
Since Atmel is in the Arm game, I though I'd bring this up here.
What the ARM world lacks is an "ARMfreaks.net". The embeddedRelated.com group for ARM fans is a poor substitute for this forum and its great support net.
In closing, I'd like to say: "I bet I get in trouble for posting this!"