mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC18XXX Programmierung!


Autor: tiger101_:de (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Erisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tiger101_:de (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BernhardT (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.