PIC Mikrocontroller gibt es in vielen verschiedenen Sorten. Wir beschäftigen uns hier vornehmlich mit den PIC18F Typen. Nachfolgend möchte ich Euch etwas in die Grundzüge und die wichtigsten Eigenschaften der PIC Mikrocontroller einführen. Wie Ihr die PIC dann wirklich (in C) programmiert, könnt Ihr dann in meinem PIC-C-Tutorial nachlesen.

Was ist eigentlich ein Mikrocontroller? Ein Mikrocontroller ist im Grunde genommen ein kleiner PC. Und hier bedeutet klein, dass sich alles auf einem einzigen Chip befindet. Die Komponenten reichen von der CPU an sich über digitale sowie analoge Ein- und Ausgabe bis hin zu Timern/Countern und weiteren Hardware-Modulen. Außerdem ist alles wesentlich kleiner ausgelegt als man es von einem normalen PC gewohnt ist. So stehen einem Mikrocontroller natürlich keine GByte oder gar TByte an Speicher zur Verfügung. Ein Mikrocontroller befindet sich eher im Bereich von KByte. Aber das ist auch in Ordnung, da wir weder ein großes Betriebssystem noch irgendwelche großen “Programme” auf dem Controller laufen lassen. Ihr werden schnell feststellen, dass selbst die “wenigen” KByte eines Mikrocontrollers ganz schön viel sind und für eine ganze Menge Algorithmen ausreichen.

Das Foto zeigt beispielhaft ein Raspberry Pi 2 mit einem ARM Cortex

Wofür braucht man Mikrocontroller?

Der Verwendungsbereich für Mikrocontroller ist immens. Mikrocontroller sind aus unserer Welt nicht mehr weg zu denken. Heut zu Tage ist in fast jedem elektronischem Gerät ein oder sogar mehrere µC verbaut. Nur um mal ein paar Beispiele zu nennen: Toaster, Mp3-Player, Backofen, Handy, Kamera und noch vieles mehr.

Man kann mit µC viele Aufgaben erledigen, die sonst einen sehr großen Aufwand an entsprechend logischen Bauteilen hätten (vgl. diskreter oder gar analoger Aufbau). Daher verwenden wir Mikrocontroller für Steuerungen und Regelungen jeglicher Art. Das Foto (siehe oben) zeigt zum Beispiel einen Quadrocopter. Auch dieser wird selbstverständlich von einem Mikrocontroller gesteuert.

Was brauche ich alles

Um mit Mikrocontrollern, speziell PIC-Mikrocontrollern, arbeiten zu können, müsst Ihr ein paar Anschaffungen im Vorfeld tätigen. Dieses Tutorial beschäftigt sich mit Mikrocontrollern der Firma Microchip. Dabei liegt der Fokus vor allem auf der PIC18F-Familie, später dazu mehr.

Entwicklungsumgebung

Als Entwicklungsumgebung bezeichnen wir eine Art Texteditor, der uns beim Schreiben unserer zukünftigen Programme unterstützt. Sie werden auch als IDE (integrated development environment) bezeichnet. Es bietet sich für PIC Mikrocontroller  besonders das Programm MPLABX IDE  an. Die Software stammt direkt vom Chip-Hersteller Microhip und ist kostenlos verfügbar. In dieser IDE können Programme zum Beispiel in Assembler oder C geschrieben und mit einem Programmiergerät direkt in den PIC übertragen werden. Die folgende Grafik zeigt das Arbeitsfenster der Software. MPLAB X ist sowohl für Windows als auch für Linux und Mac OS erhältlich.

Ich habe für die Entwicklungsumgebung einen eigenen kleinen Artikel geschrieben, der Euch durch die ersten Schritte (Projekt anlegen, Dateien erzeugen, …) leitet.

Wenn Ihr beabsichtigt nur in Assembler (kurz ASM) zu programmieren müsst Ihr euch lediglich die IDE (MPLABX) herunterladen. Die Software ist direkt auf der Homepage von Microchip zu finden (siehe Link). Wenn Ihr die PICs hingegen in C programmieren wollt, so empfehle ich euch den Compiler XC8 zu benutzen. Hierbei handelt es sich um eine zusätzliche Software, die Ihr auf eurem PC installieren müsst. Die Reihenfolge spielt dabei keine Rolle. Der Compiler sorgt später dafür, dass das von euch erstellte C-Programm so übersetzt wird, damit es (nach einer We iterverarbeitung durch den Assembler) vom Mikrocontroller verstanden wird. Auch zu diesem Compiler findet Ihr einen kurzen Artikel, der vor allem Umsteigern von anderen Compilern dabei hilft Unterschiede zu finden.

Programmiergerät

Wenn Ihr ein Programm fertig geschrieben habt wird aus dessen Datei(n) eine HEX-Datei in Maschinensprache generiert. Diese hat dann die Dateiendung *.hex. Es handelt sich um eine Datei in der lauter Zahlen enthalten sind, denn nur diese Sprache versteht ein Computer bzw. Mikrocontroller. Und diese Hex-Datei muss schlussendlich in den PIC hinein. Diesen Vorgang bezeichnet man im Allgemeinen als brennen oder auch flashenDas nachfolgende Foto zeigt ein Modul (das PICKit3), welches diese Aufgabe erledigen kann.

Quelle: Yutaka Tsutano

Euer Programm wird in den Speicher des PIC geschrieben. Ich empfehle Euch das PICKit3  (vgl. Foto). Es handelt sich hierbei um einen Brenner und Debugger in einem. Das bedeutet Ihr könnt nicht nur das Programm (Hex-Datei) in den PIC laden, sondern auch noch euren PIC in der fertigen Schaltung debuggen (Haltepunkte im Programmcode setzten und Variablen auslesen). Das ist beim Entwickeln von Software ein ganz wesentlicher Bestandteil und hilft extrem bei der Fehlersuche. Das PICKit3 ist das Tool für Einsteiger und Fortgeschrittene (sehr gutes Preis/Leistungsverhältnis*). Ein weiterer nicht zu unterschätzender Vorteil des PICkit3 ist, dass es zu 100% von MPLABX unterstützt wird. Sprich das Schreiben und das Brennen geschieht alles innerhalb von MPLABX und benötigt keine weitere Software.

* Zuletzt ließen sich große Preisschwankungen feststellen. Stand 2015 kostet das PICKit3 ca. 50€. Es war zwischenzeitlich für auch mal für 30…40€ zu bekommen. Vermutlich liegt das am aktuell schwachen Euro. Es lohnt sich also definitiv mal ein Blick auf eBay!

Mikrocontroller

Neben den ganzen bereits erwähnten Tools benötigt Ihr benötigt natürlich auch noch den PIC (Mikrocontroller) selber. Wie ich schon weiter oben erwähnt habe, würde ich euch für den Einstieg zum Programmieren in C die PIC18F empfehlen. Warum das so ist hat mehrere Gründe, doch vor allem, da es wesentliche Verbesserungen im Vergleich zu den PIC16F-Modellen gibt. Wenn Ihr jedoch zunächst mit Assembler arbeiten möchtet um z.B. die “Innereien” des Controllers besser kennen zulernen, dann könnt Ihr auch mit den PIC16F anfangen (in dem Fall solltet Ihr die Webseite von Sprut unbedingt besuchen, da er besonders mit Assembler arbeitet). Als Bezugsquelle kann ich euch das Versandhaus Reichelt empfehlen.

Motivation

Zu guter Letzt eine ordentlich Portion Motivation. Es kann durch aus schon mal vorkommen, dass es mehrere Tage dauert bis ein Programm so arbeitet, wie Ihr euch das vorgestellt habt. Und das kann mitunter auch ganz schön Nerven kosten 🙂 Manchmal sind es die einfachsten Dinge die man wieder und wieder vergisst. Doch dann ist es um so schöner, wenn das Programm an Ende funktioniert 🙂 Man findet beim Stöbern im Internet immer wieder sehr interessante Projekte, die mit Hilfe von Mikrocontrollern umgesetzt wurden. Insofern sollte die Motivation euer kleinstes Problem sein 😉

Tipp für Anfänger

Wer es besonders einfach und schnell haben möchte, kann sich auch ein so genanntes Starterkit kaufen und sofort mit dem Programmieren loslegen. Diese Variante bietet sich besonders an, wenn Ihr zum Beispiel (noch) nicht die Möglichkeit habt zu Hause zu löten bzw. keine oder nur sehr wenig Grundlagen zur Elektrotechnik habt, die den Aufbau von mehr oder weniger komplizierten Schaltungen verhindern. Nachfolgend mal eine Auflistung verschiedener Entwicklungsboards:

  • Ready for PIC von MikoElectronika*
  • PIC18F Starterkit von Microchip
  • PICKit3 Debug Express von Microchip

* Mit unter 30€ sehr günstig und ist für gewöhnlich sehr gut dokumentiert. Standardmäßig (Dokumentation, Beispielprogramme, …) wird hier mit einem anderen C-Compiler gearbeitet.

Meine Empfehlung

Gerne möchte ich Euch noch ein weiteres Einsteigerboard vorstellen, das StartPIC18. Beim StartPIC18 handelt es sich um ein von mir entwickeltes Entwicklungsboard für Anfänger und Fortgeschrittene.

In dem zugehörigen Artikel hier auf meiner Webseite beschreibe ich das Board im Detail und liefere zusätzlich jede Menge Starthilfe in Form von Programmbeispielen. Das Board bietet für vergleichsweise wenig Geld viele Möglichkeiten zum Austoben mit dem PIC18F25K22 Controller.

Welcher PIC ist der Richtige?

Es gibt eine sehr große Auswahl an verschiedensten PIC Controllern, da ist es zu Beginn erst einmal nicht so einfach den richtigen PIC zu finden. Daher solltet Ihr euch zu Beginn erstmal nur auf wenige PIC-Typen beschränken um nicht den Überblick zu verlieren. Der Rest kommt mit der Zeit von ganz allein. Im Datenblatt zu eurem PIC findet Ihr alles was Ihr zum jeweiligen PIC wissen müsst. Da die Datenblätter, wie Ihr vielleicht schon vermutet habt, in Englisch geschrieben sind, werdet Ihr nicht um Englisch herum kommen. Aber vieles erklärt sich mit der Zeit auch von allein. Und: Die Datenblätter von Microchip sind in der Regel sehr verständlich geschrieben, so dass man auch mit Grundkenntnissen ganz gut voran kommen sollte.

Hier einmal zwei PICs, welche ich zum Einstieg empfehlen möchte:

PIC18F14K22  PIC18F45K22
Anwendung: Kleine Projekte Anwendung: Größere Projekte
Programmspeicher: 16 KByte Programmspeicher: 32 KByte
Pins: 20 Pins: 40
I/O Pins: 18 I/O Pins: 36
ADC Eingänge: 12 ADC Eingänge: 28
Timer (Anzahl): 4 Timer (Anzahl): 7
Preis bei Reichelt (2015): 2,35 € Preis bei Reichelt (2015): 3,10 €

Wenn Ihr später mal einen anderen PIC verwenden möchtet, vielleicht weil die Ein- und/oder Ausgänge nicht mehr ausreichen, dann könnt Ihr hier oder hier mal rein schauen. Dort könnt Ihr die Anforderungen an euren PIC eintragen und bekommt die in Frage kommenden Typen aufgelistet.

Es wird gerne gesagt: “Kennst du einen PIC, kannst du alle”. Der Spruch ist natürlich etwas überspitzt, trifft den Nagel jedoch auf den Kopf. Es gibt zwar sehr viele verschiedene PIC-Typen. Diese unterscheiden sich jedoch in der Regel nicht so gravierend. Oftmals hat ein PIC lediglich ein, zwei Funktionen mehr als ein anderer oder ist sogar identisch bis auf einen größeren bzw. kleineren Flash Speicher.

Peripherie

Ein PIC ist zwar ein hochkomplexes Bauteil, benötigt zum Arbeiten aber noch die ein oder andere Beschaltung (genannt Peripherie). Die normalen PICs von denen ich in diesem Tutorial reden werde, arbeiten mit einer Betriebsspannung von 5V Gleichspannung (DC). Weiterhin benötigt der PIC einen Takt damit er “weiß” wann er einen Arbeitsschritt durchführen soll. Die meisten PIC-Typen können sich diesen Takt selbst intern erzeugen. Jedoch gibt es auch Typen, die das nicht können und diese benötigen dann zwingend einen von extern zugeführten Takt. Des Weiteren ist zu entscheiden, ob man dem PIC eine Resetschaltung gönnt oder man den Pin MCLRE (master clear reset) als Eingang benutzen möchte. Wenn man den PIC während des Betriebs resetten können möchte, so wird eine Beschaltung mit Taster an diesem Pin benötigt. Würde man sich dafür entscheiden, keinen Reset Schalter benutzen zu wollen, so ist der freie Pin als Eingang nutzbar (siehe Datenblatt). In der Grafik ist einmal die Grundbeschaltung eines PICs angedeutet, wobei diese je nach Typ kleiner ausfallen kann. Immer erforderlich ist ein sogenannter Abblockkondensator an jedem Betriebsspannungspin (mehrere sind durchaus üblich) des Controllers.



Wie ich bereits oben erwähnt habe könnte z. B. bei dem PIC18F14K22 die Beschaltung des Taktgebers (Quarz) komplett entfallen, da dieser einen eigenen Takt intern erzeugen kann. Das bedeutet, dass die Bauteile XT2, C2 und C3 nicht benötigt werden. Außerdem können der Taster RES und R1 entfallen, da wir entscheiden können ob wir einen Resetschalter brauchen oder eben nicht. Man muss hierbei beachten, dass die MCLRE Beschaltung low aktiv ist. Das heißt, dass der PIC einen Reset durchführt, wenn an dem MCLR-Pin Low-Potemtial anliegt (TTL-Logik). Bei High-Pegel hingegen arbeitet er ganz normal seinen Programmcode ab. Die Beschaltung kann also einzig auf einen Abblockkondensator minimiert werden. PICs mit in größerer Bauform haben oftmals zwei Versorgungsanschlüsse in diesem Fall müssen auch jeweils beide angeschlossen werden sowie beide mit Abblockkondensatore versehen werden.

Wenn Ihr euch dafür entscheidet eine MCLRE Beschaltung nicht benutzen zu wollen, müsst Ihr das immer im Programm oder in der Konfiguration angeben. Dazu komme ich aber noch, wenn wir beim Kapitel Konfiguration angekommen sind. Achtet bei der Wahl des PIC immer auch auf den zulässigen Bereich für die Betriebsspannung – Nicht jeder PIC kann mit bis zu 5V betrieben werden.

Taktquelle

Die Taktquelle eines PIC kommt immer an seine Pins OSC1 und OSC2 (sofern er extern versorgt werden soll). Man kann als Taktgeber zwischen verschiedenen Quellen auswählen. In der angedeuteten Schaltung (siehe oben) ist ein Quarz verwendet worden. Dieser hat im Gegensatz zu einem Keramik Resonator den vermeintlichen Nachteil, dass er an seinen beiden Beinen jeweils noch einen Kondensator benötigt (das sind immerhin zusammen schon drei Bauteile). Den Wert für die Kondensatoren könnt Ihr übrigens im Datenblatt des jeweiligen PIC nachlesen. Er variiert je nach Frequenz des Quarzes. Der Keramikresonator hingegen hat die Kondensatoren bereits im Gehäuse integriert und spart somit Platz. Ich empfehle euch die Verwendung von Keramik Resonatoren, sofern Ihr überhaupt eine externe Taktquelle benötigt.

Wenn Ihr den internen Takt nutzen wollt, müsst Ihr dazu die Konfiguration entsprechend einstellen. Das geht entweder manuell über den Programmcode oder über die Einstellungen in MPLABX, siehe nachfolgende Abbildung.

Hinweis: Wenn man den PIC mit einem Bootloader (ein kleines Programm im PIC, welches die HEX-Files über z.B. USB entgegen nimmt) betreiben möchte, dann muss man eine externe Taktquelle verwenden. Ein PICKit3 oder ähnliches ist dann nicht mehr notwendig. Für Einsteiger ist diese Variante jedoch eher nicht zu empfehlen.

Programm erstellen

Ein Programm kann man auf verschiedene Weise schreiben. Grundsätzlich lassen sich Programmtexte in einem einfachen Texteditor schreiben. Dabei wird man jedoch wenig Freude haben, da einem der normale Texteditor selbstverständlich nicht großartig beim Entwickeln unterstützen wird. Wir werden daher die Entwicklungsumgebung MPLABX von Microchip (siehe Abbildung oben) verwenden, da diese ein paar entscheidende Vorteile hat.

Leave a Comment