Mikrocontroller-programmieren für Anfänger

  • Hi,


    ich würde gerne lernen mikrocontroller zu programmieren! Erst mal für sehr einfache aufgaben (Digitale Ein-/Ausgänge verarbeiten/schalten).


    Da ich absolut keine vorkentnisse habe, bin ich von den ganzen infos die man zu diesem thema im www findet etwas erschlagen. Ich stelle mir folgende fragen:


    -Welche Programmiersprache?
    -Welches Software brauche ich? (Habe einen PC mir Windows 7)
    -Welche Hardware (Welches board? Welche mikrocontroller) Wichtig wäre ein Board mit USB schnittstelle, da ich auf dem PC keine serielle mehr habe-
    -Welche todorials


    Vielen dank!

  • Den kann ich empfehlen:
    http://www.reichelt.de/Program…ICLE=110345;SEARCH=DIAMEX ALL AVR


    Sprache...für 8-Bit-Controller: Entweder C oder ASM.
    Speziell für Atmel-Prozessoren kannst du auch mal LunaAVR googlen und anschauen.
    Wenn es unbedingt fü technisch Unbegabte taugen soll, dann kannst du dir auch mal Bascom angucken.

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Um einen ganz einfachen Einstieg zu finden, besorg dir ein günstiges Arduino Board. Ein Uno hat alles was du brauchst. Es basiert auf einem ATMega Controller.
    Mit der Arduino Entwicklungsumgebung (für arduinoeigene- und/oder C-Befehle) werden einige Beispiele mitgeliefert, die du direkt mit dem Board ausprobieren kannst. Da kommst du schnell zum Erfolg ;) Weiterhin gibts im Internet jede Menge Hilfe und weitere Programme und Codeschnipsel für alles mögliche zu finden.


    Wenn du Spass dran gefunden hast, kannst du mit dem Arduino Board auch einzelne Controller für eigene Schaltungen programmieren.


    Ich finde den Anfang mit dem Arduino sehr gut und wenn man damit einmal klar kommt, kann man auch weiter zu gewöhnlicher C-Programmierung schreiten, sich einen dedizierten Programmer zulegen usw...

  • Den kann ich empfehlen:
    http://www.reichelt.de/Program…ICLE=110345;SEARCH=DIAMEX ALL AVR


    Sprache...für 8-Bit-Controller: Entweder C oder ASM.
    Speziell für Atmel-Prozessoren kannst du auch mal LunaAVR googlen und anschauen.
    Wenn es unbedingt fü technisch Unbegabte taugen soll, dann kannst du dir auch mal Bascom angucken.


    Habe das Buch auch schon durch ist jedenfalls eine super Einführung in das Thema

    Grösse allein ist nicht entscheidend.


    Eine Biene sammelt an einem Tag mehr Honig


    als ein Elefant in seinem ganzen Leben.

  • Mal schaun, ob ich damit auch demnächst mal anfange.
    In letzter Zeit hab ich schonmal meine ollen rudimentären "QBASIC Programmierkenntnisse" mal etwas aufgefrischt und ein paar Kleinigkeiten auf Kommandozeilenebene gebastelt (Windows 7, Batch files).


    Möchte dann aber doch mal richtig einsteigen. Ich denke da an Assembler. Hab schon nen Tut für AVR gefunden. Vielleicht schau ich auch mal bei Sprut vorbei. Pic würd ich gerne auch machen. Dürfte ja nicht soo unterschiedlich vom proggen sein, oder?
    Vielleicht schau ich mir auch mal Bascom an, das scheint ja auch sehr verbreitet zu sein.


    Low-Cost Programmieradapter hab ich mir schon geholt. Einmal ne ISP-Adapter für AVR, gibts beim Chinesen so für ca 3 Euro und dann ne Chinesen-Kopie von sonem Pic-Brenner mit Textool-Sockel zu direkten programmieren von diversen Pics (ca 10€). Hat aber auch nen Ausgang zum programmieren in der Schaltung (ICSP).


    Hab auch schon das ein oder andere mit Mikrocontroller (nach)gebastelt, mir die Dinger aber bisher von nem Freund mit den runtergeladenen Hex-Files brennen lassen.

  • Bascom (BASIC) hat tatsächlich einige Verbreitung - aber nur bei den absoluten Hobby-programmierern (vor allem die Leute vom Roboternetz arbeiten glaube ich damit) - wenn du es aber sowieso lernen musst, dann mach gleich den Schritt zu C, ich persönlich empfinde da die Syntax bedeutend logischer ("{" macht einen Block auf, "}" macht ihn wieder zu - und zwar immer. Nichts mit komischen "begin" "end" wo dann das "end" nicht immer hin darf etc)


    Assembler ist machbar, allerdings wirst du auf dieser Ebene tatsächlich Unterschiede im Befehlssatz von PIC und AVR bemerken - das ist bei C schon bedeutend weniger ausgeprägt.


  • Wenn du wirklich was lernen willst und bereit bist, dir dafür Assembler anzutun-ich kann es wärmstens empfehlen. Zwischen einem ATMega und einem PIC wirst du aber doch sehr eklatante Unterschiede feststellen können. Wenn du ASM-Code schreibst, mußt du dich mit dem internen Aufbau des Controllers beschäftigen.
    Das klingt schlimmer als es wirklich ist. Allerdings wirst du dann auch den Unterschied zwischen einer Harvard- und einer Von-Neumann-Architektur kennenlernen.
    Wenn du programmierst wird sich dass dann z.B. darin äußern, dass du beim PIC nur zwei Speicherstellen (Register) hast, mit denen du Rechnen kannst. Ein ATMega ist da weitaus komfortabler, da hast du 32 Arbeitsregister, und mit den meisten kannst du Rechenoperationen ausführen.


    ASM zu können ist bei vielen zwar verpönt...aber es bringt wirklich was. So war ich in meinem Informatikkurs, wo wir C gelernt haben, einer der ganz wenigen, die das Konzept das hinter Pointern steht, auf Anhieb verstanden haben. So habe ich dann in den Übungen munter Funktionen mit zig Ausgabeparametern geschrieben, während die meisten versucht haben sich um die Anwendung von Pointern zu drücken.
    Ich finde aber, es reicht, ASM für EINEN Controllertypen zu können. ASM unter Windows oder für ARMs, sofern ich jemals einen programmieren wollte, würde ich nicht unbedingt nochmal machen. Bei 8-Bit-CPUs hat ASM meines Erachtens auch die größte Daseinsberechtigung. Bei ASM muß man sich immer stärker mit der Hardware auseinandersetzen, mit C ist das einfacher.


    Andererseits...wer einmal ASM gelernt hat, dem sollte es nicht allzuschwer fallen, sich auch mit einem anderen Controller zu beschäftigen. Letztenendes sind es immer nur Nullen und Einsen, die man herumschiebt.

    Das Erfolgskonzept von Windows ist eine gelungene Mischung aus Marketing, Korruption, Kartellmißbrauch und der erfolgreichen Spekulation auf das Naturgesetz, daß Scheiße oben schwimmt.


    Auch aus Steinen, die einem in den Weg gelegt werden,
    kann man Schönes bauen.
    Johann Wolfgang von Goethe

  • Hmmm, also Programmiersprache ist immer so eine Sache. Willst nur mal schnell was machen, dann mach es in der Sprache die Du kennst oder die einfach ist. Willst Du aber das Programmieren seriös lernen kommst nicht um ASM rum. Wenn Du einen uC in ASM proggen kannst, dann weisst Du wie er funktioniert. C ist dann "nur" noch eine Sache der Übung. DAs Problem an Bascom und all den Sachen ist halt: Es funktioniert, aber das ist dann auch alles... Wie oder warum bleibt einem verborgen.


    Ich würde Dir raten, mach ein paar ganz kleine Sachen in ASM und steige danach auf C um


    Grüessli