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.
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.
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.








