Hi,
ich nutze IAR zur Entwicklung des AVR. Mit dem folgenden Code möchte ich
einfach eine Zeichenkette über UART senden lassen. Es kommt aber vor,
dass mit dem nachstehenden Code
die UART Übertragung verfälscht wird (0x31, 0x32, 0x01, 0x01, 0x35
statt 0x31, 0x32, 0x33, 0x34, 0x35), mit
danach ist alles OK.
Der Code ist hier. Hat das mit dem Timing zu tun?
1 | unsigned char temp;
|
2 | static char enter = 1;
|
3 | unsigned char str[] = "12345";
|
4 |
|
5 | if (enter)
|
6 | {
|
7 | enter = 0;
|
8 | uart_put_string(str);
|
9 | }
|
10 | else
|
11 | {
|
12 | temp = Usart_Rx();
|
13 | //while(1);
|
14 | }
|
15 |
|
16 | char Usart_Rx(void)
|
17 | {
|
18 | while (!(UCSR0A & (1<<RXC0)));
|
19 | return UDR0;
|
20 | }
|
21 |
|
22 | void uart_put_string (unsigned char *data_string)
|
23 | {
|
24 | while(*data_string) Usart_Tx(*data_string++);
|
25 | }
|
Gruss
Owen