Wieso hast du den SPI Interrupt aktiviert?

Ich denke, dass hier das Problem liegt:
SPIF is cleared by hardware when executing the corresponding interrupt Handling Vector.
Dadurch bricht vermutlich folgende Schleife nie ab:
while(!(SPSR & (1<<SPIF))); // warte bis Byte gesendet