Archiv verlassen und diese Seite im Standarddesign anzeigen : Wechsel von BASCOM zu GCC/Grundsatzfragen zu GCC
Ich habe es jetzt professionell lange genug aufgeschoben, es geht aber nicht mehr anders. Ich muß von Bascom zu GCC wechseln.
Als geborene Programmierschlampe (Struktur nur wenn es muss und Dokumentation nie) habe ich jetzt die Einsicht bekommen, das Projekte ab einer bestimmten Anforderung um C (bzw. Assembler Inlinecode) nicht herumkommen. Auch um mein Projekt klarer strukturieren zu müssen. Bei Basic neige ich zum Chaos.
Bis jetzt sah mein C Selbstudium Jahr ums Jahr so aus.
GCC installier, "hello world" abgetippt, für 5 Sekunden gefreut, beim kapieren der Struktur versagt, alles deinstalliert. ;-) Allein dieses herumgehampel mit den Headerdateien und unzählingen Klammern hat mich meschuge gemacht.
Um ehrlich zu sein, ich habe schon beim Wechsel von TP4 auf TP5 bei der objektorientierten Programmierung kapituliert.
Jetzt mit dem richtigen Buch und der richtigen Motivation will ich es endlich hinbekommen.
DAS PROJEKT: Midi Footcontroller
Die Eckdaten:
MC=ATMEGA 644 (da DIL); Portexpander=MCP27S17 (SPI 16 BIT Portexpander mit Interrupt); Speicher=SD-Karte; Anzeige=2x20 VFD;
Testumgebung=EASYAVR4 Board von Mikroelektronika (Ich hatte leider gedacht, der Pascalcompiler wäre brauchbar. Leider komplett verbugt.Das Board ist aber gut.)
Was bis jetzt in Bascom lief: MIDI SEND;Daten von SD-Karte Lesen; Portexpander ansteuern;VFD ansteuern
Was in Bascom evtl. ein Problem wird oder war: Latenzzeiten, offenes Konzept, komplett freier Compiler, Compilierbarkeit unter WIN / LINUX, Extrem seltsame Fehler (HEAP oder STACK Fehler)
Was bis jetzt in GCC läuft : Bis auf das Display nix, weil ich auch mit div. Librarys die SD Karte per FAT nicht ans laufen bekomme.
Jetzt kommt der Teil wo ich Eure Hilfe brauche.
Gibt es eine LIB-Sammlung, die einen Großteil der üblichen Aufgaben abfrühstückt? Soll heißen: LCD / MMC-SD Card Support / FAT evtl. PS2
Habe bis jetzt einzelne Libs gefunden, die zum Teil aber nicht mit meiner Config laufen. (LCD muß je Datenbit einzugeben sein, SD und PORTExpander an eine SPI BUS mit unterschiedlichen ChipSelect)
Gruß,
Stephan
Besserwessi
05.11.2008, 21:47
Bei der Programmierung in C sollte man schon etwas Selbstdisziplin haben und sich um etwas Struktur bemühen. In C sind die vorgegeben Regeln halt nicht so strikt wie in Pascal. An die Vielen Klammern in die ganzen #include.. gewöhnt man sich irgendwann.
Zu FAT auf der SD-karte sollte man was passendes finden. Die Vorgefertigen Funktionen wie in BASCOM hat man aber leider nicht so einfach zusammengefaßt.
Just in diesem Moment habe ich schonmal am SPI Bus Reaktionen messen können.
Ich denke auch, das ich auch noch einige Zeit brauchen werde um die Funktionen die in BAscom fest implementiert sind in C nachbauen zu können.
Was mich an C so begeistert ist die Flexibilität. Leider ist die Lehrnkurve nicht entsprechend meiner Begeisterung.
Das mit den Klammern ist auch eher ein Übersichtsproblem. Und der Syntax ist nunmal komplett anders als in Pascal.
Ich habe mir zwei Bücher geholt, die nach Tipps aus anderen Foren als gute Anfängerbücher für C empfohlen worden sind.
C Programmieren von Anfang an von Helmut Erlenkötter (Verlag rororo Preis 9.95€) und
C++ lernen und professionell anwenden von Ulla & Peter Printz(Verlag mitp Preis 44.95€)
Beides eher allgemein ohne direkten Bezug zu einer speziellen Platform.
Ersteres eignet sich gut für mich als "Trocken" Literatur und letzteres geht sehr genau auf die Struktur ein. Aber es muss halt trotzdem irgentwie ins Hirn rein. ;-)
Die Besonderheit mit den Headerdateien macht mir ein wenig zu schaffen. Bei Pascal hatte man mit Unit's zu tun, die jedoch vom Syntax nicht anders als die Hauptanwendung waren. In C ist der Syntax dann doch "etwas" sehr verschieden.
Ich habe aber den festen willen, sowohl auf AVR und auf WIN Plattformen nur mit einer Programmiersprache zu arbeiten.
Gruß,
Stephan
thewulf00
06.11.2008, 09:53
Ich habe aber den festen willen, sowohl auf AVR und auf WIN Plattformen nur mit einer Programmiersprache zu arbeiten.
Dann mal viel Erfolg!
Nur ein Einwand/Hinweis:
Kompiler sind da, deine Gedanken auf den µC zu übertragen.
Wenn du schräg denkst, wir JEDER Kompiler genauso schrägen Code erzeugen.
Erwarte also nicht zu viel, egal, auf welche Sprache du wechselst.
sechsrad
07.11.2008, 09:03
Ich denke auch, das ich auch noch einige Zeit brauchen werde um die Funktionen die in BAscom fest implementiert sind in C nachbauen zu können.
Gibt schon schöne Sachen für i2c:
i2cEEprom , Compassmodul cmps03, Ultraschallsensor sfr02, MMC/SD usw..
Hier findest du alles ohne Bücher, gibt auch speziell eine gute Lektüre.
http://www.mikrocontroller.net/forum/mikrocontroller-elektronik
mfg
sechsrad
07.11.2008, 09:12
Habe bis jetzt einzelne Libs gefunden, die zum Teil aber nicht mit meiner Config laufen. (LCD muß je Datenbit einzugeben sein, SD und PORTExpander an eine SPI BUS mit unterschiedlichen ChipSelect)
Irgendwie versuchst du deine Basic-Bequemlichkeit weiter zu Spinnen.
Du bist aus deinem Basictrott noch nicht raus wie ich sehe.
Hast keine Zeit dir ruhige Gedanken zu machen über das Projekt:
Nach dem Motto:
-WinAvr-C installieren
-Lib runterladen
-klick, klack
- s-c-h-e-isse läuft nicht
... mist "C"..
So geht es nicht, da musst du dir schon einen Kopp machen.
mfg
oberallgeier
07.11.2008, 10:55
Hi stefan,
der größte Ballast beim Lernen einer Programmiersprache ist es, wenn man eine andere (möglichst auch noch gut) kann. Ich hatte früher FORTRAN gesprochen - bis hin zur Textverarbeitung und Bitmanipulation - das war für mich schon hinderlich. Ansonsten hatte ich von etwa Oktober/November 2007 bis Frühjahr 2008 C gelernt und konnte danach die Anfangsgründe. War halt anfangs eher Cäh und etwas krampfig, aber es ging garnicht so schlecht (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196)(dabei bin ich einer von denen, die hier den Altersdurchschnitt kaputt machen). Das ist bei anderen Sachen ähnlich: ich kenne manchen, der Snowboarden nicht kann, weil er (gut) Schi fährt - und beim Snowboard-Tandem habe ich als größtes Problem, dass ich selber passabel am Board stehe. That´s life.
... einige Zeit brauchen werde um die Funktionen die in BAscom fest implementiert sind in C nachbauen zu können ...Was soll das? Hast Du kein richtiges Projekt? Timer bauen (ich habe mir zuerst mal fürs Joggen einen Pacer gebaut, der mit 2 LED´s einen Schritttakt vorgibt), Servo fahren, sprich PWM programmieren, etc. Zur Pflege und zum Aufbau der eigenen Motivation sind kleine Schritte ausreichend!
... Leider ist die Lehrnkurve nicht entsprechend meiner Begeisterung ...Wenn Du Dich nicht für Deine Hobbies so motivieren kannst, daß Du wenigstens über kleinere Durststrecken hinweg kommst, dann solltest Du vielleicht was Anderes machen?
... zwei Bücher geholt, die nach Tipps aus anderen Foren als gute Anfängerbücher für C ...Ich hatte mir nur EIN Buch geholt. DAS Buch, Kernighan/Ritchie. Eher nicht zum Lesen gedacht, sondern zum Nachgucken - aber wenn man es schafft ein paar Seiten zu lesen, erkennt man, was die beiden Cracks drauf haben.
Dann hatte ich zuerst einfachsten Code programmiert. Warum man Headerdateien hat - aber nicht braucht - und wozu sie gut sind, hatte ich erst nach Monaten begriffen. Es lief anfangs ohne denen auch. Aber ich hatte mir eben nicht den Stress gemacht, aufwendige (möglichst allgemein gültige) Routinen aus anderen Programmiersprachen nachzubilden. WENN ich so an Basic hängen würde - dann würde ich in Basic einfach weiter machen.
Neben dem Nachvollziehen von einfachen Codes, die meistens hier aus dem Forum stammten, hatte ich als Lernutensil hiesige Tutorials genommen, hier ein paar aus meiner Favoritenliste:
https://www.roboternetz.de/wissen/index.php/C-Tutorial
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
http://de.wikibooks.org/wiki/C-Programmierung
http://openbook.galileocomputing.de/c_von_a_bis_z/
alles ohne finanziellen Aufwand. Blos lesen muss man es selbst. Aber ich hatte NIE ALLES gelesen. Hin und wieder etwas und eher oder meist, fast immer projektbezogen. Auch das RNWissen ist eine gute Fundgrube.
... Ich habe aber den festen willen, sowohl auf AVR und auf WIN Plattformen nur mit einer Programmiersprache zu arbeiten ...Wo ein Wille ist, muss man nicht weg *ggggg*. Ansonsten: Ich kenne sehr kompetente Programmierer mit sehr komplexen Projekten hier im Forum, die in Basic arbeiten.
Viel Erfolg.
peterfido
11.12.2008, 00:13
Ich weiß nicht, weshalb du wechseln MUSST.?. Ich selbst progge das Meiste in Basic, sowohl Microcontroller als auch für den PC. Viele Interessante Denkanstöße kommen aber auch aus dem C Bereich, so wie mein letztes Projekt. Da geht es um Ethernet. Den Stack habe ich zwar auch als Bascom Code gefunden, wollte dann aber doch die Variante von Ulrich Radig als Grundgerüst nehmen. So schwer finde ich C nicht. Die Denke ist halt bissel beloppt z.b. Bit setzen oder löschen, aber wenn ich mit C angefangen hätte, wäre vielleicht die Basic Variante für mich ungewohnt. Wenn man sich erstmal an die vielen Eckigen und geschweiften Klammern und den Schleifenaufbau gewöhnt hat erkennt man ein sogar Ähnlichkeit mit Basic. Der "Rest" ist learnin by doing. Was ich gerade brauche, schlage ich im AVR-GCC Tutorial nach und was da nicht steht, findet Google mit Zigtausend treffern. Auf den ersten Blick Komplizierte Sachen wie z.B. PROGMEM können einem das Leben schon erleichtern. Mit Sicherheit habe ich viele Dinge auf Umwegen erledigt, welche mit den Richtigen Befehlen schneller und platzsparender gewesen wären, aber so war es bei mir mit Basic Anfangs auch... Am erfreuchlisten fand ich übrigens, dass ich mich nicht um die Stacks kümmern musste, welche bei Bascom die häufigste Fehlerquelle sind. Dann ist mir noch aufgefallen, dass die neueste Version von WinAVR die größere Files compiliert, sodass ich auf eine ältere Version gewechselt habe.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.