Forum: Mikrocontroller und Digitale Elektronik UART mit ATMEGA328P, Problem beim Senden


von Gustav (Gast)


Angehängte Dateien:

Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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?

von Matthias (Gast)


Lesenswert?

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).

von Gustav (Gast)


Lesenswert?

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

von Gustav (Gast)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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
Noch kein Account? Hier anmelden.