RGB LED MATRIX, speed-up and i2c

Hello!

I`m working on a prototype RGB matrix board.
It houses two rgb matrixes (final version will have 4 matrixes + a touchscreen).

Each matrix is controlled by:

  • One atmega168 tqfp
  • 3x 74hc595 for sinking the collumns
  • 8x P-fet for sourcing the rows

I don`t have a schematic, but here is the board design:
http://www.newwave-is.nl/files/matrixboard.png
Here is a video of what it does now:
http://www.newwave-is.nl/files/matrixvid.mp4

The first question i have is about speed.
It can do 5 levels of brightness now (without very noticeable flicker), but it would be nice if that can be cranked up a bit.

Am i using the SPI in the optimal way?
Or does someone see anything in the pixel reading/writing that`s clearly slow.

The second question:
Originally i wanted to control the 2-4 matrixes with another atmega (which also reads the touchscreen) via I2C.
But i noticed i cant include the TWI Library if i am using TimerOne (for writing to the matrix).

Can i make I2C run on a diffrent timer? Or should i run my rgb interrupt via another timer? (I believe the atmega168 can`t use TimerThree (wich has a library) )

Here is my code:
http://www.newwave-is.nl/files/verse_tst.pde

Thanks!