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
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.
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?
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.
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
@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
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/technikgeruest002_2.jpg 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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.