miniatur|Ein 16-bit-Mikrocontroller (PIC24) im 28-poligen PDIP-Gehäuse

Bei PICmicro handelt es sich um eine Mikrocontrollerfamilie, die von der Firma Microchip Technology Inc. hergestellt wird.

Geschichte miniatur|Der 1655, der erste ROM-basierte PIC (noch von GI)

In den 1970er Jahren entwickelte die Mikroelektronikabteilung von General Instrument (GI) unter Beaufsichtigung von Stefan Lehmann den „PIC1650“. In den folgenden Jahren und Jahrzehnten wurde daraus eine große Mikrocontrollerfamilie abgeleitet. Die Bezeichnung „PIC“ stand ursprünglich für Programmable Interface Controller,„MOS DATA 1976“, General Instrument 1976 Databook Seite 213 wurde aber schon kurz nach der Markteinführung als Programmable Intelligent Computer interpretiert.

Die Originalausführung des PIC war als ROM-basierte, externe Erweiterung der 16-Bit-CPU „CP1600“ (ebenfalls von GI) gedacht, um deren eher mäßige I/O-Performance zu verbessern. Als Befehlsformat kam ein simpler Mikrocode zum Einsatz, der in einem ROM abgelegt war.

Im Jahre 1989 verkaufte GI die Mikroelektronikabteilung, und die neuen Besitzer beendeten beinahe alle Produktlinien. Der PIC hingegen wurde mit einem EPROM ausgestattet, um einen vom Anwender programmierbaren Mikrocontroller daraus zu machen. Durch Erweiterungen und Variationen der internen Peripherie, Bauteilform und Geschwindigkeit entstand eine sehr große Produktfamilie, die Mikrocontroller sowohl für allgemeine Anwendungen als auch spezialisierte Bereiche bereitstellt.

Grundsätzliches miniatur|Einige ältere EPROM-basierte PIC miniatur|Einige der kleinsten PIC aus der Baseline-Familie, 3x PIC12F509, 2x PIC10F206 (1x umgedreht)

PIC-Mikrocontroller (Peripheral Interface Controller) von Microchip Technology sind 8-, 16- und 32-Bit-RISC-Mikrocontroller. Sie wurden ursprünglich mit einem kleinen Befehlssatz und einfacher Handhabung konzipiert. Je nach Familie variiert der Befehlssatz von etwa 33 (Baseline) bis über 70 Befehle (Enhanced).

Seit 2007 wurde die PIC32-Serie erheblich weiterentwickelt. Heute umfasst sie unter anderem:

PIC32MX: Bis zu 512 KB Flash, 128 KB RAM, USB-OTG, Ethernet, CAN 2.0B.

PIC32MZ: Bis zu 2 MB Flash, 512 KB RAM, 200 MHz, mit Grafik-, USB- und Ethernet-Schnittstellen.

PIC32MK: Optimiert für Motorsteuerung und Industrieeinsatz, mit CAN FD, USB, FPU und 120 MHz Taktfrequenz.

PIC32CX-BZ / PIC32MZ-W1: Integrierte Wireless-Funktionalität (Bluetooth, Wi-Fi) und OTA-Update-Fähigkeit.

Außerdem wurden neue Architekturen eingeführt:

PIC32C: ARM Cortex-M7-basierte Controller mit bis zu 8 MB Flash, 1 MB RAM und erweiterten Sicherheitsfunktionen.

PIC32A: Hochleistungs-32-Bit-MCUs mit 200 MHz, FPU und KI-Funktionen für Embedded-Anwendungen.

Die aktuelle Entwicklungsumgebung basiert auf:

MPLAB X IDE: Plattformübergreifende IDE für alle PICs. MPLAB XC32 Compiler: C/C++-Compiler für 32-Bit-Geräte. PICkit 4 und 5: Programmer und Debugger mit USB-C bzw. Wireless-Support.

Hobby und Privatverwendung Relativ preiswerte Produkte und günstige Entwicklungswerkzeuge mit teilweise kostenlosen C-Compilern von Anfang der 1990er Jahre bis heute begünstigten die vielfältige Verbreitung von PIC unter Hobbyelektronikern. Die ersten PIC, die hier verwendet wurden, waren der PIC16C83 und seine Nachfolger PIC16F83 bzw. PIC16F84 durch ihren bereits vorhandenen Flash-Speicher. Diese PIC werden zwar heute noch angeboten, sind aber inzwischen verhältnismäßig teuer. Als eine Alternative zu den 8-Bit-PIC können die AVR-Controller von Atmel angesehen werden.

Für umfangreichere Aufgaben sind die Produkte der Enhanced-Familie (PIC18Fxx) gedacht. Der lineare Adressraum (siehe nachstehend) soll es für Entwickler einfacher machen, ein funktionsfähiges Programm zu entwickeln. Als Programmiergerät stehen das ältere PICkit2, bzw. das neuere PICkit3, welche die meisten aktuellen 8 und 16 Bit PIC programmieren können, und der ICD2 Debugger von Microchip zur Verfügung.

Nachfolgend eine kleine Auswahl von PIC-Produkten mit 5 Volt Versorgungsspannung, im DIL-Gehäuse erhältlich und mit gleicher Pinzahl zueinander pinkompatibel. 8 Pin: PIC12F615, es ist kein 8 Pin PIC18Fxx verfügbar und Programmentwicklungen für solch kleine Produkte sind für gewöhnlich in Assembler. Ebenfalls verfügbar sind die Typen PIC12F675 und PIC12F683. 14 Pin: PIC16F684 (mit Pulsweitenmodulation) oder der PIC16F688 (mehr Speicher und UART). In diesem Gehäuse sind ebenfalls keine PIC18Fxx Produkte verfügbar. 18 Pin bzw. Ersatz für den oben genannten PIC16F84: PIC16F628A, PIC16F819, PIC16F88 oder der aus der Enhanced-Familie stammende PIC18F1320. 20 Pin: PIC16F690. Für Designs, bei denen ein PIC18Fxx eingesetzt werden soll, bieten sich 18 oder 28 Pin Mikrocontroller der PIC-Familie an. 28 oder 40 Pin: PIC16F886 oder alternativ aus der Enhanced-Familie die PIC18F2620 (Standardtyp, mit 64 kByte Flash-Speicher), PIC18F2680 (Standardtyp mit CAN, ebenfalls mit 64 kByte Flash-Speicher) oder auch PIC18F2550 (Standardtyp mit USB, allerdings nur mit 32 kByte Flash-Speicher). Die Produktbezeichnungen der 40 Pin-Gehäuse sind (in gleicher Reihenfolge) PIC16F887, PIC18F4620, PIC18F4680 oder PIC18F4550. Speziell für 28 oder 40 Pin kann auch z. B. ein 16 Bit dsPIC30F4012 (28 Pin) oder dsPIC30F4011 (40 Pin) verwendet werden. Eine Pinkompatibilität zu den 8-bit-PIC ist hier aber nicht mehr gegeben. Ebenfalls möglich ist der PIC16F876A.

Weit verbreitet in freien Selbstbau-Projekten sind folgende PICs: PIC12F675, PIC12F683, PIC16F84A, PIC16F627A, PIC16F628A, PIC16F876A

Um die Verwendung des teureren PIC16F84 zu vermeiden, kann bereits bestehender Assembler-Code durch eine hinzugefügte Patch-Routine (welche auf dem 16F84 nicht vorhandene analoge Peripherie abschaltet und dann zum Hauptprogramm zurückspringt) und das Verschieben von RAM-Variablen zu dem mit doppelt so viel Speicher ausgestatteten PIC16F628A kompatibel gemacht werden.

Einfache Programmiergeräte Es existieren im Internet zahlreiche Schaltungen für den Selbstbau von einfachen PIC-Programmiergeräten, welche oft aus wenigen Bauteilen bestehen und damit günstig im Selbstbau herzustellen sind. Jedoch funktionieren diese nicht mit jedem PC und jedem PIC immer zuverlässig. PIC Development Programmer für Windows und Linux. Freeware Programmer Software für eine Vielzahl von PICs wie 10F, 12F, 16F, 18F und dsPIC30F. Unterstützt verschiedene Programmer Hardware wie z. B. JDM, Tait, AN589, … „JDM“ Programmer für den RS232 Port „David Tait“ Programmer für den LPT-Port „sprut Brenner“ für den LPT-Port und USB-Port, mit neuentwickelter und stabiler Hardware und Software, welche fast alle aktuellen Flash-basierten PIC Typen unterstützt. Platinenlayouts, Tipps und Handbücher sind ebenfalls verfügbar. „ICD2 Clones“, MPLAB-kompatible Nachbauten des Microchip ICD2 In-Circuit Debuggers, welche viele aktuelle Flash-basierte PICs in der Zielschaltung programmieren und debuggen können

Kommerzielle Verwendung Prozessor-Chipkarten vom Typ Gold- und SilvercardChipkarten mit PIC, Elektor November 2006 Alarmanlagen und Zutrittskontrollsysteme von Security ProductsNESS Security Products Leistungsmessgeräte von LinyangLinyang Leistungsmessgeräte Management von (elektrischer) Energie in Autos von BMWBMW Energiemanagement Beleuchtungssysteme von Insta Elektro GmbH aus LüdenscheidInsta Beleuchtungssysteme Modchips für die Playstation, PS2 und Nintendo Wii

PIC Derivate: bestimmte BASIC-Stamp-Varianten PICAXE OOPic

Gehäuse miniatur|Layoutkompatibilitätvon 8, 14 und 20 Pin

Microchip-PIC gibt es von 6 bis 100 Pins, davon 8 bis 40 Pins neben verschiedenen SMD-Varianten auch in „Dual-In-Line“. Das kleinste Gehäuse ist in SOT-23, alle Gehäuse ab 44 Pin aufwärts sind in TQFP. Für besonders platzkritische Anwendungen gibt es neben den SO und SSOP (beide von 8 bis 28 Pin) auch noch die sogenannten QFN (MLF) Gehäuse von 8 bis 44 Pins. Nicht selbstverständlich ist, dass nahezu alle PICmicro in gleichen Gehäusen auch ein kompatibles „Pinout“ besitzen. Kleine Unterschiede gibt es allerdings beim Umstieg von 8 Bit- auf 16 Bit-Controller. Also passt ein PIC18F4620 z. B. auch auf ein Layout eines PIC16C74 und umgekehrt. Eine darüber hinausgehende Kompatibilität gibt es dabei noch bei den kleinen Controllern, auf einen Sockel bzw. ein Layout für einen 20 Pins passen auch die Varianten in 14 oder 8 Pins, so kann der Entwickler zunächst mit 20 Pins beginnen und bei Bedarf eine kostengünstigere Alternative mit nur 14 oder 8 Pins ohne Layoutänderung einsetzen, wenn ihm die kleinere Anzahl von Pins ausreicht.

Speicheraufteilung Die Speicheraufteilung ist bei allen 8 und 16 Bit-Familien der PICmicros nach der Harvard-Architektur ausgeführt, d. h. Programm- und Datenspeicher werden über getrennte Busse angesprochen.

Die Programmspeicher der PIC sind unterschiedlich organisiert, bei der Baseline-Familie gibt es bis zu vier Seiten (Pages) zu je 512 × 12 Bits d. h. je nach Typ bis maximal 2048 Worte (dies entspricht 3 kB oder auch 2048 mögliche Befehle). Bei der MidRange-Familie gibt es ebenfalls bis zu vier Seiten, diese enthalten aber jeweils 2 K × 14 Bits d. h. je nach Typ bis maximal 8192 Worte (entspricht 14 kB oder auch 8192 mögliche Befehle).

Bei der Enhanced Architektur, auch PIC18 genannt, sowie den 16 Bit-Familien PIC24 und dsPIC gibt es diese Speicheraufteilung in Blöcken oder Seiten nicht mehr, der Programmspeicher ist linear adressierbar. Bei PIC18 liegt die auf dem Chip befindliche Obergrenze bei 128 kB (64 K Befehlsworte à 16 Bit) und kann bei einigen sehr großen Varianten auf extern bis zu 2 MB erweitert werden. Bei den 16 Bit-Familien liegt die Obergrenze derzeit bei circa 256 kB Flash (ca. 86 K Befehlsworte mit jeweils 24 Bit), externer Speicher ist hier zurzeit nicht möglich, aber sowohl größerer Speicher bis 512 kB, als auch extern anschließbarer Speicher sind in Planung.

Je nach Ausführung des Programmspeichers werden verschiedene Typen unterschiedenPDF-Dokument zu verschiedenen Programmspeichern (PDF; 3,3 MB):

Flash-Typ (EEPROM-Programmspeicher, Kennbuchstabe F) Dies sind die mittlerweile am häufigsten eingesetzten Bausteine, sie sind in der Schaltung lösch- und wiederbeschreibbar. Das umständliche Entnehmen aus der Schaltung und Einsetzen in ein Programmiergerät kann somit entfallen. So können also auch fest eingelötete Bausteine programmiert werden. Ebenso lassen sich die meisten dieser Bausteine ohne Entnahme aus der Schaltung debuggen. Das heißt, dass das im Controller laufende Programm an jeder Stelle unterbrochen oder im Einzelschrittmodus laufen kann. Dabei kann jedes interne Register und der interne Speicher auf einem angeschlossenen PC-Bildschirm beobachtet werden. Dazu werden fünf Pins des PIC über eine zusätzliche Elektronik (über die der PIC auch programmiert werden kann) und dann über USB oder RS232 mit dem PC verbunden. Diese fünf Pins sind zunächst die positive und die negative Spannung sowie der Reset-Eingang des Controllers. Dazu kommen noch zwei Funktionspins (PGC und PGD), die als alternative Funktion auf einem Portpin verfügbar sind. Das funktioniert bei größeren Controllern ab dem PIC16F818/819 (18 Pins). Jeder einzelne dieser Controller kann so debugged werden, wie er ist. Für kleinere Controller gibt es spezielle Testadapter, bei denen diese Pins zusätzlich vorhanden sind.

OTP-Typ (One Time Programmable; Kennbuchstabe C ohne Suffix /JW) Diese können nur einmal programmiert werden und eignen sich nur für Massenproduktionen, wo es auf geringe Kosten ankommt.

mini|Die des 16C57

EPROM-Typ (UV-löschbar durch Quarzglas-Fenster; Kennbuchstabe C mit Suffix /JW) Die JW Typen stellen das teure Entwicklungswerkzeug für die OTP-Typen dar. Sie sind wie EPROMs nur durch UV Bestrahlung zu löschen. Mit dem Erscheinen von Flash-PICs, die exakt kompatibel zu OTP/EPROM-Typen sind, kann auf EPROM-Typen in der Entwicklungsphase verzichtet werden und beispielsweise der Code für einen 12C508A auf einem 12F508 statt einem 12C508A/JW entwickelt werden.