Forum: Mikrocontroller und Digitale Elektronik PIC18XXX Programmierung!


von tiger101_:de (Gast)


Lesenswert?

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

von thkaiser (Gast)


Lesenswert?

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).

von Peter D. (peda)


Lesenswert?

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

von Erisch (Gast)


Lesenswert?

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

von tiger101_:de (Gast)


Lesenswert?

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?

von thkaiser (Gast)


Lesenswert?

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.

von BernhardT (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.