Forum: Compiler & IDEs UART empfang testen


von Tom (Gast)


Lesenswert?

Hallo,

ich habe gerade erst angefangen mit Mikrocontrollern zu "spielen" und 
habe versuche ein UART echo hinzubekommen.  Die initialisierung der UART 
funktioniert soweit (wenn ich einen string mit puts() sende kommt der 
auch im terminal an) aber für das echo muss ich ja erstmal vom PC was 
zum Mikrocontroller senden damit der das dann empfängt und zurücksendet. 
Meine (eventuell etwas blöde) Frage ist jetzt, wie mache ich das? Kann 
ich in einem beliebigen Terminal am PC einfach eine Taste drücken und 
das Zeichen wird dann zum angeschlossenen Mikrocontroller gesendet? Wenn 
nicht, wie sende ich dann etwas vom PC zum Mikrocontroller?

Danke schonmal für eure Tipps

Tom

von Joe (Gast)


Lesenswert?

Ja, so ist es. Bei WIN ist Hyperterminal dabei, 8 N 1 sowie Baudrate 
einstellen und ausprobieren.

Ansonsten google mal nach Tera Term, sehr gutes freies Terminalprogramm.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

danke erstmal für die Antwort, es ist also doch wie ich dachte, wenn vom 
uC eine Verbindung zum PC besteht und das was der uC sendet im Terminal 
angezeigt wird, reicht es eine Taste auf der Tastatur zu drücken um 
etwas vom PC zum uC zu senden.

Leider empfängt mein Programm (siehe Anhang) nichts.

Es sendet "test" ans Terminal wenn ich eine Taste drücke, aber ich 
bekomme kein echo von dem was ich vom PC zum uC sende.

Was ich bei diesem Programm außerdem erwarten würde ist das es in der 
while Schleife beim Emfangen "hängen bleibt" bis ein Zeichen kommt. Es 
dürfte also garnicht auf meinen Tastendruck reagieren, tut es aber.

Wäre nett wenn sich das mal jemand ansehen könnte und mir auf die 
Sprünge hilft was ich hier falsch mache.

Vielen Dank schonmal

Tom

von Peter (Gast)


Lesenswert?

dein
1
empf=Usart_Rx();
2
uart_putc(empf);
ist ausserhalb der "while(1)" schleife, da kommt dein programm natürlich 
nie hin.

von Tom (Gast)


Lesenswert?

blöder Fehler von mir, manchmal sieht man den Wald vor lauter Bäumen 
eben nicht.

Die beiden Zeilen habe ich jetzt mit in die while(1) schleife rein 
genommen.

Jetzt reagiert das Programm schonmal nicht mehr auf den Tastendruck (wie 
erwartet). Leider wird trotzdem nach wie vor nicht das Zeichen was ich 
auf der PC-Tastatur drücke vom uC zurückgesendet. Genauer genommen es 
wird garnichts zurückgesendet, da das senden ja an sich funktioniert 
denke ich das das empfangen aus irgend einem Grund nicht klappt.

Ich hoffe es ist nicht wieder so ein blöder Fehler den ich übersehen 
habe.

Hat jemand eine Idee warum das Empfangen nicht geht?

Tom

von Peter (Gast)


Lesenswert?

hi again,
versuch's doch mit debuggen (single step), dann siehst du ja, wo's 
hängt.
vielleicht hast du was bei der initialisierung vergessen?
kommen signale am rs232-rx pin an (mit 'nem oszi kannstes sehen)
eventuell beispielcodes ansehen, gibt's bestimmt: 
http://www.google.de/search?q=ucsra+udre+udr+filetype%3Ac
sorry, ich kenne deinen controller leider nicht und kann dir keinen 
besseren tip geben.

von Tom (Gast)


Lesenswert?

Also an Messtechnik habe ich leider nicht viel da, einen oszi kann ich 
mir nicht leisten, aber ne LED sollte es doch vielleicht auch tun um zu 
sehen ob da überhaupt was ankommt oder?

Der Controller ist ein Atmega8 und der code den ich nutze stammt von 
einem beispiel was ich im netz gefunden habe, nur die variablen habe ich 
umbenannt der rest ist eigentlich kopiert, deswegen versteh ich auch 
nicht warum es nicht geht.

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.