Hallo :grin:
Da ich mich seit einer Weile mit PICs beschäftige, um damit vielleicht sogar ein Teil des Studiums bezahlen zu können (130€ im Monat), und hier scheinbar einige anwesend sind, die auch gern PICs programmieren wollen, möchte ich gern einen Lernthread aufmachen. (Das war ja jetz n Schachtelsatz..)
Los gehts:
Was ist überhaupt ein PIC?
Ein PIC-Microcontroller, ist eigentlich nix weiter als ein kleiner Computer.
Er besitzt Speicher, Recheneinheit, I/O Ports und beherscht 35 Befehle (Assembler)
Er kann von "LED an / LED aus" bis zu komplexen Aufgaben so ziehmlich alles bearbeiten.
Auch digitale Weichen sind so möglich (aber mit A/D Wandlern, bzw. angepassten PICs)
Die größe der PICs reicht vom derzeit kleinsten (2,95mm x 2,8mm) bis hin zu recht großen 64 beinigen im SDIP Gehäuse.
Vorgeplänkel
Um ein Programm auf einen PIC zu bringen, braucht man eine Entwicklersoftware und meist auch ein Entwicklerboard , letzteres dient zugleich zum Testen der übertragenen Software. Meist sind dort ein paar LEDs und Taster/Schalter installiert um ein Programmtest zu ermöglichen.
Diese Boards gibts günstig bei Pollin, für die ATMEGA Reihe, aber auch bei Reichelt für ca 30€. Diese unterstützt aber leider nur wenige PICs bis 12Beinen (Für den Anfang schon sehr sehr viel!)
Die Software kann man sich, meist Gratis, beim Hersteller des Pics herunterladen. Z.b. MPLAB von der Firma Microchip.
Da Microchip massenweise PICs in jeder Preislage anbietet und diese überall zu bekommen sind, werde ich diese einweisung mit MPLAP gestalten. (PS, sollte beim Installieren auf das Laufwerk C: installiert werden, da es sonst zu Problemen kommen KANN)
Wenn man sich nun Board und Software besorgt hat, fehlt nur noch der PIC.
Ich nehme einfach mal den, mit dem ich auch "das Laufen gelernt" habe.
Den 12F629. Es einer der "kleinen" hat 8 Beine, und somit 6 Ports zur Verfügung. Wenn man einen externen Takt benutzen will, sins noch 4.
Erste Schritte mit MPLAP
Wollen wir gleich mal loslegen. Also, man öffne MPLAP, und man verstehe erstmal nicht viel. 2 Offene, leere Fenster, alles in Englisch, und irgendwie kein durchblick.
Tja, der kommt noch^^
Das "untitled Workspace" kann man getrost schließen.
Wir erstellen nun unser erstes Projekt. Also klicken wir oben links auf "Project" und dann auf "new" (Ich gehs ohne Wizard durch, so sieh man die Hintergründe der Initialisierung).
Es erscheint ein langes Fenster, das einem auffordert den Projektnamen und das entsprechende Verzeichnis anzugeben.
Ich habe mal "Uebung1" gewählt und mein Verzeichnis in die eigenen Dateien gepackt.
Anschließend klicken wir auf "ok".
Jetzt kann es passieren das das Fenster "Output" verschwindet. Wenn das der Fall ist, kann man es auf "View" und "Output" wieder aufrufen.
In diesem Fenster werden nämlich alle Informationen von MPLAB an den Programmierer angezeigt.
Jetzt ists aber immernoch nicht anders als vor der Erstellung des neuen Programms. Denkt man.
Klickt einfach mal auf "View" und dann auf "Projekt". Dann öffnet sich ein Fenster mit einer Verzeichnisstruktur, dessen Verzeichniskopf so heist wie euer erstelltes Projekt.
Nun klickt an auf "Source Files" in diesem Fenster. Dann auf "File" oben links in der Dateileiste, und dann auf "Add New File to Project".
Nun geht ein Speichern Fenster auf. Als Dateiname habe ich genommen "Hauptprogramm.asm" Das asm ist wichtig ! und muss extra mit eingebeben werden. Das bedeutet das es eine assambler Datei ist, die vom Compiler übersetzt wird. (So wurde es mir gesagt ^^)
Nun initieren wir erstmal das ganze.
Das heist, wir sagen MPLAB was wir für einen PIC verwenden, was er für Eigenschaften hat, und wie die Config Bits, gesetzt werden sollen.
Die ersten 2 Aufgaben sind einfach. Man fügt in das "Hauptprogramm" ein:
"list p=12F629"
und
"#include <p12F629.inc>"
Das Nächste, wäre die Configurationsbits zu setzen.
Bei unserer Aufgabe (und zwangsweise bei dem PIC Startet Kit für 30€) sollte die Zeile so aussehen:
"__config _cp_off & _wdt_off & _boden_on & _pwrte_on & _intrc_osc_noclkout & _mclre_off & _cpd_off"
Diese Zeile ist OHNE ! Zeilenumbruch zu schreiben.
Zur Erklärung:
cp : cp ist der Code Protection Bit, wenn er of "on" gesetzt wird, kann das im PIC gespeicherte Programm NICHT mehr ausgelesen werden.
wdt : ist der Watchdog Timer. Wenn er gesetzt ist, überwacht der PIC sich sozusagen selber, er muss nach einer bestimmten Zeit den Timer zurücksetzen, sonst wird der RESET ausgelöst (Programm startet von vorn)
BODEN : Brown-out Detect Enable Bit . Wenn dieser aktiviert ist, wird der RESET gesetzt und gehalten, wenn die Betriebsspannung unter 2V fällt. Dieses RESET wird wieder aufgehoben wenn die Betriebsspannugn wieder den zulässigen Wert erreicht. Danach startet der PIC mit einer Verzögerung von 72ms wieder und arbeitet das Programm erneut ab.
pwrte : Power-up Timer Enable. Ist verwand mit der BODEN Funktion. Hiermit wird sichergestellt, das wenn die Betriebsspannung angelegt wird, erst nach einer Verzögerung von 72ms das Programm abgearbeitet wird. Dies sorgt für einen sicheren Anlauf des Programms , beim anlegen der Betriebsspannung.
intrc_osc_noclkout : Macht nix weiter als den internen 4Mhz Takt zu aktivieren und zu sagen das dieser nicht an einen PIN zum abgriff bereitgestellt werden soll.
mclre : Master Clear Enable. Wenn dieses Bit 0 ist, wird festgelegt ob PIN 4 ein I/O oder ein Eingang für den RESET sein soll.
cpd : Ählich dem CP. Dieses Bit schütz den PIC internen EEprom. So wird ungewolltes schreiben verhindert.
Das wars erstmal für heute. Werde morgen oder so weiter machen, wenn interesse besteht.[/u]