|
|
PICEin PIC ist ein Mikrocontroller der Firma Microchip. Zu aller erst möchte ich die Aufteilung der PICs veranschaulichen. Die PIC-Familien werden fast immer wie folgt bezeichnet: als Beispiel „PIC18“ oder „18er PIC“ bedeutet, es handelt sich um ein PIC18Fxxxx Microcontroller. Alle PICs haben die Harvard-Architektur. Da sie aber sonst sehr unterschiedlich sind, sollten sie getrennt aufgeführt werden. Grob unterteilt werden sie anhand ihrer Datenbreite.
[Bearbeiten] 8 BitDie 8 Bit Microcontroller-Familien sind PIC10, PIC12, PIC16 und PIC18. Bei den 8-bittigen PICs gibt es einmal den Buchstaben „F“ hinter der Familienbezeichnung und den Buchstaben „C“. Die mit einem „F“ in der Bezeichnung haben einen Flash-Programmspeicher, dieser ist somit mehrmals beschreibbar. Das „C“ bedeutet, dass der Programmspeicher entweder ein OTP-Speicher (One-Time-Programable – Nur ein mal beschreibbar), oder aber ein EPROM-Speicher ist, den man nur mit Hilfe von UV-Licht löschen kann. Aus diesem Grund sind die „C“-Varianten uninteressant für Hobby-Elektroniker, zudem sogut wie alle PICs ausschließlich in Flash-Varianten verfügbar sind. Die Typen der Familien haben unterschiedliche Ausstattung, dennoch kann man sagen, je höher die Zahl, desto Leistungsfähiger ist der PIC. Jedoch: Ein Typ der PIC10 Familie mag zwar deutlich schwächer sein, als ein PIC18, dafür gibt es den PIC10 in einem SOT23-Gehäuse, wohingegen der kleinste PIC18 ein SOIC18 ist. Zudem ist der PIC10 billiger, als ein PIC18. Es kommt also immer auf den Anwendungsfall an. 8 Bit PICs können folgendes beinhalten:
Eine Sonderform der 8 Bit Microcontroller ist der rfPIC12F675. Dieser ist extra für RF, also Funkanwendungen ausgelegt und besitzt einen internen UHF ASK/FSK Transmitter. Eine detailiertere Übersicht findet man auf der Microchip-Seite und eine Liste aller Typen ist für jede Familie verfügbar: PIC10, PIC12, PIC16, PIC18. [Bearbeiten] 16 BitDie Vertreter der 16 Bit Microcontroller sind PIC24E, PIC24F, PIC24H, dsPIC30F, dsPIC33E und dsPIC33F. Trotz dessen nicht überall ein „F“ in der Bezeichnung ist, haben diese Familien dennoch einen Flash-Speicher. Die dsPICs haben, wie der Name schon vermuten lässt, eine zusätzliche DSP-Einheit, die extra für komplexere Berechnungen wie FFT oder Digital-Filter benutzt werden können. 16 Bit PICs können folgendes beinhalten:
Die Übersicht ist wieder unter der Microchip-Seite zu finden und auch hier gibt es die Typenlisten für die Familien PIC24E, PIC24F PIC24H, dsPIC30F, dsPIC33E, dsPIC33F. [Bearbeiten] 32 BitDer 32 Bit Microcontroller hat nicht mehr viel mit den anfänglichen PICs gemeinsam. Er besitzt einen „MIPS M4K“-Kern aber ist trotzdem Pin-Kompatibel zu den 16 Bit PICs. Die Typen der PIC32-Familie unterstützen zusätzlich das JTAG-Interface. Es wurde außerdem auf PIC32-Basis eine Arduino-Alternative entwickelt, die dadurch deutlich leistungsfähiger ist. Genannt wurde dies „chipKIT“ und ist im Moment in 2 Varianten verfügbar. Die Entwicklungsumgebung für die chipKITs basiert auf der Arduino-Software und somit sollen auch alle für den Arduino programmierten Progamme auf dem chipKIT laufen. 32 Bit PICs können folgendes beinhalten:
Die Übersicht ist wieder unter der Microchip-Seite zu finden und auch hier gibt es eine Typenliste für die Familie: PIC32MX. [Bearbeiten] Compiler[Bearbeiten] MPLABMPLAB ist die freie IDE von Microchip und unterstützt von vornherein alle Brenner, Debugger, Emulatoren von Microchip. Zudem kann das Programm in der IDE per Software emuliert werden. Um Programme in C zu schreiben, können C-Compiler, sofern die Software das unterstützt, in die IDE eingebettet werden, wie z.B. der HI-TECH C-Compiler. Genaueres kann man auf der Microchip-Seite anschauen. [Bearbeiten] C-CompilerMicrochip bietet direkt C-Compiler an. Diese wären C18 (für PIC18 Typen), C30 (für 16bit Typen) und C32 (für 32bit Typen). Diese Compiler können als nicht-kommerzielle Freeware-Version heruntergeladen werden. Dabei wird nach einer gewissen Zeit die Optimierung eingeschränkt. Diese ist für Hobby-Bastler allerdings nicht unbedingt kritisch. Da aber die C-Compiler von Microchip auf Open-Source aufbaut, kann der Sourcecode direkt von deren Seite heruntergeladen und die Aufhebung entfernt werden (sofern man die Möglichkeit hat, die Software danach wieder zu kompilieren). Es gibt auch andere Compiler, wie z.B. der C-Compiler von HI-TECH. Andere wären noch CC5X oder Compiler der Firma mikroElektronika. Letzterer unterstützt nicht nur alle PICs, sondern ist auch für AVRs und 8051er Microcontroller, sowie auch in Basic und Pascal erhältlich. Beide erwähnten Compiler sind in der Freeware-Version allerdings Codegrößenbegrenzt, was gerade bei 16bit oder 32bit PICs schnell eng werden kann. [Bearbeiten] ProgrammiergeräteUm das Programm auf einen PIC zu bekommen, muss Dieses per Gerät auf den PIC „gebrannt“ werden. Microchip bietet dazu das PICKIT2 und PICKIT3 an. Das PICKIT3 ist das aktuellere, was bedeutet, dass Firmwareupdates hauptsächlich für diese Version entwickelt wird. Spürbar ist das jetzt schon bei den PIC32MX, die nur vom PICKIT3 unterstützt werden. Wenn man aber kein PIC32 benutzen möchte, kann man bis jetzt aber auch noch zum PICKIT2 greifen, das zusätzlich noch als kleiner Logik-Analyzer dienen kann. Das nächst bessere, was Microchip bietet, ist ein ICD (In-Circuit-Debugger), das eine erweiterte Debuggermöglichkeit bietet. Das „Flagschiff“ ist der REAL-ICE (In-Circuit-Emulator), der zusätzlich noch in der Hardware emulieren kann. Eine Übersicht ist hier zu sehen. Wie für andere Microcontroller, gibt es auch für den PIC Selbstbaubrenner. Der wohl Bekannteste ist der Brenner8 von der Sprut-Seite. Doch allgemein gilt: Es werden neue Microcontroller-Typen, wenn überhaupt, erst später unterstützt, als bei einem originalen Brenner und es führt zu zusätzlichen, möglichen Fehlerquellen. Denn wer kommt schon auf die Idee den Fehler im Brenner zu suchen und nicht in der Schaltung. Hier im Forum sind schon mehrere solcher Fälle vorgekommen. Außerdem bekommt man das "Henne oder Hahn"-Problem zu spüren, denn für den Brenner8 muss man einen PIC18 brennen, d.h. man muss sich irgendwo seinen PIC brennen lassen, bevor man es selbst tun kann. Zudem wird nicht jeder bzw. kaum ein Selbst-Bau-Brenner von der IDE unterstützt, was bedeutet, dass man mindestens 2 Programme braucht - Eine zum brennen und eine zum programmieren. Der Brenner8 unterstützt auch kein Debugging, wie es das PICKIT3 jedoch tut. Die Hilfestellung bei einem verbreitetem Programmiergerät ist selbstverständlich besser als bei einem opensource Selbsbau-Brenner. Es muss also jeder selbst abwägen, ob einem das die ca. 10€ weniger Wert ist. Wenn es jemanden darum geht, den Brenner selbst zu bauen, der kann auch das PICKIT2 nachbauen, denn Schaltplan (Seite 77+78) und Firmware sind offen auf der Herstellerseite verfügbar. Hier ist zwar immer noch die mögliche Fehlerquelle beim Zusammenbau vorhanden, jedoch hat man damit einen besseren Brenner. [Bearbeiten] Missverständnisse und EigenheitenEs gibt einiges, was einen PIC-Neuling abschrecken oder verwirren könnte. Manchmal hört man z.B. dass kaum oder schlechte Peripherie verbaut wurde, wobei dies meist, wenn überhaupt zutreffend, für alte PICs gilt. Es wird auch oft bemängelt, dass der Quarz-Takt durch 4 geteilt wird. Dafür werden so gut wie alle Befehle in einem System-Takt ausgeführt, wo andere mehr brauchen. Fallen für Neulinge gibt es nur wenige und unkritische (im Vergleich zum „verfusen“ eines AVRs). Es muss zum Beispiel bedacht werden, dass, um auf manche Register zugreifen zu können, die Bank gewechselt werden muss - dies macht ein C-Compiler aber automatisch. Außerdem muss die geplante Vierteilung von oben bedacht werden, um Zeitschleifen zu berechnen. Verwirrend kann gerade für Leute, die den AVR gewohnt sind sein, dass das Register zum konfigurieren der IOs eine 1 für einen Eingang braucht, und keine 0. Doch merken kann man sich, dass die 1 wie ein großes I aussieht und für Input -> Eingang steht. Andersrum steht die 0 für ein großes O wie Output -> Ausgang. Wer sich hier im Forum schon mal rumgetrieben hat, kann eventuell auch den „kleinen Krieg“ zischen AVR und PIC mitbekommen haben. Dazu will ich auch nur sagen, dass an sich jeder Microcontroller seine Daseinsberechtigung hat. Ob PIC oder AVR, ob 8 Bit oder 32 Bit. Deswegen sollte man einfach die Microcontroller ausprobieren und selbst entscheiden. Wenn jemand sich einen, meiner Meinung nach guten Vergleich zwischen AVR und PIC angucken will, kann sich das ->EEVBlog #63<- Video auf Youtube angucken. Da wird auch erläutert, warum es keinen Grund gibt, einen der beiden Microcontroller zu meiden. Zudem ist es auch etwas unprofessionell, ohne selbst eigene Erfahrung gesammelt zu haben, eine Familie oder sogar einen ganzen Hersteller abzuschreiben. [Bearbeiten] Links und Literatur |