#define cs_slave1 PORTB.5 //chip select slave1 #define cs_slave2 PORTB.6 //chip_select slave2 ... STRING_FUNKTIONIERT: //SPI Master Transmit String an slave1 void spi_mt_str_slave1(unsigned char flash *buchstabe) { while(*buchstabe != '\0') { cs_slave1 = 0; SPDR = *buchstabe; while((SPSR & 0x80) == 0x00); cs_slave1 = 1; buchstabe++; } } spi_mt_str_slave1("irgendwas\0"); FUNKTIONIERT NICHT (bleibt schon beim Aufruf von spi_mt_str_slave1 in der while-schleife hängen): //SPI Master Transmit String an slave1 void spi_mt_str_slave1(unsigned char flash *buchstabe) { while(*buchstabe != '\0') { cs_slave1 = 0; SPDR = *buchstabe; while((SPSR & 0x80) == 0x00); cs_slave1 = 1; buchstabe++; } } //SPI Master Transmit String an slave2 void spi_mt_str_slave2(unsigned char flash *buchstabe) { while(*buchstabe != '\0') { cs_slave2 = 0; SPDR = *buchstabe; while((SPSR & 0x80) == 0x00); cs_slave2 = 1; buchstabe++; } } spi_mt_str_slave1("irgendwas\0"); spi_mt_str_slave2("irgendwas\0"); CHAR_FUNKTIONIERT: //SPI Master Transmit an slave1 void spi_mt_slave1(unsigned char spi_data) { cs_slave1 = 0; SPDR = spi_data; while((SPSR & 0x80) == 0x00); cs_slave1 = 1; } //SPI Master Transmit an slave2 void spi_mt_slave2(unsigned char spi_data) { cs_slave2 = 0; SPDR = spi_data; while((SPSR & 0x80) == 0x00); cs_slave2 = 1; void spi_mt_slave1('a'); void spi_mt_slave2('b');