Hallo! als langjähriger, ehemaliger BASCOM-Nutzer möchte ich endlich auf C umsteigen und habe mir dafür (auf eine Empfehlung hin) Atmel Studio 6.2 (Version 1563 SP2) installiert. Die ersten Gehversuche (auch unter Zuhilfenahme Eures AVR-GCC-Tutorials) sind durchaus erfolgreich, d.h. die Maschine macht tatsächlich, was ich will. Was mir jedoch schmerzlich fehlt, sind Standard-Funktionen, so wie ich sie unter BASCOM ganz selbstverständlich kannte. Ich würde mir durchaus zutrauen, die meisten der von mir benötigten Funktionen selber zu schreiben, aktuell z.B. eine Routine für die Umwandlung einer Fließkommazahl in eine Zeichenkette mit einer vorgegeben Anzahl Nachkommastellen (entsprechend der BASCOM-Funktion FUSING, z.B. Str1 = FUSING(s1,"#.##") - das nur mal als ein Beispiel von vielen!) Ich denke aber, es kann doch nicht sein, dass unter AVR-GCC, bzw. Atmel Studio jeder Anwender das Rad neu erfinden muss! Natürlich habe ich mitbekommen, dass es in Atmel Studio 6.2 irgendwo irgendwelche Headerdateien gibt, die man bei Bedarf einzubinden hat. Und mithilfe des Windows-Explorers habe ich in den Tiefen der AVR-Studio-Verzeichnisstruktur auch einige davon aufspüren können - was mir allerdings nichts gebracht hat, den meist fand ich nur seitenlange Compilerdirektiven ("#ifndef...") und extern-Verweise auf die eigentlichen Funktionen. Im Web fand ich eine Standard-Bibliothek namens avr-libc. Aber die scheint wohl eher für WinAVR geschrieben worden zu sein (wobei ich den Eindruck habe, dass WinAVR eine ältere Entwicklungsumgebung, vergleichbar mit AVR Studio, jedoch inzwischen offenbar "tote" Umgebung zu sein scheint). Bevor ich jetzt avr-libc als "artfremde" Datei einbinde, richte ich meine Frage an Euch: Gibt es irgendwo eine komplette Übersicht und darüber hinaus auch konkrete Hinweise für den Gebrauch der einzelnen unter Atmel Studio 6.2 verfügbaren Standard-Funktionen und wenn ja: wo finde ich diese? Zunächst nur für die normalen 8-Bit-ATMegas, später gerne auch für XMega und vielleicht sogar für AVR32. Vielleicht muss ich noch nachtragen, dass bei mir die F1-Hilfe unter ARV Studio 6.2 nicht funktioniert. Da öffnet sich zwar ein Fenster ("Microsoft Help Viewer 1.1"), aber hier steht nur "Auf dem Computer wurden keine Inhalte gefunden." (obwohl ich eine Standard-Installation von AVR Studio 6.2 durchgeführt hatte). Und wenn ich dann in diesem Fenster die Option "online" wähle und einen bestimmten Suchbegriff eingebe(z.B. "Standardfunktionen"), hilft mir das angebotene Kauderwelsch in keinster Weise weiter. Ich sag schon mal Danke für Eure Antwort! Norbert
Wie hast du denn die Bascom Funktionen gelernt? Die kamen dir wohl auch nicht einfach zugeflogen. Also ich würde googlen nach float in string in C. Unter den Treffern steckt dann irgendwo sprintf. Das ist noch viel mächtiger als das was du vorhast. Ein fltoa gibt's glaube ich auch, weiß aber nicht ob das in der Stdlib ist. LG
Du suchst wohl die C-Standard Bibliothek. Die sollte mit deinem Atmel Studio schon mit installiert worden sein. Hier ein paar Links mit Dokumentation der Standard Bibliothek: http://www.cplusplus.com/reference/clibrary/ http://en.cppreference.com/w/c/header Zu deinem FUSING Beispiel kannst du dir mal sprintf anschauen. Die Funktion kann allerdings deutlich mehr und braucht entsprechend viel Speicher im Flash und ist möglicherweise langsamer als andere spezielle Lösungen.
Norbert schrieb: > Bevor ich jetzt avr-libc als "artfremde" Datei > einbinde, richte ich meine Frage an Euch: Die AVR-Libc ist weder "artfremd", noch musst du sie extra einbinden. Du benutzt sie längst. Und deren Doku sagt dir auch, was von der C-Standard-Bibliothek alles implementiert ist, welchen Besonderheiten und Einschränkungen es gibt, etc.
Hallo Cbo, Sebastian und Stefan, Euer Forum ist ja unglaublich schnell, habe meinen Thread kaum noch gefunden - Respekt! Ganz herzlichen Dank für Eure Antworten! @Cbo: Das Erlernen der Bascom-Funktionen war wirklich kinderleicht. Sofern man wirklich voll aufm Schlauch steht (und nicht bereits eine context-bezogene Frage hat), platziert man den Cursor auf eine leere Stelle im Code und ruft mit der F1-Taste die allgemeine Hilfe auf. Unter dem Reiter "Index" findet man sofort eine komplette, alphabetisch sortierte Liste aller Funktionen (es sind mehrere hundert). Hier doppelklickt man auf einen Eintrag, den man für möglich hält, nehmen wir als Beispiel die Funktion STR ("Returns a string representation of a number"). Beim Doppelklick öffnet sich rechts daneben die genaue Beschreibung dieser Funktion nebst Verwendung aller verfügbaren Parameter und ein Code-Beispiel. Und jetzt kommts: Für den Fall, dass dies nicht die gesuchte Funktion war, gibt es die Rubrik "See also". Hier werden ähnliche Funktionen aufgelistet, in diesem Fall sind das VAL, HEX, HEXVAL, MCSBYTE, STR2DIGITS und FUSING. Da braucht man wiederum einfach nur draufzuklicken (nehmen wir z.B. FUSING) und sofort erscheint die ausführliche Beschreibung eben dieser Funktion und darin erneut weitere Möglichkeiten. Im Beispiel sind das die Funktionen FORMAT und CONFIG SINGLE, usw... Auf diese Weise erschließt sich nahezu spielerisch und vollkommen stressfrei das komplette Funktionen-Spektrum - und das sogar ohne irgendeine Header-Datei, deren Namen man erst einmal kennen muss bevor man an die Funktionen heran kommt. Bascom ist also echt leicht zu lernen, nach meinem Empfinden wesentlich leichter als C. Der einzige Nachteil: Es ist eine Insellösung. Nur deshalb will ich C lernen. @Sebastian: Die von Dir genannten Links (inclusive der dahinter stehenden einzelnen Beschreibungen) sind genau das, was ich nun schon seit Wochen gesucht hatte - herzlichen Dank dafür! Ich habe sie mir sofort in meine Favoritenliste eingetragen. Die printf-Funktion begegnete mir bereits in sämtlichen mir zugänglichen C-Lehrbüchern - die sich aber leider immer nur mit PC-Programmierung befassten. Ein ordentliches (gebundenes) Lehrbuch über die Programmierung von Mikrocontrollern unter C habe ich leider noch nicht gefunden - kennst Du eventuell eines? Ich nahm an, dass printf nur für die Ausgabe auf den PC-Bildschirm geeignet ist. Erst jetzt habe ich begriffen, dass es neben printf auch noch verwandte Funktionen gibt, u.a. sprintf für die Ausgabe in eine Zeichenkette - also genau das, was ich gesucht hatte! Ob die Funktion zu mächtig ist, werde ich noch prüfen. Auf jeden Fall gefällt mir die variable Anzahl an übergeben Variablen (bzw. auch die dahinter stehenden "Variadic functions" - auch nach soetwas hatte ich schon lange gesucht). @Stefan: Die Vermutung, dass in meinem AVR-Studio längst eine Standard-Library enthalten ist, hatte ich ja auch. Nur nach deren Dokumentation, die Du erwähnst, suche ich bis jetzt vergeblich. Kannst Du mir dazu einen Tipp geben? Viele Grüße Norbert
Norbert schrieb: > Nur nach deren Dokumentation, die Du > erwähnst, suche ich bis jetzt vergeblich. Kannst Du mir dazu einen Tipp > geben? ??? Was genau muss man denn bei Google eingeben, um die Dokumentation zur AVR-Libc nicht zu finden?
Norbert schrieb: > Ich nahm an, dass printf nur für die Ausgabe auf den PC-Bildschirm > geeignet ist. Du kannst die Ausgabe "umleiten", so dass du mit printf z.B. direkt auf die serielle Schnittstelle schreiben kannst.
Hallo Stefan, ich bin ein strikter Befürworter integrierter Lösungen (weil nur dann wirklich gewährleistet ist, dass alles zusammen passt). Ich hatte gehofft, dass es unter ARV-Studio selbst eine Dokumentation zu den darin integrierten Standard-Funktionen gibt. Die Sache mit dem Umleiten der printf-Funktion werde ich mir ansehen - Danke! Viele Grüße Norbert
Norbert schrieb: > Die Vermutung, dass in meinem AVR-Studio längst eine Standard-Library > enthalten ist, hatte ich ja auch. Nur nach deren Dokumentation, die Du > erwähnst, suche ich bis jetzt vergeblich. Kannst Du mir dazu einen Tipp > geben? http://www.nongnu.org/avr-libc/
Norbert G. schrieb: > ich bin ein strikter Befürworter integrierter Lösungen (weil nur dann > wirklich gewährleistet ist, dass alles zusammen passt). Die Lösung von AVR selbst ist eine Zusammenstellung von eigenen Produkten und Fremdprodukten und stellenweise merkt man das. Dafür aber ist sie kostenlos. Eine vollintegrierte Lösung bekommt man sicherlich bei den üblichen Verdächtigen wie IAR - aber nicht ganz so kostenlos. Bei BASCOM ist die Situation insoweit anders, als eine solche Insellösung sich nicht auf andere Produkte stützen kann.
:
Bearbeitet durch User
Norbert G. schrieb: > ich bin ein strikter Befürworter integrierter Lösungen Wenn dir die Doku lieber ist, die Atmel "integriert" hat: http://www.atmel.com/webdoc/avrlibcreferencemanual/
Hallo an alle, die mir geschrieben haben, fürs Entpacken der nongnu-Doku http://www.nongnu.org/avr-libc/ mit der Endung .bz2 hätte ich für 35 Euro ein kostenpflichtiges Zip-Programm runterladen müssen. Von der kostenlosen Testvariante habe ich vorsichtshalber und fairerweise Abstand genommen. Hingegen kam ich an die unter AVR-Studio "integrierte" Variante http://www.atmel.com/webdoc/avrlibcreferencemanual/ sofort dran. Ich vermute, dass der Inhalt der gleiche ist. Allerdings dauerte es eine Weile bis ich auf die von mir gesuchte Auflistung und Beschreibung der einzelnen Funktionen stieß; sie steht im Inhaltsverzeichnis ziemlich weit unten unter "Modules". Vielen Dank an alle! Norbert
Norbert G. schrieb: > fürs Entpacken der nongnu-Doku Die steht dort auch ungepackt unter "Online Users Manual": http://www.nongnu.org/avr-libc/user-manual/index.html > mit der Endung .bz2 hätte ich für 35 Euro ein kostenpflichtiges > Zip-Programm runterladen müssen. Oder das kostenlose 7-zip.
:
Bearbeitet durch User
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.