stevech:
I love the AVRs for projects that fit in 64KB of program flash. Larger, you have the damned page switching to worry about. Like the PIC chips but they page at a much smaller size (yuck).
I wonder if Atmel’s own ARMs are about the same price as the NXP LPCs? And the '1766 is a good comparison one too.
Atmel's Cortex-M3 chips (ATSAM3U/ATSAM3S series) are very new and I'm not sure if you can actually get them yet, though they are listed on Mouser as "On Order" and priced around the same as the ATmega AVRs for the same flash/RAM, so a little more expensive than the NXP LPC1700 chips, but perhaps they are lower power/nicer peripherals/something else that makes them a good choice for some applications.
stevech:
So ARM 7 or Cortex is the way to go for 64KB and larger, in my opinion.
It sure sounds like it. AVRs get expensive very quickly when you start to get larger and of course don't get bigger than 256 KB flash/8 KB RAM (maybe XMEGA do? but I have no experience there). Anyway you can get low cost Cortex-M3 with 1 MB flash. And NXP has a whole bunch of new high performance LPC177x, LPC178x, and LPC18xx parts in development.
I would really like to see an unbiased and detailed guide on choosing the appropriate Cortex-M3 implementation for particular applications. It’s relatively easy to compare basic specs (the [Keil device database is a good resource), but there are a lot of issues that take experience and lots of study to discover. For instance, it took a while for me to realize that the LPC1300 can’t do an accurate timed wakeup from deep sleep. Perhaps there are some special features of various MCUs that make them useful in particular situations.
I mainly only have experience with NXP LPC1300/LPC1100, so here’s my thoughts:
NXP LPC1300
Pro:
Con:
-
Cannot wake up from sleep based on a timer (ignoring WDT hack that is very low precision) thus I give it a “very poor” rating for use in true low power applications like wireless sensor networking, etc.
-
I dislike the fact that the SPI peripheral can’t trigger an interrupt on a single received byte (can only trigger on half-full RX FIFO)
-
VERY FEW APPLICATION NOTES, ETC. ON NXP WEB SITE. I wish the documentation was more detailed.
Notes:
- JTAG not supported - SWD only. To program, you’ll need either an SWD adapter (cheapest is the Versaloon/vsprog which also works with OpenOCD for debugging) or you can use the serial boot loader with the flash magic utility. SWD is nice because you only need a couple of pins (two dedicated pins on the MCU).
Other families:
NXP LPC111x - Cortex-M0 part very similar to the LPC1300 but Cortex-M0 and 50 MHz max. SUPER CHEAP: less than $1 in reasonable quantities. Even lower power consumption than LPC1300.
NXP LPC1700 - Cheap, fast, plenty of RAM and flash.
STMicroelectronics STM32 - Wide selection, looks like much better and more extensive documentation, examples, etc. than NXP LPC1300.
TI LM3S - So many models that I can’t get a handle on it.
Atmel ATSAM3U/ATSAM3S - ???
Energy Micro EFM32 - ??? Energy Micro boast that they have superior energy efficiency.](http://www.keil.com/dd/parms/arm.htm)