Yes, independent of the voltage.
I think I may have solved the fading problem: C++ was ignoring
struct mystruct p = buffer[buffer_size]
p.field1 = ...
p.field2 = ...
Changing this to a pointer seemed to fix everything in the disassembly:
struct mystruct *p = buffer + buffer_size
p->field1 = ...
p->field2 = ...
There was literally no code in tlc_addFade
after the check to see if the buffer was full! It would just increment the buffer size! I'm guessing that in C++ you can't access structs with '.' because it thinks you're talking about a class field.
edit: It turns out that this doesn't work in c either.
Try replacing tlc_fades.h with this tlc_fades.h
Lesson to be learned: I really need to put my hardware back together so I release stuff that actually works.