I've been lurking around for a solution that serves as a DC UPS controller that handles charging, load switching, monitoring and communication.
After experimenting and literature researching on a variety of micro controllers, I eventually chose the EFM8 Universal Bee micro controller.
Here is a brief summary of my experience with it, the platform is Universal Bee Starter Kit that Dave featured in his mail bag.
My overall experience is positive. It took me ~2 hours to write an USB echo program from scratch using its VCPXpress library with some reference from its VCPXpress demo code.
There are some quirks, such as the demo code is not written very well (Rx soft lock if nothing to Tx), and the library triggers a linker warning which can be suppressed.
The entire process form learning the IDE, learning API for VCPXpress, reading reference manual and writing a simple new line tokenizer and a command parser as well as all debugging and tweaking took less than 8 hours.
For the price less than an USB-UART bridge (~$1.1 each at single quantity), the EFM8 is really a cost effective solution, it also comes with a fairly accurate ADC with 50ppm/C reference, 3 channels of PWM, and tons of other peripherals that I do not need (I2C slave, SMBus master, SPI, UART, comparator, CRC and others).
Of course, its processing power is not nearly on par with modern ARM based solution -- it only comes with 16KB of FLASH which 9K of them are occupied by VCPXpress, and 2304 bytes of RAM including xdata section. It can only run up to 25MHz without prefetching, and 48MHz with prefetching, and it is only powered by a wimpy modernized 8051.
Attached is a demo code I wrote that controls 3 on-board LEDs from serial command. To run it, you will need Universal Bee Starter Kit and Silabs CP210x VCP driver installed.
Send RON, GON or BON to turn on red, green or blue LED, and send ROFF, GOFF or BOFF to turn off the respective LED.
Once again, it is really cool to get a simple USB firmware running and actually doing useful things for only 76 effective lines of code.