Verdrahtung: MISO(Master) --> MISO(Slave) MOSI(Master) --> MOSI(Slave) SCK(Master) --> SCK(Slave) PB0(Master) --> SS(Slave) **************************************************************/ //konfiguriert für 8 MHz #include #include #define F_CPU 8000000UL #include //volatile unsigned char count = 0; //volatile, diese Variable muss immer neu aus dem SRAM geladen werden, da sie sich ständig verändern kann unsigned int number = 0b0000010011010010; void timer1 (void); void master_init (void); void master_transmit (unsigned char number); ISR (SPI_STC_vect) { // keine Funktion? return; } ISR (TIMER1_OVF_vect) { //Senderoutine, Timer1 wird zur Auslösung des Interrupts genutzt master_transmit(number >> 8); // send high byte master_transmit(number & 0x0f); // send low byte; ursprünglich gegeben master_transmit(number & 0x0f); //_delay_ms(1000); // delay not needed? number++; } void timer1 (void) { //wird von der main einmalig ausgeführt TIMSK |= (1< 0,5s } void master_init (void) { //wird von der main einmalig ausgeführt DDRB = (1< Beginn der Übertragung SPDR = byt; //Schreiben der Daten in das Senderegister while (!(SPSR & (1< Ende der Übertragung if ((number & 1) == 0) { //lässt die LEDs am Master wechselnd blinken, unwichtig (so weiß ich, dass das Programm läuft) PORTD = 0b10101010; return; } else { PORTD = 0b01010101; return; } } int main (void) { DDRD = (1< #include #define F_CPU 8000000UL #include volatile char data; volatile char reply_char; unsigned char status; ISR (SPI_STC_vect) { //Interrupt durch low am SS Eingang, also bei jeder neuen Übertragungsaufforderung data = SPDR; if (data == 0b00000100) PORTD = 0b11111111; //LEDs an if (data == 0b11010010) PORTD = 0b00000000; //LEDs aus else { PORTD = 0b11111111; _delay_ms(100); // schnelles Blinken, wenn das Signal vom Gewünschten abweicht PORTD = 0b00000000; _delay_ms(100); PORTD = 0b11111111; _delay_ms(100); PORTD = 0b00000000; _delay_ms(100); PORTD = 0b11111111; _delay_ms(100); PORTD = 0b00000000; _delay_ms(100); PORTD = 0b11111111; _delay_ms(100); PORTD = 0b00000000; _delay_ms(100); PORTD = 0b11111111; _delay_ms(100); PORTD = 0b00000000; _delay_ms(1000); } } void slave_init (void) DDRB |= (1<