Du musst das SPIF zurücksetzen.

Code:
		SPDR = data;
		
		// wait for xmission to complete
		while (!(SPSR & (1 << SPIF)));
			
		// clear SPIF	
		data = SPDR;
Ist zwar C, aber das raffst du schon