Für AVRStudio 5 gibt es bei den Extensions einen Terminal-Emulator. Keine Ahnung ob der gut oder schlecht ist. Ansonsten Hterm, putty oder terraterm nutzen. Funktionen wie printf kann man auch nutzen. Einmal google bemühen liefert das hier.
Grüße,
Daniel
QUOTE=ePyx;547804
> Funktionen wie printf kann man auch nutzen. Einmal google bemühen liefert das hier.
Was aber keine transparente Verwendung von printf darstellt. Wird printf verwendet, landet die Ausgabe damit immer noch im Nirvana.
Für printf-Verwendung ist schon was mehr notwendig.
In dem Link werden spezielle Ausgabefunktionen wie lcd_printf verwendet; wiklich kein Kunststück.
Disclaimer: none. Sue me.
Also mir geht es in erster Linie darum, Code wie diesen hier:
einfach auch optisch anzuzeigen, da ich bei C wirklich bei absolut 0 anfange.Code:// kap002/aufgabe001.c #include <stdio.h> int Main(void) { printf('Ei-Pod\n'); return 0 }
Zum Lernen von C und auch von anderen Programmiersprachen eignet sich ein PC wesentlich besser als ein kleiner, resourcenschwacher C ohne Betrienssystem und Standardumgebung.
Man muss ja nich gleich mehrere Baustellen gleichzeitig aufmachen...
Obiges Programm kannst du zb auf einem PC, und nach Behebung der mindestens 5 Tippfehler, übersetzen mit
$ GCC aufgabe001.c -o aufgabe001.exe
und das Programm dann ausführen mit
$ aufgabe001.exe
Was du also mindestens brauchst ist ein Compiler, und GCC leistet da sehr gute Dienste. Vorteil ist, daß GCC überall gleich tickt, und ein avr-gcc sich fast genauso verhält wie ein GCC — mit dem Unterschied, daß er keinen Code für den PC erzeugt, sondern eben für einen AVR.
Eine einfache Möglichkeit, sich GCC zu installieren, ist etwa mittels Code::Blocks. Das ist zwar eine komplette IDE, aber ob du die IDE samt Debugger, Editor etc. einsetzt oder GCC per Makefile oder wie auch immer verwendest, bleibt natürlich dir überlassen.
http://www.codeblocks.org/
Falls dir Code::Blocks zu klotzig ist, geht's hier weiter:
http://www.mingw.org/
Disclaimer: none. Sue me.
Hallo SprinterSB,
vielen Dank für Deine ausführliche Hilfe, da werd ich doch gleich mal ein bisschen stöbern.
Tjaha, den Code habe ich aus dem Buch, da gibt es Aufgaben und Listings. Ich habe versehentlich die Aufgabe kopiert anstelle des Listings![]()
Diese Komfortfunktion von Bascom gibt's in C so nicht.
Was Du machen kannst, um z.B. die Ausgabe von printf im AVR-Studio4 zu überprüfen, ist einen Data Breakpoint auf das UDR Deiner Wahl zu setzen und zwar auf die Basis-Adresse.
Bei einem ATMega16 ist das für das einzige UART die Adresse 0x0C, der Breakpoint muss also lauten:
Per F5 kannst Du durch die einzelnen ausgegebenen Zeichen durchgehen.Break when: Location is accessed
Location: IO@0x2C
Unter AVR-Studio4 gibt's auch noch unter Debug-->AVR Simulator Options-->Stimuli and logging die Möglichkeit Änderungen auf einem bestimmten Port zu registrieren, diese anzuzeigen und in ein File zu loggen.
Wenn Du nun stdout umleiten würdest: Die_Nutzung_von_sprintf_und_printf und dort die Zeichenausgabefunktion änderst, d.h. statt das UART auf den Port ausgibst,
dann siehst Du das Ausgegebene (bei Output-->To screen) und kannst es auch in eine Datei schreiben, zwar nur in Dezimal ASCII, aber immerhin.Code:int uart_putchar( char c, FILE *stream ) { PORTA = c; return 0; }
Nachtrag:
Gerade bemerkt, AVR-Studio4 merkt sich das Logging nicht in den Projekteinstellungen, das muss also nach jedem Start des Studios neu eingetragen werden.
Und schreib' Anführungszeichen statt Hochkomma, sonst wird das nix:
Code:printf('Ei-Pod\n');
Geändert von MagicWSmoke (01.05.2012 um 11:41 Uhr)
Hallo MWS,
Deine Antworten habe ich schon in einem anderen Forum stark vermisst
Danke dafür. Ich werde das jetzt alles mal ausprobieren womit ich am besten klarkomme.
Die Sache mit den Anführungszeichen war eine Aufgabe aus dem Lehrbuch, da habe ich anstelle des Lsitings
die Aufgabe herauskopiert
Gruß
Blue72
Ja, ich hatte eine Inkompatibilität meiner Person zu zweien der Mods festgestellt, was mich schließlich dazu bewegte meine Mod-Tätigkeit niederzulegen.
Per Tabellenblatt, z.B. per Openoffice lässt sich die Logdatei relativ einfach in Klartext umwandeln =ZEICHEN(HEXINDEZ(Zelle_X)), aber unbequemer ist's sicher immer noch.Danke dafür. Ich werde das jetzt alles mal ausprobieren womit ich am besten klarkomme.
Da gewöhnt man sich aber einfach dran.
Überleg' Dir mal, wieviel Code, der z.B. auf die Spezifikationen eines AVR abgestimmt ist, noch auf Prozessoren eines anderen Herstellers läuft.
Da ist auch nicht mehr viel portabel.
Hallo,
ich war mit meinen ersten Gehversuchen mit dem ATmega8 nicht nur an der Ausgabe an den PC in C und mit dem AVR-Studio gescheitert. Da hab ich mich hieran versucht: http://www.avr-cpp.de. Weil ich vorher schon ein bisschen was in JAVA gemacht hatte gefiel mir das ausgesprochen gut. Und siehe da, sowas wie ne Ausgabe an ein Terminal ging mit einem mal ganz easyder Code für das "Hallo Ei-Pot" sieht dann so aus:
Dieses SiSy das es da zum download gibt bring ein Terminalprogramm gleich mit.Code:UART terminal; ... terminal.config(9600); ... terminal.sendString("Hallo Ei-Pod"); ...
Gruß Jahat
Geändert von jahat (02.05.2012 um 13:42 Uhr)
Lesezeichen