Hall an alle

Ich versuch seit letzte Woche vergeblich den Max7221 mit dem Mega88 über SPI ansteuern. Leider werden all Digits eingeschalten.

Viellechr kann mir wer helfen Bild

Hier der Code:

Code:
int main (void)
{
	DDRC &= ~(1 << 1);
	spi_init();
	i2c_init();
	segments_init();
	adc_init();
	
	spi_senden(0x0A, 0x0C); //Helligkeit
	show_temp();
	
	while(1)
	{
	PORTC^= (1 << 1);
	delay(1000);
	}
	return 0;
}

void spi_init (void)
{
	DDRB = ((1 << PB3) | (1 << PB5) | (1 << PB2)); //MOSI, SCK, SS Output, alle anderen Input
	PORTB &= ~((1 << PB3) | (1 << PB5) | (1 << PB2));
	SPCR = ((1 << SPE) | (1 << MSTR)); 
}

void spi_senden (uint8_t adress, uint8_t data)
{
	PORTB &= ~(1 << PB2); //SS auf Low
	SPDR = adress;
	while (!(SPSR & (1 << SPIF))); //warten bis gesendet
	SPDR = data;
	while (!(SPSR & (1 << SPIF))); //warten bis gesendet
	PORTB |= (1 << PB2); //SS auf high
}

void segments_init(void)
{
	spi_senden(0x0B, 0x05); //6 Digits 0-5
	spi_senden(0x0F, 0x00); //Display Test ausschaltren
	spi_senden(0x0C, 0x01); //Normal Operation
	spi_senden(0x09, 0xFF); //BCD Code für alle Digits
}

void show_temp(void)
{
	uint8_t temp, nachkomma, zehner, einer;
	
	readfromLM75(&temp, &nachkomma);
	
	zehner = temp / 10; 
	einer = temp % 10;
	
	spi_senden(0x09, 0x00); //Disable BCD Code
	spi_senden(0x01, 0x4E); //C
	spi_senden(0x02, 0x63); //°
	spi_senden(0x09, 0xFF); //Enable BCD for all Digits
	
	spi_senden(0x04, nachkomma);
	spi_senden(0x05, einer);
	spi_senden(0x06, zehner);
}
An den Segementanzeigen sollte eigentlich die Temperatur, die über einen LM75 Temperatursensor ausgelesen wird angezeigt werden.

Danke im Voraus

Gruß Robert