Danke für die hinweise, ich habe jetzt mein Programm geändert und hab's so eingestellt, wie ihr es empfohlen habt. Hier mein Code
Im Endeffekt hat sich nichts geändert als Hardware verwende ich ein stk500 und ein USB to RS232 Adapter.Code:/* UART-Init: Berechnung des Wertes für das Baudratenregister aus Taktrate und gewünschter Baudrate */ #ifndef F_CPU #warning "F_CPU war noch nicht definiert, wird nun nachgeholt mit 8000000" #define F_CPU 8000000UL // Systemtakt in Hz - Definition als unsigned long beachten // Ohne ergeben sich unten Fehler in der Berechnung #endif #define BAUD 9600UL // Baudrate // Berechnungen #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden #define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate #define BAUD_ERROR ((BAUD_REAL*1000)/BAUD) // Fehler in Promille, 1000 = kein Fehler. #if ((BAUD_ERROR<990) || (BAUD_ERROR>1010)) #error Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif #include <avr/io.h> #include <avr/interrupt.h> void USART_Init( unsigned int baud ) { /* Set baud rate */ UBRR0H = (unsigned char)(baud>>8); UBRR0L = (unsigned char)baud; /* Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 1stop bit */ UCSR0C = 3<<UCSZ00; } int main (void) { USART_Init( BAUD_REAL ) ; while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */ { } UDR0 = 'x'; /* schreibt das Zeichen x auf die Schnittstelle */ }
Danke für eure Hilfe![]()







Zitieren


Lesezeichen