www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART mit komischen Zeichen (.c)


Autor: Zoltan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich verwende dieses Beispiel-Programm (Anhang), um mit dem AVR über den 
UART komunizieren zu können (senden und empfangen). Wenn ich jetzt aber 
nur senden möchte, ich habe das Original leicht abgeändert, schreibt 
Hyperterminal nur Schrott (siehe Anhang, Bild rechts). Das Bild links 
zeigt, dass die Hardware, Baudrate.. in ordung ist. Es muss also an 
"meiner" Code liegen, aber nur wo, dass ist hier die Frage?

Danke schon im Vorraus
Zoltan

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wenn Du eine Dezimalzahl ausgeben möchtest (z.B. 255), dann sind das 
drei Buchstaben, also drei ASCII-Zeichen. Im Fall von 255 müßtest Du 
also 50,53,53 ausgeben oder 0x32,0x35,0x35.
0xFF ist der ASCII-Code dieses ominösen Zeichens, das Du angezeigt 
bekommst.

Autor: Zoltan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi thkaiser,

danke für Dein Kommentar. Ich hab´s auch grad gemerkt, dass 
Hyperterminal nur ASCII ausgibt. Nach Deinem Vorschlag müsste ja der MC 
die ganze Arbeit machen, indem er die Werte Aufbereitet.
Gibt es kein Programm, bzw. eine bessere Möglichkeit, um die 8 bit, bzw. 
meine Hex-Zahl als eine Zahl ausgeben( und einlesen) zu können?

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt 3 Möglichkeiten:
A) Man schreibt sich auf dem PC eine Software, die die gesendeten Bytes 
als Zahl interpretiert und ausgibt (ich wüßte nicht, daß es so etwas 
fertig gäbe)
B) Man läßt den Controller die Zahl umwandeln; das ist die übliche 
Methode. Mit ein wenig division ist das schnell gemacht.
C) In C gibts sicherlich eine Funktion, die eine Zahl in einen String 
umwandelt, so daß man diesen dann ausgeben kann. Sorry, bei C kann ich 
leider nicht weiterhelfen - ich programmiere ausschließlich Assembler.

Autor: Zoltan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe bischen rumgestöbert und voila:
http://bray.velenje.cx/avr/terminal/
Mit dem Proggy kann man Werte als Dec, Hex, Bin.. ausgeben.
Das ist wirklich SUPER!!!
Gruß Zoltan

Autor: Christian Schifferle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Zoltan
Wenn du etwas im C-Tutorial auf dieser Seite rumstöberst und auch die 
Beispielprogramme bzw. Übungen anschaust, dann wirst du auf eine 
UartPrintF-Funktion stossen, die deine Zahlenwerte in Dezimal, Hex, 
Oktal etc. ausgeben kann. Ist eigentlich nichts anderes als die allseits 
bekannte sprintf-Funktion, nur dass sie direkt auf den UART schreibt.

Gruss
Christian

Autor: Zoltan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy Chrstian
Erstens danke für den Wink mit printf. Ich habe es auch gefunden, unter 
http://www.mikrocontroller.net/avr-gcc-faq.htm .

Das Problem ist, dass ich es als Resourcen-Verschwendung ansehe, wenn 
ich da einen "mikrigen" AVR habe, und der muß auch noch die Daten für 
den grossen Bruder PC vorkauen.

Mit dem Terminalprogramm (von oben) habe ich das Problem, dass ich 
mehrere Werte (mit 50Hz) vom AVR sende, und da sieht man garnichts, denn 
da rattert alles nur so durch.

Ich habe mir eher so etwas vorgestellt, wie auf den volgenen Bild:
http://www.ubootmodelltechnik.de/images/technikger...
Natürlich nicht so ausführlich...

Meine frage wäre, ob am die Funktion PrintF nicht durch den PC ausführen 
lassen könnte, bzw wie man das programmieren könnte?

Gruß
Zoltan

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache es eigentlich umgekehrt - ich sehe immer zu, daß ich eben 
nicht PC-mäßig programmieren muß. Genügend Ressourcen hat der Atmel 
allemal - zumindest für ein wenig Zahlenrechnerei.
Der Vorteil: Man kann den Atmel später an jedem PC nutzen und muß nicht 
irgendein Programm installieren, sondern verwendet das 0815 
Terminal-Programm.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.