Extending analog outputs?

Are you looking to drive LEDs ? How many ? In a matrix ?

I think there are some boards out there now for Arduino to drive bunches of LEDs. SeedStudio has one ?

I'm in the midst of designing an Arduino software compatible board targetted to large scale, inexpensive input and output, digital (and high power options) and analog (digital calibrated and diffed a2d in and PWM out).

Intent is to provide theoretically unlimited inputs and outputs and that led me to strongly consider 5940 for its' daisy chain support and LED/controlled current output. Initial application is for a Lithium battery management system that was originally going to use opto-couplers so LED support was nice.

But I ended up rejecting the 5940 for my design primarily for cost reasons. For the $4+ qty 1 price or $2.42 qty 5000 price you could also get 8 or 13 times as many 74AHC595 shift registers (8 bits each) and do the equivalent of the 5940 PWM in software. If you need higher current you can add 3 cent transistors if you have the space.

I think the 5940 has a "dirty secret" which is that you still have to pump the chain every 4096 clock pulses. You don't just set the 12 bit PWM values and let the MCU rest. I feel that if you have to pump the chain anyway, you might as well do PWM in software, and that then gives you more flexibility in PWM methods.

5940 seems just to be a 192 bit shift register and 16 counters, plus constant/modifiable current control. MCU could rest if you used some of those ancient quad 64 bit shift registers to recycle/reprime the PWM regularly. But that requires board space and adds cost.

Anyway, my design is still just a design and not yet a board, but it will have a theoretical (! with slow clock rate?) unlimited length daisy chain of output and input shift registers through which PWM can be done in software. Perhaps some input/output muxing could also provide hardware support.