Paddy schrieb:
> abgeändert und jetzt funktioniert der UART nicht mehr.
Hat er schon funktioniert?
> Wenn ich mit dem Terminal - Programm einen String sende,soll der UART
> genau denselben String wieder zuück senden über RS232 aber das tut er
> nicht.
(Du hast 'Return' gedrückt als Kennzeichnung, dass der String zu Ende
ist?)
Könnte ein Problem sein, wenn dein Terminal Programm eine Zeile nicht
mit \n abschliesst, sondern mit \r. In dem Falle ist es eine Frage der
Einstellung des Terminals
Verändere mal deine uart_gets, so dass sie sofort nach Empfang eines
Zeichens dieses Zeichen zurückschickt, damit du siehst ob und was von
der uart_gets empfangen wird
1 | char uart_gets( char* Buffer, char MaxLen )
|
2 | {
|
3 | char NextChar;
|
4 | char StringLen = 0;
|
5 |
|
6 | NextChar = uart_getc(); // Warte auf und empfange das n�chste Zeichen
|
7 | uart_putc( NextChar ); // Zu Debug-Zwecken
|
8 |
|
9 | // Sammle solange Zeichen, bis:
|
10 | // * entweder das String Ende Zeichen kam
|
11 | // * oder das aufnehmende Array voll ist
|
12 | while( NextChar != '\n' && StringLen < MaxLen - 1 ) {
|
13 | *Buffer++ = NextChar;
|
14 | StringLen++;
|
15 | NextChar = uart_getc();
|
16 |
|
17 | uart_putc( NextChar ); // Zu Debug-Zwecken
|
18 | }
|
19 |
|
20 | uart_puts( " Verlasse Schleife\n" );
|
21 | // Noch ein '\0' anh�ngen um einen Standard
|
22 | // C-String daraus zu machen
|
23 | *Buffer = '\0';
|
24 | return UDR;
|
25 | }
|
Diese Technik solltest du dir angewöhnen: Wenn du nicht weißt, was genau
in einem Programm vor sich geht, dann bau dir irgendwelche Ausgaben ein,
die dir mitteilen was vor sich geht.
Das kann sein, dass du eine LED an bestimmten Programmpunkten
aufleuchten lässt. Das kann sein, dass du einen Text auf dem LCD
ausgibst. Das kann aber auch sein, dass du etwas über die UART ausgibst.
Hauptsache, das Programm 'erzählt' dir, was es mit welchen Daten macht.
Hast du alles zufriedenstellend lauffähig, dann entfernst du diese
zusätzlichen Ausgaben wieder.