Hallo, ich habe ein Problem beim Senden eines Zeichen über UART Ich habe meinen Mikroprozessor Atemega328P über den Pegelwandler MAX232 mit dem PC verbunden und möchte eine Verbindung herstellen. Leider funktioniert mit meinem Programm, siehe Anhang, nur das Senden eines Zeichen vom PC (Terminal RS 232) zum Mikrocontroller, jedoch nicht umgekehrt. Ich habe meinen Aufbau mit Peter Fleury's Bibliothek getestet. Mit diesem hat das Senden und Empfangen funktioniert. Daher kann man, meiner Meinung nach, einen Fehler im Aufbau ausschließen. Ich habe bei meinen Controller 2 LEDs angeschlossen. Eine Led toggelt, wenn ein Zeichen empfangen wird, das andere wenn das Programm ein Zeichen senden sollte. Prinzipiell leuchten diese so, wie sie es sollen. Ich würde mich freuen, jemand die Motivation hat, mir beim Lösen des Problems zu helfen. Danke, Gustav
Verbinde mal auf der PC Seite an deiner RS232 (9-poliger Stecker angenommen) 7 mit 8 und 4 mit 6. Und was passiert, wenn du das Kabel vom 328 abziehst und 2 mit 3 verbindest? Siehst du dann das Echo?
1 | void UART_Transmit_char(unsigned char data) |
2 | {
|
3 | LED_1_TOGGLE; |
4 | /* Wait for empty transmit buffer */
|
5 | while ( !( UCSR0A & (1<<UDRE0)) ) |
6 | /* Put data into buffer, sends the data */
|
7 | UDR0 = data; |
8 | }
|
Ja klar, solange (while) der UART-TX-Buffer NICHT leer ist, ein Zeichen ausgeben ;-) Also entweder musst Du hinter das while noch ein Semicolon ";" setzen, oder die Negierung der Bedingung rausnehmen ("!" weg).
Hallo Georg, Nachtrag meinerseits: Auf der Controller Seite habe ich nur RXD, TXD, also die Datenleitungen, und GND am 9 poligen SUB-D Stecker angeschlossen. (Pins 2,3,5) Wenn ich dem Mikrocontroller aus der Fassung nehme und die TXD und RXD "Pins" verbinde, bekomme ich am PC das Echo angezeigt. Grüße, und danke für deine Hilfe Gustav
Hallo Matthias, danke für deinen Tipp. Mein Fehler, (Ich habe die Bibliothek von einen anderen Prozessor übernommen und die Zeile vom Datenblatt. Dabei ist das Semikolon verloren gegangen.) Danke und Grüße, Gustav
Gustav schrieb: > TXD und RXD > "Pins" verbinde, bekomme ich am PC das Echo angezeigt. Gut. Dann liegt es eindeutig an deiner Software. Mach mal - wie Matthias es vorgeschlagen hat - das Semikolon hinter das while() Statement. Ich war zu faul, ein .rar zu laden und zu öffnen (und so geht es bestimmt vielen).
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.