Startseite>Programme für PIC-Mikrocontroller auf dem RasPi entwickeln
Aus Raspberry Pi Geek 04/2019

Programme für PIC-Mikrocontroller auf dem RasPi entwickeln

© Pavel Timofeev, 123RF

Aus einer Hand

Bernhard Bablok

Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

Ein RasPi eignet sich nicht für jede Aufgabe; für manche ist er trotz seiner geringen Größe immer noch überdimensioniert. In diese Kategorie fällt etwa das Erfassen von analogen Sensordaten oder einfache Schaltaufgaben, bei denen das System im Grunde fast nie etwas tut. Dafür stellt ein Mikrocontroller die bessere Wahl dar.

Großer Beliebtheit erfreuen sich dabei etwa die ATmega-Chips, die auf den verbreiteten Arduino-Boards in diversen Varianten bereitstehen, breiten Support in der Community genießen und für die eine IDE bereitsteht, die Anfängern den Einstieg vergleichsweise leicht macht. Die ersten ATmega-Chips kamen von Atmel, mittlerweile hat das Unternehmen Microchip diese Firma aber aufgekauft.

Im Mittelpunkt dieses Beitrags stehen jedoch andere Modelle, die aber ebenfalls aus der Firma Microchip stammen: die sogenannte PIC-Familie. Diese Chips sind günstig, sparsam im Betrieb und lassen sich mit einer minimalen Toolchain unter Linux und insbesondere auf dem RasPi programmieren. Dazu benötigen Sie noch nicht mal einen leistungsstarken Raspberry Pi, ein Headless-System genügt schon.

PIC-Familie

Die Mikroprozessoren von Microchip haben eine lange Historie, dementsprechend viele Produkte waren und sind auf dem Markt – aktuell über 400. Hier den Überblick zu bewahren fällt nicht leicht. Abbildung 1 zeigt eine grobe Klassifizierung der aktuellen Chips.

Abbildung 1: Die PICs von Microchip, gruppiert nach MCU und Kern.

Abbildung 1: Die PICs von Microchip, gruppiert nach MCU und Kern.

Die Baseline-Familie gibt sich in Bezug auf die Ausstattung sehr mager (keine Interrupts). Für den Elektronikfan interessant sind dagegen Controller wie die PIC12Fxxx- und PIC16Fxxx-Modelle aus der mittleren Gruppe. Die Tabelle “PIC: Midrange” zeigt, welche Möglichkeiten diese Klasse bietet. Als mögliche zusätzliche Hardware-Module kommen hier etwa Timer mit 8 oder 16 Bit, USART, CAN, ADC und MSSP (SPI oder I2C) infrage.

Datenwortbreite

8 Bit

Befehlswortbreite

14 Bit

Befehle

etwa 35

Programmspeicher

1024 bis 8192 Worte

RAM

64 bis 368 Byte

EEPROM

0 bis 256 Byte

Stack-Tiefe

8

Interrupts

einfach

max. Taktfrequenz

4 bis 20 MHz

Erfreulicherweise stellt Microchip sehr ausführliche Datenblätter zu jedem Aspekt der einzelnen Controller bereit, so finden Sie meist recht einfach den passenden Chip für ein Projekt. Allen Modellen gemeinsam ist ein einfacher Befehlssatz (lediglich 35 Assembler-Befehle) und ein eingeschränktes Interrupt-Handling. Es gibt zwar je nach Modell bis zu 14 Interrupts, aber nur eine Zieladresse, die man per Software korrekt verarbeiten muss.

Wegen der geringen Anzahl der Befehle bietet sich das Programmieren in Assembler an, selbst als Einstieg. Alternativ weichen Sie auf C aus. Ohne Kenntnis des Datenblatts und Erfahrung in maschinennahem Programmieren kommen Sie jedoch bei beiden Sprachen nicht weit.

In diversen hier im Magazin vorgestellten Projekten der Autoren (Mini-USV [1], Pi-Infoscreen [2]) kommt als typischer Vertreter der Midrange-Klasse der für 1 Euro erhältliche PIC12F675 zum Einsatz (Abbildung 2). Er verfügt über einen Programmspeicher (Flash) mit einer Kapazität von 1024 Worten, 64 Bytes SRAM, 128 Bytes EEPROM, 6 I/Os, einen 10-Bit-A/D mit 4 Kanälen, einen Comparator und je einen 8-Bit/16-Bit-Timer. Von den I/O-Pins ist einer (GP3) zusätzlich als Reset (MCLR) belegt und kommt daher in aller Regel für I/O-Funktionen nicht infrage.

Abbildung 2: Der PIC12F675 im DIL-Gehäuse (links der Anschluss zum Programmieren).

Abbildung 2: Der PIC12F675 im DIL-Gehäuse (links der Anschluss zum Programmieren).

Als Alternativen mit mehr Funktionen bieten sich der PIC16F690 (1,45 Euro, USART, I2C-Slave) und der PIC16F872 (2,80 Euro, USART, I2C-Master/Slave) an.

Programme flashen

Zum Laden von eigenen Programmen in den Chip benötigen Sie ein Hardware-Interface, kurz Programmer oder Brenner genannt, sowie ein Steuerprogramm auf dem PC oder einem RasPi. Auf Hardware-Seite haben Sie die Wahl zwischen den Geräten des jeweiligen Herstellers, Bausätzen wie denen von Vellemann [3] oder Eigenkonstruktionen, für die Sie die entsprechenden Informationen [4] online finden [5].

Die Maker-Szene war hier sehr kreativ und hat für die verschiedenen Mitglieder der PIC-Familie eigene Lösungen abseits der offiziellen Hardware und Tools von Microchip entwickelt. Mit dem RasPi ist das zumindest für diejenigen PICs noch einfacher geworden, bei denen Sie 3,3 Volt Spannung zum Flashen benötigen – das geht ohne Extra-Hardware über eine direkte Verbindung der RasPi-Pins an den PIC [5].

Da der PIC12F675 eine Spannung von 13 Volt beim Schreiben benötigt, fällt er nicht in diese Kategorie. Die von den Autoren bevorzugte Programmer-Alternative ist ein China-Nachbau des inzwischen von Microchip nicht mehr erhältlichen PICkit2-Brenners (Abbildung 3). Ihn erhalten Sie einschließlich eines hochwertigen USB-Kabels und eines ICSP-Adapterkabels für weniger als 8 Euro (inklusive Versand) auf Ebay – günstiger als jeder Selbstbau.

Abbildung 3: Der PICkit2 findet sich nur noch als Nachbau aus China, erledigt aber in der Praxis zuverlässig seinen Dienst.

Abbildung 3: Der PICkit2 findet sich nur noch als Nachbau aus China, erledigt aber in der Praxis zuverlässig seinen Dienst.

Der Adapter verwendet die ICSP-Schnittstelle, die es erlaubt, selbst einen verbauten PIC nachträglich noch mit Software zu beladen. Die Beschaltung sehen Sie in Abbildung 4. Wichtig sind hier die beiden Widerstände R2 und R3 zum Entkoppeln der Anwenderschaltung. Außerdem darf während des Brennvorgangs keine Spannung an Vdd anliegen.

Abbildung 4: Die ICSP-Beschaltung PIC12F675. Die beiden Widerst&auml;nde <span class="ui-element">R2</span> und <span class="ui-element">R3</span> entkoppeln die Anwenderschaltung, <span class="ui-element">Vdd</span> muss w&auml;hrend des Brennvorgangs stromlos bleiben.

Abbildung 4: Die ICSP-Beschaltung PIC12F675. Die beiden Widerstände R2 und R3 entkoppeln die Anwenderschaltung, Vdd muss während des Brennvorgangs stromlos bleiben.

Als Steuerprogramm dient das Kommandozeilentool Pk2cmd von Microchip. Der Quellcode steht zwar auf Github bereit [6], es handelt sich aber nicht um Open Source im Sinn einer freien Lizenz. Der Kasten “Installation” beschreibt, wie Sie die Software ins System integrieren. Einmal installiert, verwenden Sie das Programm mit den Befehlen aus Listing 1. Weitere Optionen beschreibt die Dokumentation ausführlich.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland