Wikipedia · einfach zusammengefasst · Stand
PICmicro
Bei PICmicro handelt es sich um eine Mikrocontrollerfamilie, die von der Firma Microchip Technology Inc. hergestellt wird. Ein 16-bit-Mikrocontroller …
Inhalt5 Abschnitte
PICmicro im Überblick
PICmicro ist eine von Microchip Technology Inc. hergestellte Familie von Mikrocontrollern. Mikrocontroller sind integrierte Schaltungen, die Rechenwerk, Speicher und Ein-/Ausgabefunktionen für Steuerungsaufgaben verbinden. PICs gibt es als 8-, 16- und 32-Bit-RISC-Mikrocontroller; RISC bezeichnet eine Architektur mit kleinem, vergleichsweise einfachem Befehlssatz. Je nach Familie umfasst dieser etwa 33 Befehle bei Baseline-Modellen bis über 70 bei der Enhanced-Architektur.
Die Familie entstand aus dem in den 1970er Jahren bei General Instrument entwickelten PIC1650. Der ursprüngliche PIC war eine ROM-basierte externe Erweiterung der 16-Bit-CPU CP1600 zur Verbesserung ihrer Ein-/Ausgabe-Performance. Nach dem Verkauf der Mikroelektronikabteilung von GI im Jahr 1989 wurde der PIC mit EPROM als vom Anwender programmierbarer Mikrocontroller weiterentwickelt. Variationen bei Peripherie, Bauform und Geschwindigkeit führten zu einer großen Produktfamilie für allgemeine und spezialisierte Anwendungen.
Die PIC32-Reihe wurde seit 2007 erheblich erweitert. PIC32MX bietet bis zu 512 KB Flash, 128 KB RAM, USB-OTG, Ethernet und CAN 2.0B. PIC32MZ erreicht bis zu 2 MB Flash, 512 KB RAM und 200 MHz sowie Grafik-, USB- und Ethernet-Schnittstellen. PIC32MK ist für Motorsteuerung und Industrie ausgelegt und besitzt unter anderem CAN FD, USB, FPU und 120 MHz. PIC32CX-BZ und PIC32MZ-W1 haben Bluetooth-, Wi-Fi- und OTA-Update-Funktionen. PIC32C basiert auf ARM Cortex-M7 und bietet bis zu 8 MB Flash, 1 MB RAM sowie erweiterte Sicherheitsfunktionen; PIC32A sind 200-MHz-32-Bit-MCUs mit FPU und KI-Funktionen für Embedded-Anwendungen.
Speicher, Befehle und Interrupts
Bei allen 8- und 16-Bit-PICs trennt die Harvard-Architektur Programm- und Datenspeicher durch getrennte Busse. Baseline-PICs besitzen bis zu vier Programmspeicherseiten zu je 512 × 12 Bit, also höchstens 2048 Worte beziehungsweise 3 kB oder 2048 mögliche Befehle. Bei MidRange sind es bis zu vier Seiten zu je 2 K × 14 Bit: maximal 8192 Worte, 14 kB oder 8192 mögliche Befehle. Bei PIC18 sowie PIC24 und dsPIC ist der Programmspeicher linear adressierbar. PIC18 erreicht auf dem Chip bis zu 128 kB, also 64 K Befehlsworte à 16 Bit, und bei einigen großen Varianten extern bis zu 2 MB. Bei 16-Bit-Familien sind derzeit etwa 256 kB Flash beziehungsweise rund 86 K Befehlsworte à 24 Bit möglich.
Flash-Typen mit Kennbuchstabe F sind in der Schaltung lösch- und wiederbeschreibbar und heute am häufigsten. OTP-Typen, C ohne Suffix oder /JW, lassen sich nur einmal programmieren und sind für kostengünstige Massenproduktion gedacht. EPROM-Typen, C mit Suffix /JW, können nur per UV-Bestrahlung gelöscht werden. ROM-Maskenversionen mit Kennbuchstabe R werden bereits in der Fabrik programmiert, sind danach nicht mehr änderbar und eignen sich für sehr hohe Stückzahlen.
Der Datenspeicher enthält SFRs (Special Function Register, Register zur Steuerung von Hardwarefunktionen) und GPRs (General Purpose Register, allgemeine RAM-Register). Baseline verwendet ein bis acht Bänke zu je 32 Byte und höchstens 134 Byte RAM. MidRange hat bis zu vier Bänke à 128 Byte und maximal 368 Byte RAM. Enhanced hat bis zu 16 Bänke à 256 Byte, kann aber mit bestimmten Befehlen linear zugreifen und erreicht rund 3,9 kB RAM. Bei 16 Bit ist der Speicher linear bis 64 kB ausbaubar; genutzt werden maximal 30 kB einschließlich 2 kB Dual-Port-RAM für teilweise vorhandenes DMA sowie 2 kB SFR-Bereich.
Ein Befehlswort umfasst 12 bis 24 Bit und enthält Befehl samt Argumenten. Fast jeder Befehl außer Verzweigungen braucht einen Zyklus. Bei 8-Bit-PICs ist die ALU eine Ein-Adress-Maschine: Bei zwei Argumenten ist eines stets das W-Register. Enhanced-PICs können mit MOVFF adr1, adr2 Daten zwischen Speicherzellen übertragen; der Befehl benötigt zwei Worte und zwei Zyklen. 16-Bit-Controller besitzen 16 × 16-Bit-Register.
8-Bit-PICs haben je nach Familie keinen, einen oder zwei Interruptvektoren. MidRange springt bei einem Interrupt an Adresse 0004 h, Enhanced an 0008 h und 0018 h; nur Enhanced bietet damit eingeschränkte Prioritätssteuerung. 16-Bit-Familien haben für nahezu jede Peripherie oder Sonderfunktion eigene, insgesamt bis zu 118 Interruptvektoren, denen acht Prioritätsstufen zugeordnet werden können.
Interne Funktionen, Takt und Gehäuse
PICs können zahlreiche Peripherieeinheiten enthalten: Timer, A/D-Wandler mit 8, 10 oder 12 Bit, Analogkomparatoren, Capture/Compare-Einheiten zum Zeitmessen oder Erzeugen digitaler Signale, PWM, serielle Schnittstellen wie RS232, SPI und I²C, USB, CAN, Watchdog-Timer, LCD-Treiber und Ethernet. SFRs steuern diese Einheiten; sie können Interrupts auslösen. Bei PIC24 und dsPIC lassen sich teilweise zwei 16-Bit-Timer als 32-Bit-Timer verwenden. Die schnellsten genannten A/D-Wandler der dsPIC30-SMPS-Unterfamilie schaffen bis etwa 2 MSPS, und deren Komparatoren haben etwa 20 ns Schaltzeit. Enhanced-PWM kann eine Totzeit einfügen, etwa für Motor- und Spannungsregelungen. Bei dsPIC30-SMPS beträgt die Bit-Zykluszeit der PWM etwa 1,1 ns, entsprechend etwa 960 MHz; damit ist beispielsweise 10-Bit-PWM bei etwa 950 kHz möglich.
Die meisten aktuellen PICs und dsPICs besitzen umfangreiche On-Chip-Oszillatoroptionen. Bei besonders kleinen oder preiswerten PIC10F2xx und PIC18FxxJxx ist der interne Oszillator teils auf 32 kHz oder 4 MHz beschränkt. RC-Oszillatoren haben meist nur etwa 1 % bis 5 % Genauigkeit. Für genauere Anwendungen mit asynchroner Kommunikation wie RS232, USB oder CAN muss daher ein externer Quarz oder Oszillator angeschlossen werden.
Die Gehäuse reichen von 6 bis 100 Pins. Varianten mit 8 bis 40 Pins gibt es neben SMD-Ausführungen auch als Dual-In-Line; das kleinste Gehäuse ist SOT-23, Gehäuse ab 44 Pins sind TQFP. SO und SSOP reichen von 8 bis 28 Pins, QFN/MLF von 8 bis 44 Pins. PICs in gleichen Gehäusen besitzen meist kompatible Pinouts. Beispielsweise passt ein PIC18F4620 auf ein Layout für einen PIC16C74 und umgekehrt. Bei kleinen Controllern kann ein 20-Pin-Layout auch Varianten mit 14 oder 8 Pins aufnehmen; beim Übergang von 8 auf 16 Bit bestehen jedoch kleinere Unterschiede.
Einsatz und Programmentwicklung
Preiswerte Bausteine, Entwicklungswerkzeuge und teils kostenlose C-Compiler förderten die Verbreitung bei Hobbyelektronikern seit Beginn der 1990er Jahre. Frühe verbreitete Modelle waren PIC16C83, PIC16F83 und PIC16F84 mit Flash-Speicher. Für umfangreichere Aufgaben dient die Enhanced-Familie PIC18Fxx mit linearem Adressraum. In Selbstbauprojekten sind unter anderem PIC12F675, PIC12F683, PIC16F84A, PIC16F627A, PIC16F628A und PIC16F876A verbreitet. Bestehender Assembler-Code für den PIC16F84 kann durch eine Patch-Routine zum Abschalten nicht vorhandener analoger Peripherie und durch Verschieben von RAM-Variablen für den PIC16F628A angepasst werden.
PICs werden in Prozessor-Chipkarten vom Typ Gold- und Silvercard, Alarm- und Zutrittskontrollsystemen von Security Products, Leistungsmessgeräten von Linyang, dem Management elektrischer Energie in BMW-Autos, Beleuchtungssystemen von Insta Elektro GmbH und Modchips für Playstation, PS2 und Nintendo Wii genannt. Als PIC-Derivate werden bestimmte BASIC-Stamp-Varianten, PICAXE und OOPic aufgeführt.
Programme entstehen in Assembler oder Hochsprachen wie C und BASIC. Bei kleinen PICs wird Assembler oft verwendet, um besonders kleinen und effizienten Code zu erhalten; bei größeren oder anspruchsvollen Anwendungen wird in der Industrie meist C eingesetzt, weil der Code besser wartbar ist. MPLAB bietet kostenlos Assembler, Simulator und Schnittstellen zu Entwicklungswerkzeugen. Die aktuelle Umgebung umfasst MPLAB X IDE für alle PICs, MPLAB XC32 als C/C++-Compiler für 32 Bit sowie PICkit 4 und 5 als Programmer und Debugger.
Beim Debugging wird entweder der MPLAB-Simulator genutzt oder der Programmablauf direkt in der Schaltung überwacht. Ein Debugger kann bei Flash-Bausteinen meist über fünf Anschlüsse arbeiten: positive und negative Spannung, Reset sowie PGC und PGD. PICkit2, PICkit3, ICD2, Real-ICE und vergleichbare Geräte können je nach Modell programmieren und teilweise debuggen. Das Programmieren heißt auch Brennen: Firmware wird in EPROM oder Flash geschrieben. Die ICSP-Schnittstelle erlaubt dies häufig in der eingebauten Schaltung; viele 16- und 32-Bit-Familien können auch über JTAG programmiert werden. Kostenlose Studentenversionen der C-Compiler C30 für PIC24/dsPIC und C32 für PIC32 dürfen von allen Personen genutzt werden, haben aber nicht frei konfigurierbare Optimierung. Der freie Small Device C Compiler unterstützt PIC16 und PIC18.
Kopierschutz und kompatible Bausteine
PICmicro ist nicht für Hochsicherheitsanwendungen wie sichere Smartcards geeignet. Bei OTP-basierten PICs können Ausleseschutzsicherungen oft durch gezielte UV-Bestrahlung bestimmter Bereiche des Chip-Dies zurückgesetzt werden. Dazu wird das Kunststoffgehäuse über dem Chip entfernt, die Stelle unter einem Mikroskop lokalisiert und der übrige Halbleiter abgedeckt. Auch Flash-Modelle können durch gezielte Schwankungen von Versorgungs-, Programmier- und Taktspannung sowie durch invasive Methoden wie Microprobing und FIB-Editieren angegriffen werden. Der EEPROM-basierte PIC16C84 ist durch nicht-invasive Spannungsschwankungen besonders leicht auszulesen; beim Flash-Nachfolger PIC16F84(A) wurde dieses Problem behoben. Neuere Modelle und Revisionen können Metall-Schutzschilde oder Metall-Netze enthalten, doch ein erfahrener Angreifer kann ein Metall-Netz per Laser zerschneiden oder mit FIB bearbeiten.
Der PIC16C71 erlaubte nach einer von Dejan Kaljević gefundenen kryptographischen Schwachstelle Rückschlüsse auf den Programmspeicherinhalt, ohne ihn außerhalb der Spezifikationen zu betreiben; bestimmte Befehle mussten dabei erraten oder aus dem Zusammenhang bestimmt werden.
PIC-kompatible oder ähnliche Mikrocontroller stammen auch von anderen Herstellern. Ubicom, zuvor Scenix, stellte die zur PIC-Baseline funktionsähnliche und schnellere SX-Serie her. Nach der Einstellung der Die-Produktion durch Ubicom im Jahr 2009 wurden keine neuen SX-Controller mehr hergestellt; es gibt keinen funktionsgleichen Ersatz. Holtek bietet zur PIC-Architektur sehr ähnliche, aber nicht vollständig kompatible Controller. G-Alantic Enterprises beschreibt Mikrocontroller der MTD-Serie als PIC-kompatibel. Weitere, weniger bekannte Nachbauten aus Fernost beschränken sich meist auf die Baseline-Serie mit OTP-EPROM- oder Masken-ROM-Speicher und sind vor allem für Massenproduktionen bestimmt.