// ****************************** SENDER ******************************************** // Übertragungsroutine void send_data(void) { uart_putc(adr_e); // Empfänger-Adresse senden _delay_ms(1); // Pause für verarbeitung lassen (evt. löschen für mehr geschwindigkeit) uart_putc(a1); // Fahrwert senden _delay_ms(1); uart_putc(a2); // Lenkwert senden _delay_ms(1); uart_putc(adr_e); // Empfänger-Adresse nochmal senden return; } // ein Zeichen auf UART senden void uart_putc(int c) { /* Wait for empty transmit buffer */ while (!(UCSRA & (1 << UDRE))) ; /* Put data into buffer, sends the data */ UDR = c; return; } // ************************* EMPFÄNGER ******************************************* // in main(): // Hauptschleife zum fahren while(1) { x = uart_rxd(); // Adresse empfangen // Empfangsroutine // Adresserkennung if (x == 'f') { x = uart_rxd(); if (x != 'f') { a1 = x; a2 = uart_rxd(); } else { a1 = uart_rxd(); a2 = uart_rxd(); } OCR1A = 1160 + a1; // neue Werte uebernehmen OCR1B = 1419 + a2; // _delay_ms(5); // kurz warten } } // while ruecksprung und wieder von vorne // ein Zeichen von der UART-Schnittstelle empfangen (Polling) unsigned char uart_rxd(void) { /* Wait for data to be received */ while ( !(UCSRA & (1<