In diesem Artikel möchte ich Euch die neue Entwicklungsumgebung  MPLABX von  Microchip vorstellen und dabei die ein oder andere Funktion vorstellen. Diese kleine Anleitung richtet sich vor allem an die jenigen unter Euch, die entweder ganz neu mit Mikrocontrollern anfangen oder aber beim Umstieg von der alten v8 der Entwicklungsumgebung (auch IDE für integrated development environment). Bevor wir anfangen hier noch ein, zwei nützliche Links zu diesem Thema. Unter anderem findet Ihr hier auch den Link zur Anleitung von Microchip direkt. Sie ist quasi der englische Pendant zu diesem Artikel…

Installation

Ihr könnt MPLABX auf den folgenden Betriebssystemen installieren:

  • Windows
  • Linux
  • Macintosh

Screenshots, die in diesem Artikel gezeigt werden wurden überwiegend unter Windows erstellt. Vom Programm her sollte es jedoch zu keinen nennenswerten Unterschieden kommen. Da die IDE auf Netbeans und somit auf Java basiert ist es notwendig, dass auf Eurem PC  Java installiert ist!

Bei der Installation von MPLABX gibt es sonst jedoch nichts weiter zu beachten. Die Voreinstellungen können beibehalten werden. Einfach durch den Dialog durch klicken. Übrigens habt Ihr durch die Installation von MPLABX eine Getting started Datei auf Eurem PC. Ihr findet diese Datei unter folgendem Pfad (Abweichungen möglich):

C:/Program Files (x86)/Microchip/MPLABX/mplab_ide/mplab_ide/modules/docs/QuickStart.htm

Compiler

Wenn Ihr plant unter MPLABX Programme in der Sprache C zu schreiben, dann benötigt Ihr neben der IDE noch einen entsprechenden  Compiler. Microchip bietet verschiedene XC Compiler an, welche verschiedene PIC Typen unterstützen. Zum Beispiel unterstützt der XC8 Compiler die PIC Typen 10/12/16/18. Die Compiler sind als kostenlose Version verfügbar. Bis auf eine fehlende Optimierung gibt es jedoch keine Einschränkung. Für 60 Tage kann auch eine kostenpflichtige Version getestet werden.

Schaut bei Bedarf auch gerne mal in meinen Artikel zum XC8 rein. Hier spreche ich die ein oder andere interessante Sache an.

Treiber

Falls Ihr vor MPLABX schon mal MPLAB v8 auf Eurem PC installiert habt, dann kann es zu Treiber-Problemen kommen. Das liegt daran, dass die alte 8er und die neue X Version verschiedene Treiber verwenden. Aber keine Bange, hierfür gibt es eine simple Lösung. Nach der Installation von MPLABX findet Ihr die Verknüpfung MPLAB Driver Switcher auf dem Desktop. Diese müsst Ihr nun starten. Je nachdem welches Tool von Microchip Ihr mit der 8er Version von MPLAB verwendet habt wird euch das im Fenster Tool Group and Action angezeigt.

Wählt nun einfach das Tool, welches Ihr weiterhin verwenden wollt an und ändert den Treiber indem Ihr in den Radio-Boxes rechts den Treiber für MPLABX anwählt. Durch einen anschließenden Klick auf Apply all wird der Treiber gewechselt. Fertig.

Manuelles Umschalten

Ihr habt auch die Möglichkeit die Treiber manuell über den Geräte Manager zu wechseln. Bitte schaut dafür einmal hier nach.

Benutzeroberfläche

In diesem Kapitel geht es um die Benutzeroberfläche der neuen IDE und wie Ihr euch darin zurecht finden könnt. Es hat sich im Vergleich zur alten IDE (Version 8) einiges getan.

Wie ich finde war dies auch dringend notwendig. Die neue IDE ist wesentlich übersichtlicher gestaltet.

Projekt

Hier geht es nun wirklich ans Werk. Ich möchte Euch kurz zeigen wie Ihr ein neues Projekt anlegen oder ein altes Projekt  aus MPLAB v8 importieren könnt. Außerdem geht es darum lediglich eine vorhande Hex-Datei zu flashen.

Neues Projekt

Mit Screenshot und dazu passend kurzen Beschreibungen möchte ich Euch zeigen wie Ihr unter MPLABX ein neues Projekt anlegen könnt.

Zunächst wählt Ihr unter dem Menüpunkt File den Eintrag New Project aus.

Zum Erstellen eines neuen Projekts lasst Ihr die Voreinstellung auf Standalone Project und bestätigt mit einem Klick auf Next.

Hier werdet Ihr nun aufgefordert den verwendeten PIC Typen anzugeben. Tipp: Am einfachsten geht es indem Ihr in das Feld Device hinein klickt und anschließend einfach den PIC Typen auf der Tastatur eingebt. Durch einen anschließenden Klick auf Next geht es weiter.

Hier wählt Ihr das entsrpechend von euch verwendete Tool aus und bestätigt die Wahl mit Next.

Jetzt wird der Compiler gewählt, sofern Ihr ein Programm in C schreibt. Ich verwende den XC8 Compiler und wähle daher diesen aus. Wenn Ihr an dieser Stelle keinen Compiler auswählen könnt, dann liegt das daran, dass Ihr noch keinen installiert habt. Das solltet Ihr an dieser Stelle nun nachholen.

Zum Schluss gebt Ihr eurem Projekt noch einen Namen und beendet den Dialog mit einem Klick auf Finish.

Jetzt habt Ihr euer erstes Projekt angelegt, das im Augenblick noch leer ist. Damit Ihr jetzt Euren Programmcode schreiben könnt müsst Ihr dem Projekt eine neue Source-Datei hinzufügen. Dafür navigiert zum kleinen Fenster Projects und führt einen Rechtsklick auf den Ordner Source Files aus. Hier wählt Ihr nun New >> Source File. In der Regel hat jedes Projekt eine main.c Datei. Diese Datei enthält dann die Main-Routine.

Es ist egal ob Ihr “C Main File” oder “C Source File” anwählt. Ihr landet bei beiden Punkten in dem selben Dialog. Die IDE sieht nur schon einmal einen jeweiligen Dateinamen vor. Da man diesen in der Regel sowieso ändert, ist es völlig egal.

Fertig. Jetzt ist Euer erstes Projekt bereit um bearbeitet zu werden. In dem Fenster Projects sollte nun unter dem Ordner Source die zuvor erstelle C-Datei gelistet sein. Üblicherweise ist dies zunächst einmal die main.c Datei.

Projekt importieren

Natürlich habt Ihr auch die Möglichkeit ein Projekt, das Ihr noch mit der alten IDE erstellt habt, in die neue IDE zu importieren. Aber bitte achtet darauf, dass es dennoch zu Problemen kommen kann, wenn Ihr unter der alten IDE noch den C18 und nun den XC8 Compiler verwendet. Übrigens kann der C18 Compiler natürlich auch weiterhin unter MPLABX verwendet werden. Er wird jedoch nicht mehr von Microchip gepflegt.

Vorgehen

Folgende Dinge sollten laut Microchip beim Importieren alter Projekte beachtet werden um Fehler zu vermeiden:

  1. Stellt sicher, dass Euer Projekt mit MPLAB 8.14.03A oder einer älteren Version gespeichert wurde.
  2. Setzt die Konfigurationsbits im Code! Unter MPLABX ist es nicht mehr möglich diese über das Fenster zu setzten*.
  3. Dateien, welche Ihr über die #include Direktive in Euer Projekt eingebunden habt sollten im Projektverzeichnis enthalten sein!
  4. Ebenfalls für eingebundene Dateien gilt: Relative Pfade sollten mit “/” und nicht mit “\” geführt werden.

* Stattdessen kopiert MPLABX die Bits direkt in den Code

Flashen einer HEX-Datei mit MPLABX

Hinweise: Unten ist noch eine zweite / etwas komfortabelere Lösung zum Flashen einer fertigen HEX-Datei mit dem Tool MPLAB IPE gezeigt.

Um lediglich eine Hex-Datei in den PIC zu flashen könnt Ihr ebenfalls MPLABX verwenden. Wie das geht zeige ich Euch hier. Ihr geht auf New Project. In der Maske wählt Ihr zunächst Microchip Embedded aus dem Bereich Kategorie. Und in der nebenstehenden Ansicht Prebuilt (Loadable Image) Project.

Im nächsten Fenster wählt Ihr die Hex-Datei aus, die auf den PIC geflasht werden soll. Außerdem gebt Ihr den PIC Typ an, für den die Hex-Datei vorgesehen ist. Zu guter Letzt wählt Ihr das Tool mit dem die Übertragung stattfinden soll.

Nun gebt Ihr dem “Projekt” noch einen Namen und wählt den Speicherort für dieses.

Das war es schon. Wenn Ihr jetzt auf Finish klickt ist der Vorgang abgeschlossen (der eigentliche Flash-Vorgang wird dann wie immer über den Button innerhalb der IDE durchgeführt).

Flashen einer HEX-Datei mit MPLAB IPE

Es gibt noch eine weitere Möglichkeit mit der Ihr eine fertige, also eine bereits vorhandene, HEX-Datei auf den PIC flashen könnt. Auch bei dieser Variante ist es nicht notwendig, dass man zuvor ein vollständiges Projekt hat bzw. erstellen muss. Die einzelne HEX-Datei reicht völlig aus. Startet einfach das Tool MPLAB IPE, das bei der Installation von MPLABX mit installiert wurde (sofern Ihr den Haken bei der Installation nicht entfernt habt).

Nach dem Öffnen des kleinen Tools seht Ihr das oben gezeigte Fenster. Ich habe als nächsten Schritt schon den PIC-Typen ausgewählt, auf den ich das fertige HEX-File brennen möchte. Hierzu könnt Ihr einfach den Button “Browse” neben dem Feld “Source” anwählen und euch zu der HEX-Datei klicken, die geflasht werden soll. Ihr seht in dem Screenshot außerdem auch, dass ich ein ICD3 an meinem PC angeschlossen hatte (siehe Tool). Hier müsst Ihr entsprechend euer Programmiergerät auswählen. Im Anschluss solltet Ihr dann noch einmal auf den Button “Connect” klicken, damit sich IPE mit eurem Tool verbindet.

Das Output-Fenster kann bei Bedarf eingeklappt werden. Das habe ich für meine folgenden Screenshots getan um etwas Platz zu sparen. Das nachfolgende Bild zeigt die IPE, die sich erfolgreich mit meinem ICD3 verbunden hat (die Buttons werden farbig).

Wenn sich IPE erfolgreich mit eurem Tool verbunden hat, der richtige PIC-Typ ausgewählt wurde und die gewünschte HEX-Datei geladen wurde (die natürlich auch zum gewählten PIC-Typ passen muss), kann der eigentliche Flash-Vorgang  mit einem Klick auf “Program” gestartet werden.

Das war es auch schon, so einfach bekommt Ihr eine fertige HEX-Datei auf einen Controller geflasht ohne dafür MPLABX bemühen zu müssen 

Debuggen

Wenn Ihr einen Debugger besitzt (zum Beispiel ein PICKit2/3 oder ICD2/3), dann seid Ihr in der komfortablen Situation euer Programm debuggen zu können. Das bedeutet, dass Ihr das Programm an beliebiger Stelle anhalten könnt. Wenn das Programm angehalten wurde könnt Ihr euch Registerinhalte ansehen und sogar verändern. Das Debuggen hilft ungemein bei der Fehlersuche. Hier soll kurz und knapp beschrieben werden wie man ein bestehendes Programm debuggen kann.

Voraussetzungen

Wie gesagt benötigt Ihr auf jeden Fall einen Debugger. Hierfür eignen sich folgende Tools:

  • PICKit 2 oder 3
  • ICD 2 oder 3
  • Real ICE

Des Weiteren muss der PIC über die ICSP Schnittstellen dauerhaft mit dem Tool verbunden sein. Wenn diese Voraussetzungen erfüllt sind steht dem Debugging nichts mehr im Wege.

 Außerdem muss Euer Projekt für das Debuggen compiliert werden. hiefür einfach den kleinen Pfeil nach unten neben diesem Symbol klicken und Program Device for Debugging wählen. Alternativ  könnt Ihr auch einfach diesen Button verwenden. Er leitet alles nötige in die Wege und bringt euch danach in das Debugging.

Breakpoint

Die sogenannten Breakpoints sind von uns festgelegte Punkte an denen wir eine Unterbrechung wünschen. Man unterscheidet folgende Breakpoints:

  • Line Breakpoint
  • Data Breakpoint
  • Adress Breakpoint
  • Event Breakpoint

Der wichtigste Typ für Anfänger ist definitiv der Line Breakpoint. Dieser ist auch am einfachsten zu erzeugen. Ihr müsst lediglich in der Zeile in eurem Quelltext einen Linksklick auf die Zeilennummer ausführen, wo Ihr unterbrechen möchtet. Das sieht dann so aus:

Die Zeile wird von MPLABX rot hinterlegt dargestellt. Der PIC unterbricht nun seine Arbeit bevor er diese Zeile ausführt. Die Anzahl an Breakpoints ist je nach PIC beschränkt. Es gibt auch PIC Typen die gar kein Debugging unterstützen. Generell setzt man einen Breakpoint an einer Stelle, von der man die nächst folgenden Opertationen überwachen möchte. Hierfür gibt es weitere nützliche Funktionen, die im folgenden noch genauer erläutert werden.

Anwendung

Ich habe es unter den  Voraussetzungen schon erwähnt: Damit Ihr das Programm debuggen könnt muss es dafür kompiliert werden. Dafür einfach den Debug Project Button verwenden. Die Breakpoints sind vor dem kompilieren zu setzen. Andernfalls handelt es sich bei den Breakpoints nicht um Hardware, sondern Software-Breakpoints. Diese haben einen entscheidenden Nachteil: Bei Software Breakpoints habt Ihr nicht die Möglichkeit Register auszulesen bzw. zu beschreiben. Wie Ihr einen Line Breakpoint setzen könnt habe ich schon gezeigt (einfach die Zeilennummer anklicken). Das Bild oben zeigt einen gesetzten Breakpoint. Mit einem Rechtsklick auf das rote Quadrat könnt Ihr ein kleines Kontextmenü aufrufen.

In dem Kontextmenü >> Breakpoint habt Ihr die Möglichkeit den Breakpoint zu verwalten. Ihr könnt ihn aktivieren/deaktivieren um im Menü Properties kann eingestellt werden ob der Breakpoint immer greift oder nur bei jedem n-ten mal. Diese Eigenschaft kann bei allen Breakpoint-Arten eingestellt werden.

Alle anderen Typen von Breakpoints werden über die Menüleiste erstellt. Hierfür navigiert ihr in das Menü >> Debug >> New Breakpoint. Der Dialog hilft beim Erstellen des BP.

Laufendes Programm

Wenn der Breakpoint an gewünschte Stelle gesetzt und das Programm mit dem Button Debug Project gestartet wurde erscheinen in der Werkzeugleiste neue Buttons.

Diese Buttons sind nur zum Debuggen zu verwenden und werden daher auch nur eingeblendet, wenn eine Debug-Session läuft.

 Mit dem Finish Debug-Session Button wird, wie der Name es bereits vermuten lässt, eine aktuell laufende Debug-Sitzung beendet.

 Der Pause Button führt schlicht und einfach eine Pause in der aktuellen Debug-Sitzung aus. Durch das Betätigen des Continue Buttons kann der Prozessor wieder gestartet werden.

 Der Reset Button führt einen ganz normalen Reset des Prozessors aus, wie es auch ein MCLRE tut. Jedoch kann nach dem Durchführen diesen Resets weiter gedebuggt werden.

 Nachdem ein Prozessor durch den Pause Button angehalten wurde, kann er mit dem Continie [F5] Button wieder weiter machen.

 Bei diesem Button handelt es sich um den Step over Button [F8]. Dieser führt eine Programmzeile aus, ohne dabei in eventuelle Unterfunktionen zu springen.

 Im Gegensatz zum Step over würde der Step into Button [F7] einen Funktionsaufruf nicht in einem “Schritt” ausführen, sondern er würde tatsächlich in die Funktion hinein springen.

 Mit dem Run to Cursor Button [F4] könnt Ihr beliebig viele Zeilen überspringen und den PIC erst dann wieder anhalten, wenn er dort angekommen ist, wo Ihr den Cursor positioniert habt.

 Der Set PC at Cursor Button erlaubt es Euch, den PC (Program Counter) an eine beliebige Stelle zu setzen. Der PIC führt dann dort seine Arbeit fort.

 Im Gegensatz zum Set PC at Cursor wird mit dem Focus Cursor at PC nicht der PC gesetzt, sondern der Cursor dorthin, wo sich aktuell der PC befindet.

Lesen / Schreiben von Registern

Ein Vorzug des Debuggen ist es, das man sich Register des PIC um laufenden Programm ansehen und sogar verändern kann. Hiefür könnt Ihr euch über das Menü >> Window >> Debugging diverse Fenster einblenden lassen.

Die wichtigsten Fenster sind hier Variables und Watches. Wird das Programm zum Beispiel durch einen Breakpoint unterbrochen könnt Ihr euch fix die Inhalte relevante Variablen oder Register ansehen. Ebenso könnt Ihr den Inhalt dieser manipulieren. Dabei lassen sich die Inhalte in verschiedenen Formten (Hex, Dezimal, Binär, …) darstellen.

Die Bedienung ist hier recht eingängig, weshalb ich nicht detaillierter darauf eingehen möchte. Wer jedoch mehr Informationen bezüglich dieses Abschnittes wünscht, der sei auf  Microchip verwiesen.

Bedienung

Hier wird es darum gehen einen ersten Überblick über die Buttons von Microchip MPLABX zu bekommen.

 Wir gehen von links nach rechts. Ich erkläre nicht jeden der Buttons sondern nur die, die einer Erklärung bedürfen. Wir fangen an mit Main Build Project. Dieser Button erstellt/baut das Programm. Dabei wird der Compiler/Assembler verwendet, welcher von Euch in den Projekt Eigenschaften ausgewählt wurde. Es werden lediglich die Dateien berücksichtigt, die sich seit dem letzten Build verändert haben. Hierbei habt Ihr die Möglichkeit für den normalen Betrieb zu bauen oder fürs Debugging. Hierfür einfach auf den kleinen Pfeil neben dem Button klicken. Ein Klick auf den Button selbst erstellt das Projekt für den normalen Betrieb.

 Als nächstes besprechen wir den Main Rebuild Project Button. Dieser Button berücksichtigt, im Gegensatz zum einfachen Build alle Dateien. Hierzu werden zunächst alle Dateien gelöscht und anschließend neu gebaut. Auch hier habt Ihr die Wahl zwischen Release und Debug Übersetzung.

 Der Button Make and Programm Device übersetzt/baut das Programm für den normalen Betrieb (Releade Modus) und überträgt im Anschluss das Programm auf den verwendeten PIC Controller. Durch den Pfeil neben dem Button habt Ihr weitere Auswahlmöglichkeiten. Außerdem findet Ihr hier die Möglichkeit Euer PICKit3 im Programmer to Go Modus zu bringen.

 Es folgt der Read Device Memory Button. Er bietet Euch die Möglichkeit den Speicher des PIC Controllers auszulesen und in MPLABX einzufügen. Über den nebenstehenden Pfeil habt Ihr zum Beispiel die Möglichkeit den Code in eine Datei zu laden.

 Der Button Hold in Reset kann verwendet werden um den PIC nach der Übertragung des Programms nicht vom Programmer trennen zu müssen.

 Einer der wichtigsten zum Schluss. Der Debug Project Button wird, wie es der Name vermuten lässt dafür verwendet um den PIC in der Schaltung zu Debuggen. Durch das Setzen von Breakpoints könnt Ihr das Programm an definierten Stellen zum Stillstand bringen und zum Beispiel Register auslesen.

Übrigens braucht Ihr normalerweise nie den Build oder Clean/Build Button, denn der Programm Button führt ohnehin ein Build durch.

FAQ

Hier entsteht eine Sammlung mit Fragen, die immer wieder auftreten.


Frage: Warum ist mein kompletter Quellcode rot unterstrichen?

Antwort: In der Regel liegt das daran, dass Du nach der Installation von MPLABX (erste Installation oder Update) deinen PC nicht neu gestartet hast. Es kann übrigens auch infolge einer Compiler Installation auftreten. Nach einem Neustart des PCs sollte das Problem behoben sein.


Siehe auch

Weblinks

3 Responses

Leave a Comment