Hallo, Ich versuche mithilfe von UART mit meinem Mikrocontroller (ATmega32) einen vom PC aus gesendeten String zu empfangen. Das Problem ist, dass ich mit folgendem Code char line[20]; UART_gets( line, sizeof( line )); lcd_string(line); den ich hierher (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Der_UART) habe, nach dem Senden des LF nur max. 2 Zeichen empfange / ausgegeben werden. Woran könnte das liegen? Wie bekomme ich es hin, dass ich ganze Zeichenketten empfangen kann? Danke Jonas E.
Prüfe, ob der Empfang nicht richtig funktioniert, oder ob die LCD Ausgabe nicht richtig funktioniert. Gibt erstmal einen hardcodierten String aus. Ansonsten prüfe die Einstellung der Bitrate, Stop Bits und Fuse für die Takt-Teiler. Kannst Du denn erfolgreich vom Mikrocontroller an den PC senden?
Meiner Meinung nach funktioniert der Empfang nicht richtig. Das Senden vom Mikrocontroller aus und das Anzeigen auf dem LCD funktionieren ansonsten (hardcoded) einwandfrei, auch mit Strings mit Längen > 2. Das lässt darauf schließen, dass die Daten nicht richtig empfangen werden. Die Bitrate etc. sind nach Angaben im Tutorial von mir gewählt und eingestellt worden. Findest du einen Fehler in dem Code, den ich von der Seite benutze?
Versuchs doch mal direkt mit:
uint8_t uart_getc(void);
In Form von:
>>>
uint8_t Aussi [2];
Aussi [ 1 ] = 0; // String zu ende
for (uint8_t i=0; i<50;i++) // 50 Etwasse dann Schluss von mir
// aus auch nur 49 oder eine LCD-Zeile
{
Aussi [ 0 ] = uart_getc (); // Zeichen holen
lcd_string(Aussi); // Echo
}
<<<
Während des Versuchs: Fingen weg von den Sonderzeichen incl. line feed
Hallo Amateur, dein Code hat einwandfrei funktioniert! Danke für deine Hilfe :D
Du kannst also alle Zeichen korrekt einlesen und ausgeben. Aber wenn Du Zeichen zu einem String sammelst, funktioniert es nicht mehr. Die Routine für den String sieht aber sauber aus. Nun rate ich mal: Das RAM ist überfüllt, so dass der Stack dein char-array überschreibt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.