Mach ich gerne..
Hatte ich vergessen zu erwähnen dass der MC die Daten empfängt?
Wenn ja, SORRY.
Hier der neue Code,
Code:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> #define F_CPU 7372800 #define USART_BAUD_RATE 115200 #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1) volatile static uint8_t data; void USART_init(void){ UBRRH = 0; UBRRL = (uint8_t) USART_BAUD_SELECT; /* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */ UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN); /* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */ UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); data = UDR; } void USART_transmit(uint8_t c){ while(!(UCSRA & (1<<UDRE))); UDR = c; } void USART_transmit_string(uint8_t *string){ while(!(UCSRA & (1<<UDRE))); while( *string){ USART_transmit (*string++); } } SIGNAL( SIG_USART_RECV ) { data = UDR; } int main (void) { // D A T E N R I C H T U N G : //=============================================== // PORTA Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein ) DDRA = 0b11111111; // PORTA = 0b00000000; // // PORTB Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein ) DDRB = 0b00000000; // PORTB = 0b00000000; // // PORTC Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein ) DDRC = 0b00000000; // PORTC = 0b11111111; // // PORTD Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein ) DDRD = 0b11111111; // PORTD = 0b00000000; // USART_init(); USART_transmit_string("USART INIT - OK "); sei(); uint8_t data_alt; while (1) { PORTA = UCSRA; PORTD = data; if( data != data_alt ){ USART_transmit(data); data_alt = data; } } }






Zitieren


Lesezeichen