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