I have been trialling a few different combination's of Matrix dimensions. Through this and conversations with Elco, I can now say that ShiftMatrix will allow you to control 1024 LED's in a Matrix setup.
I had two setups which Elco sent me.
1) 32x32
unsigned char maxBrightness = 15;
unsigned char pwmFrequency = 50;
int numColumnRegisters = 4;
int numRows=32;
Results:
Load of interrupt: 0.5095695972
Clock cycles per interrupt: 318.48
Interrupt frequency: 25600.00 Hz
PWM frequency: 1600.00 Hz
Divided over 32 rows, to have a total refresh rate of 50.00 Hz
Timer1 in use for highest precision.
Include servo.h to use timer2.
OCR1A: 624
Prescaler: 1
This worked but on my test setup this made the LED's much duller. This is due to the LED's only being on for 1/32nd of the time.
2) 16*64
unsigned char maxBrightness = 31;
unsigned char pwmFrequency = 50;
int numColumnRegisters = 8;
int numRows=16;
Results;
Load of interrupt: 0.7825686931
Clock cycles per interrupt: 489.11
Interrupt frequency: 25600.00 Hz
PWM frequency: 800.00 Hz
Divided over 16 rows, to have a total refresh rate of 50.00 Hz
Timer1 in use for highest precision.
Include servo.h to use timer2.
OCR1A: 624
Prescaler: 1
This produced a much nicer output. Didn't seem dull in any way. The load is higher but you are getting twice as many levels as before. From Elco:
Due to the interrupt overhead, it is better to have more columns. All columns are driven in one interrupt, each interrupt one row is driven. This allows you to have 32 brightness levels. It also has the benefit that the maximum on time of your LED's is 1/16 instead of 1/32.
So there you have it people, 1024 LED's can be controlled in a Matrix with just one Arduino and some ShiftRegister's. All of that and with PWM to boot. VERY COOL ELCO!