Hallo Leute!Hab mir mein Programm vom TUT abgeleitet und von einigen Forenbeiträgen der Rest von meinem programm geht super!Daten Senden über UART geht spitze aber Empfangen tue ich nichts! Eventuell mache ich auch beim Terminal was falsch hab AVR Terminal und Hyperterminal von Windows empfangen tue ich mit beiden etwas aber senden kann ich mit keinem...vielleicht liegts ja auch am Programm????
1 | uint8_t uart_getc(void) |
2 | {
|
3 | while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar |
4 | ;
|
5 | return UDR; // Zeichen aus UDR an Aufrufer zurueckgeben |
6 | }
|
7 | |
8 | void uart_gets( char* Buffer, uint8_t MaxLen ) |
9 | {
|
10 | uint8_t NextChar; |
11 | uint8_t StringLen = 0; |
12 | |
13 | NextChar = uart_getc(); // Warte auf und empfange das nächste Zeichen |
14 | |
15 | // Sammle solange Zeichen, bis:
|
16 | // * entweder das String Ende Zeichen kam
|
17 | // * oder das aufnehmende Array voll ist
|
18 | while( NextChar != '\n' && StringLen < MaxLen - 1 ) { |
19 | *Buffer++ = NextChar; |
20 | |
21 | |
22 | |
23 | |
24 | StringLen++; |
25 | NextChar = uart_getc(); |
26 | }
|
27 | |
28 | // Noch ein '\0' anhängen um einen Standard
|
29 | // C-String daraus zu machen
|
30 | *Buffer = '\0'; |
31 | }
|
32 | |
33 | while( 1 ) |
34 | {
|
35 | |
36 | char Text[40]; // String mit maximal 39 zeichen |
37 | |
38 | uart_gets( Text, sizeof( Text ) ); // Auf eine Zeile vom Benutzer warten |
39 | |
40 | uart_puts( "Ich habe verstanden : " ); |
41 | uart_puts( Text ); |
42 | uart_putc( '\n' ); |
43 | |
44 | if( strcmp( Text, "Hallo" ) == 0 ) |
45 | {
|
46 | uart_puts( "wie geht\n" ); |
47 | uart_puts( "es ihnen\n" ); |
48 | }
|
49 | |
50 | |
51 | }
|