UART mit ATMEGA328P, Problem beim Senden

Gast #3624222
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
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
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
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).

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.