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
Hier der Code:
An den Segementanzeigen sollte eigentlich die Temperatur, die über einen LM75 Temperatursensor ausgelesen wird angezeigt werden.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); }
Danke im Voraus
Gruß Robert







Zitieren

Lesezeichen