Hallo Freaks der µC-Programmierung, als absoluter Anfänger in der µC-Programmierung habe ich ein paar Fragen an euch!! Im kommenden Jahr wird mir ein Projekt übergeben, indem u.a. ein PIC18 von Microchip programmiert werden muss! Leider kenne ich die µController und µProzessoren nur aus der Theorie, d.h. ich habe keine Praktische Erfahrung mit dieser Materie! Die Firma in der ich angestellt bin arbeitet schon seit Jahren mit den PIC´s und einem C-Compiler(HI-TECH). In den letzten paar Wochen habe ich mich deshalb ein bisschen mit den Grundlagen des ANSI-C befasst. Meine Frage an die Profis jetzt, ist es möglich so einen µController "nur" mit C zu programmieren oder sind Assemblerkenntnisse unabläßlich? Wie macht man sich am Besten mit dem PIC Controller vertraut und wie lange dauert das, bis man damit vernünftige Ergebnisse erziehlen kann! Wäre echt nett, wenn ihr einem "beginner" ein paar Tipps und Anregungen mit auf den Weg geben könnt! Gruß Michael
Mit dem PIC im speziellen kann ich nicht weiterhelfen, aber mit Assembler im Allgemeinen: (Deine Frage nur C oder auch Assembler) Die Entscheidung nur C oder auch Assembler in abhängig vom Anwendungsfall. Assembler wird in der Industrie eigentlich nur dann verwendet, wenns wirklich nicht mehr anders geht - beispielsweise Zeitkritische Anwendungen, bei denen der C-Compiler unter Umständen einen Code produziert, der unbrauchbar ist. Verallgemeinern kann man dies aber nicht. Es kann aber nie schaden, wenn man wirklich "per Du" mit dem Controller ist und die Assembler -Sprache lernt. Meines erachtens ist Assembler DIE leichteste Sprache der Welt - auch wenn Sie irgendwo Grenzen hat (wer möchte schon Floating-Point Operationen in Assembler durchführen?). Sicher ist ein C-Programm auch schneller geschrieben, man muß sich bei Assembler um jede Kleinigkeit kümmern, aber das ist auch eine Gewohnheitssache. Ich würde bei Dir in der Firma mal schauen, ob bislang wirklich ausschließlich C verwendet wurde, oder bei einigen Projekten auch auf Assembler zurückgegriffen wurde. Außerdem kann es nicht schaden, den Wissenstand der (zukünftigen) Kollegen zu kennen. Ich programmiere Hobby-mäßig ausschließlich in Assembler (habe C nie gelernt).
Hallo Michael, Assembler ist der etwas schwerere Weg, da sollte man schon einige Grundlagen beherrschen (Rechnen im Binärsystem, Logikschaltungen), um zu verstehen, wie man komplexere Aufgaben aus Maschinenbefehlen zusammensetzt. Dafür lernt man fast nebenbei die µC-Hardware so richtig kennen. Einem reinen C-Programierer fällt es dagegen oft schwer, die Hardware richtig zu programmieren. Er denkt mehr in Variablen und nicht in Logikpegeln, die an den Portpins ein- und ausgegeben werden. Logische Verknüpfungen sind das A und O von Steuerungsaufgaben und nur sehr selten sind Berechnungen gefordert. Vielleicht solltest Du mal im DOS-Modus direkt auf den Parallelport zugreifen (inport, outport) und z.B. an einem Pin einen Taster anlegen, um an einem anderen Pin eine LED zu schalten (die LED wechselt bei jedem Drücken den Zustand). Da lernst Du schon mal das Tastenentprellen kennen. So ein altes Borland-C ist dafür gut geeignet, in der deutschsprachigen Hilfe werden auch alle Funktionen schön erklärt. Ich benutze es auch als Editor für meine µC-Programme, damit ich weiß, welche Includedateien für welche Funktionen benötigt werden und ob alles syntaktisch richtig ist. Peter
Also ich find beim PIC den Assembler wirklich nicht schwer. Es gibt nur 77 Befehle (bei den 18ern), dass sollte schnell zu lernen sein. Für die 35 Befehle der 16er hab ich vielleicht 1-2 Wochen gebraucht (in der Freizeit, also nicht intensiv) bis ich ohne ständig auf die Befehlsliste zu gucken. C halte ich für Verschwendung an (wertvollem) Speicherplatz. Klar programmiert man vielleicht nicht so lange aber man versteht was die MCU eigentlich macht und es ist leichter Fehler zu finden. Außerdem wenn man es erst lernen will, sollte man schon wissen was der "Kleine" da eigentlich macht. Mfg. Erisch
Hallo, zunächst mal vielen Dank für eure Antworten!!!!! Aufgrund der Komplexität "meines" Projektes kommt eigentlich nur die Programmierung des PIC18... in C in Frage, auch wenn hier viele "Assembler" Freaks sind! Außerdem wird in meiner Firma "nur" in C programmiert, da wir eigentlich keine zeitkritischen Anwendungen haben, und was das Vorurteil betrifft, C-Compiler machen viel Codeoverhead, habe ich mir sagen lassen, das dies z.B. beim HI-TECH C-Conmpiler nicht der Fall sein soll! Ist das richtig? Gibt es eigentlich gute Literatur oder Tutorial´s bezüglich PIC-Mikrocontroller im Zusammenhang mit C-Programmierung? Desweiteren würde ich mich interessieren, wielange man braucht, um die ganze Sache einigermaßen sicher zu beherrschen?
Die Einarbeitungszeit kann man nicht pauschalisieren. Abgesehen von der persönlichen Lerngeschwindigkeit kommt da noch vieles hinzu. Ideal wäre es, wenn Du ein Entwicklungssystem (also Programmiergerät und eine Experimentierplatine) irgendwie von Deiner Fa. leihweise bekommst, sofern Du Dich in Deiner Freizeit damit befassen willst. Ich komme am Besten mit "learning by doing" voran, Theorie ist mir zu fade, ich muß immer gleich ein paar LEDs blinken sehen. Als Neuanfang sollte man ein paar kleinere Projekte realisieren (LEDs ein- und ausschalten, blinken lassen, verschiedene Muster) und dann immer kompliziertere Aufgabenstellungen lösen. Es ist noch kein Meister von Himmel gefallen - mit ein wenig Übung wird das schon. Mit Literatur kann ich leider nicht weiterhelfen.
Hallo tiger, Meine Meinung als Pic-Abtrünniger C-Anfänger: ASM Kenntnisse sind oft dafür nötig um zu verstehen, was der Compiler eigentlich macht (es gibt keine Bugfreie Software, das gilt auch für Compiler), und ein und die selbe Aufgebe kann beim gleichem Compiler erheblich mehr Overhead produzieren, nur wegen etwas anderem Code. Weit wichtiger ist aber die Kenntniss der internen Struktur des uC (Also das Datenblatt des uC ausdrucken - auch wenn es 387 Seiten sind und unters Kopfkissen). Ich würde mich hier dem Peter Dannegger (ich denke ein C-Freak) anschließen. Grundgentnisse in Digitaltechnik in Verbindung mit C-Kenntnissen machen schon einiges möglich. Aber Kenntnisse der Digitaltechnik machen vieles sehr einfach (Bspl.: der PIC-Befehle RLF macht eigentlich das gleiche wie ein Schieberegister,und auch XORWF kann man im Grunde auch in einem TTL-Chip bekommen etc.)unter C sieht dass dan zwar etwas anders aus (<< bzw. ^) macht aber das gleiche. Gruß Bernhard
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.