UART mit ATMEGA328P, Problem beim Senden

Gast #3624222
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
Angehängte Dateien:
Gast #3624237
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).
Gast #3624246
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
Gast #3624258
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren