DSPIC

DSPIC
Ein 16-bit 28-pin PDIP PIC24 Mikrocontroller

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

Inhaltsverzeichnis

Geschichte

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

Abgeleitet wurde sie von dem PIC1650, der ursprünglich von der Mikroelektronik-Abteilung bei General Instrument (GI) entwickelt wurde. Die Bezeichnung PIC wird von Microchip nicht mehr als Abkürzung verwendet, beim PIC1650 stand es für Programmable Intelligent Computer[1]. 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.

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 diverse Erweiterungen und Variationen, die interne Peripherie, Bauteilform und Geschwindigkeit betreffend, entstand eine sehr große Produktfamilie, die passende Mikrocontroller für viele unterschiedliche Anwendungsbereiche bereitstellt.

Grundsätzliches

Einige ältere EPROM-basierte PIC
Einige der kleinsten PIC aus der Baseline-Familie, 3x PIC12F509, 2x PIC10F206 (1x umgedreht)
Lückenhaft Abschnitt fehlen folgende wichtige Informationen: Aktualität: seit 2007 fehlt die weitere Entwicklung

Du kannst Wikipedia helfen, indem du sie recherchierst und einfügst.

PIC sind 8, 16 oder 32 Bit RISC-Mikrocontroller, die ursprünglich mit Fokus auf einen kleinen Befehlssatz und einfache Handhabung entwickelt wurden. Der Befehlssatz umfasst von etwa 33 (bei der Baseline-Familie) bis über 70 (bei der Enhanced-Familie) Befehle. Durch die große Vielfalt an verschiedenen Typen lässt sich für praktisch jede Anwendung ein passender PIC finden. Die Mikrocontroller sind so ausgelegt, dass sie je nach Bedarf mit sehr wenig Beschaltung auskommen (bei vielen PIC ist auch ein interner RC-Oszillator verfügbar).

Neu ist die Familie der PIC32, hier hat Microchip auf einen Controllerkern der Firma MIPS Technologies zurückgegriffen. Bei der aktuellen Produktvorstellung und Bekanntmachung im November 2007 stehen bereits erste Muster, Hardwareentwicklungstools, C-Compiler und umfangreiche Literatur zur Verfügung. Auch können die bekannten Entwicklungstools ICD2, Real-ICE und MPLAB-IDE ab der Versionsnummer 8.0 weiterhin genutzt werden, da diese auch die neue Produktfamilie unterstützen.

Bei den PICmicros werden oft auch die ‚Familien‘ PIC10Fxx, PIC12F(C)xx und PIC16F(C)xxx voneinander unterschieden. Genau genommen sind dies aber keine eigenständigen Familien, sondern nur durch die Anzahl ihrer Pins voneinander abweichende Gehäusevarianten der Familien Baseline und MidRange. Dabei steht PIC10 stets für die 6-Pin-Varianten, PIC12 für jene mit 8 Pins und PIC16 für alle PIC mit 14 oder mehr (bis zu 64) Pins.

Die verschiedenen Familien oder auch Leistungsklassen sind dabei

  • Baseline: 8 Bit PICmicro mit 12 Bit Befehlsbreite, nur wenige Features (Timer und bei den neuesten Produkten auch Komparatoren oder AD-Wandler), kein Interrupt-Support, 33 Befehle, maximal 5 MIPS. Die Familie umfasst die Produkte mit den Bezeichnungen PIC10F2xx, PIC12F(C)5xx und PIC16F(C)5x in Gehäusen von 6 bis 40 Pins.
  • MidRange: 8 Bit PICmicro mit 14 Bit Befehlsbreite, Standardfeatures (z. T. auch mit LCD-Controller oder LowSpeed-USB), Interrupt-Support, 35 Befehle, maximal 5 MIPS. Zu dieser Familie gehören die PIC12F(C)6xx und PIC16F(C)xxx sowie der PIC14000 mit 8 bis 64 Pins.
  • High Performance: 8 Bit PICmicro mit 16 Bit Befehlsbreite, Standardfeatures, maximal circa 8 MIPS. Diese Familie beinhaltet die Produkte mit der Bezeichnung PIC17Cxxx mit 40 bis 84 Pins, sie sollte für neue Designs nicht mehr verwendet werden und wird daher in den folgenden Abschnitten nicht mehr näher beschrieben.
  • High Performance Enhanced: 8 Bit PICmicro mit 16 Bit Befehlsbreite, lineare Befehls- und Daten-Speicheradressierung, 79 (oder bei den aktuellen Produkten dieser Familie auch mehr) Befehle, viel leistungsfähige Peripherie, z. B. CAN, USB, Ethernet, spezielle Motor-Steuerungseinheiten usw. Weiterhin einen 8x8-Bit-Hardware-Multiplizierer, das Rechenwerk eines Signalcontrollers, 16 Bit Befehlsbreite. Typisch sind maximal 10 MIPS Rechenleistung, jedoch sind neue Produkte mit bis zu 16 MIPS für 2007 angekündigt. Die Befehle der Programmiersprache C (z. B. Schleifenbefehle) können zum Teil von der Hardware viel effektiver ausgeführt werden. Produkte der Enhanced-Familie sind die PIC18F(C)xxx, mit 18 bis 100 Pins.
Einige 16 Bit PIC und dsPIC
  • 16 bit Mikrocontroller, PIC24 und dsPIC
Alle vier nachfolgenden Familien besitzen den gleichen CPU Core, d. h. sie können mit Hilfe der gleichen Tools, wie C-Compiler oder Debugger, gleichermaßen bearbeitet werden.
  • PIC24F: 16 Bit PICmicro, Standardfeatures, 24 Bit Befehlsbreite, maximal 16 MIPS, 2,0 bis 3,6 Volt. Zur Zeit (2007) beinhaltet die Familie Produkte von 16 KB bis 128 KB (entspricht 214 bis 217 Byte) Flash in Gehäusen von 28 bis 100 Pins[2]. Neue Varianten mit bis zu 256 KB Flash und teilweise auch mit integriertem USB-OTG (On the Go) sind jetzt ebenfalls verfügbar. Ferner sollen PIC24FJ mit integriertem Ethernet 10/100 bis Mitte 2008 auf den Markt gebracht werden.
  • PIC24H: 16 Bit PICmicro, erweiterte Features, 24 Bit Befehlsbreite, maximal 40 MIPS, nur 3,3 Volt. Diese Produktfamilie ist weitestgehend identisch zur dsPIC33-Familie, sie ist zu dieser nur um die DSP-Features reduziert. Zur Zeit (2007) beinhaltet die Familie Produkte von 16 KB bis 256 KB Flash in Gehäusen von 20 bis 100 Pins.
  • dsPIC30: 16 Bit Signalcontroller, 24 Bit Befehlsbreite, maximal 30 MIPS
3 Unterfamilien:
  • Sensor- und Standardfamilie, zum Teil mit AC97/I²S Interface, CAN usw. 12 KB bis 144 KB Flash, 20 bis 80 Pins.
  • Motion-Controlfamilie, mit Interface für Quadratur Encoder, spezieller Motor Control PWM, CAN usw. 12 KB bis 144 KB Flash, 28 bis 80 Pins.
  • SMPS-Familie, speziell für Schaltnetzteile, USV, Frequenzumrichter und teilweise auch für Motion Control (z. B. Servomotoren), mit sehr schneller PWM, schnellen Komparatoren und AD-Wandlern. 6 KB bis 12 KB Flash, 28 bis 44 Pins.
  • dsPIC33: 16 Bit Signalcontroller, 24 Bit Befehlsbreite, maximal 40 MIPS, nur 3,3 Volt
2 Unterfamilien:
  • Standardfamilie, zum Teil mit AC97/I²S Interface, CAN usw. 16 bis 256 KB Flash, 20 bis 100 Pins, weitere mit bis zu 144 Pin und bis zu 512 KB Flash sind geplant.
  • Motion-Controlfamilie, mit Interface für Quadratur-Encoder, spezieller Motor Control PWM, CAN usw. 16 KB bis 256 KB Flash, 20 bis 100 Pins, hier sind ebenfalls weitere mit bis zu 144 Pin und bis zu 512 KB Flash geplant.
  • PIC32: 32 Bit PICmicro mit MIPS M4K CPU Kern. Eine zur Zeit noch kleine Familie von nur sieben Produkten. Typisch sind maximal 80 MIPS Rechenleistung. Einige PIC32 unterstützen DMA-Datentransfer. Produkte der PIC32-Familie sind zunächst die PIC32MX, mit 32 bis 512 KB Flash, 8 KB bis 32 KB RAM und 64 bis 100 Pins[3] [4]. Bis Mitte 2008 sollen fünf weitere Produkte mit integriertem USB On-the-go mit sonst vergleichbaren Eigenschaften zur Familie hinzukommen[5].

Hobby und Privatverwendung

PIC sind vielfältig bei Hobbyelektronikern im Einsatz. Durch verhältnismäßig preiswerte Produkte und auch günstige Entwicklungstools Anfang der 1990er Jahre wurde der Einsatz der PIC in diesem Bereich besonders attraktiv. Die ersten PIC, die hier besonders gern verwendet wurden, waren der PIC16C83 und seine Nachfolger PIC16F83 bzw. PIC16F84 durch ihren bereits vorhandenen Flashspeicher. Die Entwicklung ist jedoch nicht stehen geblieben und wenn auch diese PIC heute noch angeboten (aber verhältnismäßig teuer) und auch noch vielfach verwendet werden, sollte sich der engagierte Hobbyelektroniker nach Alternativen in den Familien der PIC umschauen.

Empfehlenswert für etwas umfangreichere Aufgaben sind hier die Produkte der Enhanced-Familie (PIC18Fxx), insbesondere durch den linearen Adressraum (siehe nachstehend) ist es für den Entwickler einfacher, ein funktionsfähiges Programm zu entwickeln, ferner ist der durch Microchip angebotene, kostenlose C18-Compiler in der Student-Edition hier sicherlich ein gewichtiges Argument. Ein kleines und preiswertes Programmiergerät stellt das PICkit2 dar, welches die meisten aktuellen 8 und 16 Bit PIC programmieren kann.

Dieser kleine Absatz soll eine kleine Auswahl gängiger und moderner Produkte vorstellen, wobei alle Produkte für 5 Volt Versorgungsspannung geeignet, in DIL-Gehäuse lieferbar und mit gleicher Pinzahl zueinander pinkompatibel sind.

  • 8 Pin, hier kann der PIC12F615 empfohlen werden, es ist kein 8 Pin PIC18Fxx verfügbar und Programmentwicklungen für solch kleine Produkte sind für gewöhnlich in Assembler. Gut erhältlich sind die Typen PIC12F675 und PIC12F683.
  • 14 Pin, hier kommen zwei Alternativen in Betracht, der PIC16F684 (mit PWM) 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 kann entweder PIC16F628A, PIC16F819, PIC16F88 oder aus der Enhanced-Familie der PIC18F1320 sein. Die vorher genannten Midrange-PICs sind relativ gut erhältlich.
  • 20 Pin, eine vielfältig verwendbares Produkt ist der PIC16F690. Für Designs, bei denen ein PIC18Fxx eingesetzt werden soll, empfiehlt sich ein Blick auf 18 oder 28 Pin Mikrocontroller der PIC-Familie.
  • 28 oder 40 Pin, für beide Gehäusevarianten gilt das gleiche, so dass diese hier zusammengefasst sind. In der MidRange-Familie sind hier neue Produkte, die PIC16F886, auf den Markt gekommen. Alternativen aus der Enhanced-Familie sind die PIC18F2620 (Standardtyp, mit 64 KByte Flash), PIC18F2680 (Standardtyp mit CAN, ebenfalls mit 64 KByte Flash) oder auch PIC18F2550 (Standardtyp mit USB, allerdings nur mit 32 KByte Flash). Die Produktbezeichnungen der 40Pin-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 8bit-PIC ist hier aber nicht mehr gegeben. Gut erhältlich sind aus der Midrange-Familie der PIC16F876A.

Derzeit am häufigsten werden in freien Selbstbau-Projekten folgende PICs eingesetzt: 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 dem verschieben von RAM-Variablen zum mit doppelt soviel Speicher ausgestatteten PIC16F628A kompatibel gemacht werden

Die Verwendung der kostenlosen C-Compiler von Microchip bietet sich für den Hobbyanwender an.

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. Viele Hobby-Programmiergeräte funktionieren nicht mit jedem PC und jedem PIC zuverlässig.

  • "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 Silvercard [6]
  • Alarmanlagen und Zutrittskontrollsysteme von Security Products [7]
  • Leistungsmessgeräte von Linyang [8]
  • Management von (elektrischer) Energie in Autos von BMW [9]
  • Beleuchtungssysteme von Insta Elektro GmbH aus Lüdenscheid [10]
  • Modchips für die Playstation, PS2 und Nintendo Wii

PIC Derivate:

Gehäuse

Layoutkompatibilität von 8, 14 und 20 Pin

Microchip-PIC gibt es von 6 bis 100 Pin, davon 8 bis 40 Pin 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 MLF- oder QFN-Gehäuse von 8 bis 44 Pin. Nicht selbstverständlich ist, dass nahezu alle PICmicro in gleichen Gehäusen auch ein vergleichbares „Pinout“ besitzen. Kleine Unterschiede gibt es allerdings beim Umstieg von 8bit- auf 16bit-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 Pin passen auch die Varianten in 14 oder 8 Pin, so kann der Entwickler zunächst mit 20 Pin beginnen und bei Bedarf eine kostengünstigere Alternative mit nur 14 oder 8 Pin 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 4 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 4 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 16bit-Familien liegt die Obergrenze derzeit bei circa 256 KB Flash (ca. 86 K Befehlsworte mit jeweils 24 Bit), externer Speicher ist hier zur Zeit 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 unterschieden[11]:
  • 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.
  • 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.
  • ROM-Typ (Maskenversion; Kennbuchstaben R)
Die ROM-Typen stellen die preiswerteste Klasse der PICmicros, sie werden nur für sehr hochvolumige Anwendungen eingesetzt, da die Controller direkt in der Fabrik bei der Herstellung durch Eindiffundierung des Programms in den Chip ‚programmiert‘ werden. Ein späteres Ändern oder Löschen ist für bereits gefertigte Produkte nicht mehr möglich.


Der Datenspeicher ist bei den PICs der Baseline-Familie in 1 bis 8 Bänke zu je 32 Bytes unterteilt. Er enthält alle Spezialregister, genannt SFR (Special Function Register) und Standard RAM-register, genannt GPR (General Purpose Register); maximal sind hier 134 Byte RAM möglich. Die MidRange Familie verwendet das gleiche Prinzip, jedoch bis maximal 4 Bänke mit jeweils 128 Bytes SFR und GPR; hier sind maximal 368 Byte RAM möglich.

Bei der Enhanced Architektur gibt es die Bank Architektur zwar noch, mit bis zu 16 Bänken á 256 Byte, jedoch kann mit bestimmten Befehlen der Speicher auch direkt bzw. linear angesprochen werden; maximal bis circa 3,9 KB RAM. Bei den 16 Bit-Familien ist der Speicher bis maximal 64 KB linear ausbaubar, maximal werden jetzt jedoch nur 30 KB (inklusive 2 KB Dual-Port-RAM für den teilweise vorhandenen DMA-Controller) genutzt, dazu kommt ein 2 KB großer Speicherbereich für die SFR. Ein Bereich von 32 KB kann genutzt werden, um sehr schnelle Lesezugriffe auf den Flash-Speicher zu ermöglichen.

Der Stack kann bei der Baseline- und bei der MidRange-Familie nur von der CPU und auch nur als Speicher für den Befehlszähler verwendet werden. Er nimmt bei Unterprogrammaufrufen oder bei einem Interrupt (gilt nur für MidRange) die Rücksprungadresse einschließlich der Seiteninformation auf und ist nur 2 (Baseline-Familie) oder 8 (MidRange-Familie) Elemente tief in besonderen Stackregistern, die nicht im RAM-Bereich liegen. Bei der Enhanced-Familie ist der Stack 32 Elemente tief und kann auch vom Programm mit Ladebefehlen (z. B. PUSH und POP) genutzt werden, er liegt aber ebenfalls noch in gesonderten Speicherzellen. Erst bei den 16 Bit-Familien liegt der Stack frei im RAM.

Befehlsstruktur

Wie schon oben erwähnt, handelt es sich bei PIC um RISC-Prozessoren, sie verfügen also über einen sehr kleinen, aber effektiven Befehlssatz. Ein Befehl bzw. ein Befehlswort im Programmspeicher, dies sind zwischen 12 und 24 Bit (siehe oben), entspricht einem kompletten Befehl inklusive Argumenten, jeder Befehl außer den Befehlen zur Programmverzweigung wird innerhalb eines Zyklus abgearbeitet. Ausnahmen davon gibt es nur bei der Enhanced-Familie mit 5 möglichen Befehlen, die aus zwei Wörtern bestehen können und bei den 16bit-Controllern, welche aber auch nur wenige 2-Wort-Befehle haben. Die ALU bei den 8 Bit PIC ist eine Ein-Adress-Maschine. Bei Befehlen, die zwei Argumente benötigen, ist eines immer das W (Work)-Register. Aber keine Regel ohne Ausnahme(n), die Enhanced PIC können auch Datentransfer von einer Speicherzelle zu einer anderen Speicherzelle (MOVFF adr1,adr2 ; adrx=RAM oder SFR, benötigt 2 Worte und 2 Zyklen).

Bei den 16bit-Controllern gibt es einen Satz von 16 × 16 Bit Registern, die alle für die meisten Befehle zur Verfügung stehen, jedoch haben einige Register davon auch Sonderaufgaben, z. B. für den Stack oder für DSP-Befehle.

Interruptbehandlung

Im Gegensatz zu vielen anderen Controllern besitzen die 8 Bit PIC keinen (Baseline), einen (MidRange) oder zwei (Enhanced) Interruptvektoren, der bei Auslösung eines beliebigen Interrupts angesprungen wird. Seine Adresse ist bei den MidRange PIC 0004h, bei den byteadressierten Enhanced PIC bei 0008h (dies entspricht der Wort-Adresse 0004h bei den MidRange PIC) und 0010h. Nur bei den Enhanced PIC ist somit eine eingeschränkte Prioritätssteuerung möglich, diese muss sonst durch die Interruptroutine selbst übernommen werden. Bei den 16 Bit Familien gibt es für nahezu jede Peripherie oder Sonderfunktion eigene, insgesamt bis zu 118 Interruptvektoren, diesen kann einer von 8 verschiedenen Prioritätsleveln frei zugeordnet werden.

Interne Peripherie

Es existiert eine große Vielfalt an verschiedenen Ausführungen von PICs. Diese enthalten viele unterschiedliche interne Peripherieeinheiten. Die gebräuchlichsten sind

  • Timer, sowohl 8 und 16 Bit Controller. Teilweise sind bei den PIC24 und dsPIC auch je 2 16 Bit Timer als 32 Bit Timer zu verwenden
  • A/D-Wandler, je nach Variante sind 8 Bit, 10 Bit oder 12 Bit möglich. Bei den PIC24H und dsPIC33 sind teilweise 2 unabhängig voneinander arbeitende A/D-Wandler vorhanden, diese können vom Anwender in verschiedenen Betriebsmodi mit schnellen 10 Bit oder genaueren 12 Bit programmiert und verwendet werden. Die schnellsten A/D-Wandler finden sich derzeit bei den dsPIC30 der SMPS-Unterfamilie mit bis zu ca. 2 MSPS (Millionen A/D-Wandlungen pro Sekunde)
  • Analogkomparatoren, bei vielen PIC sind ein oder zwei Komparatoren vorhanden, sie können auch als „Fensterkomparator“ zusammengeschaltet werden. Die schnellsten Komparatoren sind bei der SMPS-Unterfamilie dsPIC30 zu finden. Sie haben eine Schaltzeit von ca. 20 ns
  • PWM ist bei vielen PIC vorhanden, neuere Modelle verfügen zumeist über sogenannte „Enhanced-PWM“ mit der Möglichkeit, zwischen dem quasi zeitgleichen Umschalten eine sogenannte Totzeit einzusteuern, dies wird vor allem bei elektrischen Motor- und Spannungsregelungen benötigt. Die schnellsten PWMs finden sich derzeit bei den dsPIC30 der SMPS-Unterfamilie mit einer Bit-Zykluszeit von nur ca. 1,1 ns, dies entspricht einer Frequenz von ca. 960 MHz, damit ist z. B. eine PWM mit 10 Bit Auflösung bei ca. 950 kHz möglich
  • Standard-Kommunikationsschnittstellen (seriell, z. B. RS232, SPI, I²C, …) sind auf den meisten Controllern vorhanden. Neue Controller haben zumeist eine sogenannte „EnhancedUART“, diese Bezeichnung bedeutet, dass die Hardware auch das LIN-Protokoll voll unterstützt
  • USB, bei den Enhanced Micros der Unterfamilien PIC18Fxx[J]5x gibt es verschiedene Produkte mit einem USB-Function (Slave) für maximal 12 MBit/s, FullSpeed-USB. Verfügbar sind bei der PIC24F-Familie auch neue Produkte mit einem USB-OTG on Chip, die Bezeichnungen sollen PIC24FJxxxGB1xx lauten. In der Familie der PIC32 sollen ebenfalls bis zum Sommer 2008 neue Produkte mit USB OTG kommen.
  • CAN, sowohl bei den Enhanced Micros der Unterfamilien PIC18Fxx8x, wie auch bei den PIC24 und dsPIC gibt es eine große Zahl an verschiedenen Controllern mit Unterstützung für CAN 2.0B
  • Watchdog-Timer, ist bei allen Mikrocontrollern vorhanden, meistens auch mit einem eigenen, niederfrequenten Oszillator auf dem Chip, z. B. 32 kHz oder 512 kHz
  • LCD-Treiber sind nur bei den MidRange und Enhanced 8 Bit Micros zu finden, Produkte sind alle PIC16F9xx und PIC18Fxx[J]9x. Sie können kleine, einfarbige Displays mit bis zu 48 Elementen oder im Multiplexverfahren bis 196 Elemente ansteuern
  • Ethernet-Controller sind ein neues Feature bei der Enhanced-Reihe in der Unterfamilie PIC18FxxJ6x und beinhalten sowohl den MAC als auch den PHY für 10Base-T (IEEE 802.3i). Microchip bietet für diese Controller einen kostenlosen Ethernet-Stack in Form einer Applikation note an

Diese Peripherien werden über SFRs (special function register) angesprochen und können je nach Funktion verschiedene Interrupts auslösen.

Der Oszillator

Die Optionen für den oder die Oszillatoren sind so mannigfaltig wie die PICmicros und ihre Produktfamilien selbst. Die ältesten PICmicros hatten im Allgemeinen gar keinen eigenen Oszillator auf dem Chip. Später bekamen die 8 Pin PIC12 als erste einen eigenen 4 MHz RC-Oszillator auf den Chip. Dann wurden neue Konzepte mit mehr Flexibilität auch für PIC mit mehr Pins hinzugefügt. Heute verfügen die meisten aktuellen PIC und dsPIC über sehr weitreichende onChip-Oszillatoroptionen. Nur auf den besonders kleinen oder preiswerten Typen, PIC10F2xx oder auch PIC18FxxJxx, befindet sich zum Teil nur ein eingeschränkter onChip-Oszillator mit 32 kHz oder 4 MHz. Jedoch haben diese RC-Oszillatoren in der Regel eine eingeschränkte Genauigkeit von nur ca. 1 % bis 5 %. Für genauere Anwendungen, zum Beispiel mit asynchroner Kommunikation (RS232, USB, CAN), ist das nicht ausreichend und es muss extern ein Quarz oder Oszillator angeschlossen werden.

Programmentwicklung

Real-ICE, Emulator, Debugger und Programmiergerät
ICD2, Debugger und Programmiergerät von Microchip
PICkit2, Low Cost Programmiergerät von Microchip
PICstart+, Programmiergerät von Microchip
Developmentboard für die dsPIC30 von Microchip

Um den Microcontroller in einer Anwendung einsetzen zu können, muss zuerst vom Entwickler ein Programm entwickelt werden. Die Programmentwicklung kann mittels Assembler oder einer Hochsprache, z. B. C, BASIC oder anderer Compiler geschehen. Für die kleineren Mikrocontroller ist heute noch oft Assembler üblich, um den Code möglichst effizient und klein zu halten, was unter Umständen den Einsatz von kleineren, preiswerteren Mikros ermöglicht. Bei den Mikros mit größerem Speicher bzw. für anspruchsvollere Aufgaben kommt in der Industrie heute zumeist C zum Einsatz, da damit der Programmcode später besser zu pflegen ist.

  • Programmierung in Assembler
Alle PIC können mit dem passenden Assembler in der kostenlosen Software MPLAB von Microchip programmiert werden. Diese MPLAB-Software stellt neben dem Assembler auch einen Simulator zum Testen des Codes und die Schnittstellen zu den verschiedenen Entwicklungswerkzeugen zur Verfügung.
  • Programmierung in C
Von Microchip sind, als sogenannte Students-Edition, ebenfalls kostenlose, C-Compiler für die Enhanced (PIC18)-Familie, für die 16 Bit-Familien (PIC24 und dsPIC) und für die neue PIC32-Familie erhältlich. Weitere C-Compiler gibt es von verschiedenen Anbietern, siehe Weblinks.
  • Fehlersuche – Debugging
Zum Debuggen kann man auf den kostenlosen Simulator in MPLAB zurückgreifen oder mittels einer zusätzlichen Hardware, Debugger oder Emulator, direkt in der Schaltung den Programmfluss überwachen und bei Fehlern korrigieren.
  • Debugger
Neben diversen Drittanbietern bietet Microchip selbst eine Palette von Debugtools an. Am weitesten verbreitet ist dabei das ICD2, aber auch das viel günstigere PICkit2 kann diese Aufgabe jetzt bei einigen wenigen PIC leisten. Das seit kurzem lieferbare, wesentlich leistungsfähigere und auch teurere Real-ICE kann zur Zeit nur die 16 und 32 Bit-Produkte und einige Produkte der PIC18-Familie debuggen, dies soll aber mittel- bis langfristig auch auf die anderen Produktfamilien ausgedehnt werden. Alle drei hier genannten Produkte können auch zum Programmieren (Brennen) der PIC verwendet werden. Im Internet existieren zahlreiche Schaltungen zum Selbstbau eines ICD2-Nachbaus, welcher MPLAB kompatibel ist. Diese Nachbauten werden von Microchip trotz der Verwendung von urheberrechtlich geschütztem Programmcode geduldet
  • Emulator
Auch hier gibt es verschieden Drittanbieter, sowie Emulatoren von Microchip selbst. Zur Zeit gibt es ein ICE2000, für die PIC10 bis PIC18, sowie ein ICE4000 für die PIC18 und dsPIC30. Die aktuellen LowVoltage-Versionen PIC18FxxJxx, PIC18FxxKxx, PIC24, dsPIC33 und auch der neue PIC32 werden von keinem dieser Emulatoren unterstützt, hier muss zur Fehlersuche auf einen der obigen Debugger zurückgegriffen werden. Die Emulatoren können ein fertiges Programm nicht programmieren (brennen).
  • Programmierung
Dieser Vorgang wird auch als Brennen bezeichnet. Das bedeutet, dass Informationen (z. B. ein compiliertes Programm, auch Firmware genannt) auf dem internen EPROM oder Flash-Speicher des Bausteins gespeichert werden. Hierzu bieten die meisten PIC-Microcontroller eine sogenannte ICSP-Schnittstelle, die auch noch zur Übertragung des Maschinencode benutzt werden kann, wenn der Chip bereits in die Schaltung eingebaut wurde. Dieser Vorgang kann dann mit einem Programmiergerät durchgeführt werden. Daneben gibt es für die meisten 16 und 32 Bit Controllerfamilien auch die Möglichkeit über die integrierte JTAG-Schnittstelle zu programmieren.

kostenloser Compiler

Kostenlose und freie C-Compiler auf Basis des GNU C Compilers (gcc) werden von Microchip selbst zum Download auf ihrer Homepage angeboten.

Es handelt sich bei zweien um die sogenannten Studentenversionen[12] der drei professionellen und kostenpflichtigen, C30 (für alle PIC24 und dsPIC) sowie C32 (für alle PIC32). Diese Studentenversionen haben gegenüber der professionellen Version lediglich solche Einschränkungen, die für den Heimanwender kaum ins Gewicht fallen. Sie dürfen nicht nur von Studenten, sondern von jeder Person genutzt werden. Die Compiler lassen sich alleinstehend verwenden oder in die kostenlose Entwicklungsumgebung MPLAB integrieren.

Die umfangreichen über den C-Standard hinausgehenden Libraries sind allerdings nur halbfrei, da sie nicht für kommerzielle Zwecke genutzt werden dürfen. Darin unterscheiden sie sich von freier Software.

Der PIC18 Compiler basiert auf einer anderen Codebasis[12][13]. Bei der kostenlosen Studentenversion ist als Einschränkung gegenüber der Vollversion die vorhandene Codeoptimierung nicht frei konfigurierbar sondern wird nach dem Defaultschema durchgeführt, das einen Kompromiss zwischen Codegröße und Schnelligkeit darstellt[14].

Ein weiterer halbfreier Compiler ist der CC5X Compiler[15], der ebenfalls für nicht kommerzielle Anwendungen frei verwendet werden kann.

Sicherheit und Kopierschutz

OTP-basierende PICmicro-Mikrokontroller sind nicht ausreichend gegen nicht-invasive und invasive Attacken gesichert, da hier oftmals die Ausleseschutzsicherungen durch gezieltes Bestrahlen bestimmter Bereiche des Chip-Die mit UV-Licht zurückgesetzt werden können. Jedoch ist dieses Phänomen auch bei einigen OTP-basierten Mikrokontrollern anderer Hersteller anzutreffen. Die PICmicro-Familie ist nicht für Hochsicherheits-Anwendungen wie sichere Smartcards geeignet.

Zum Zurücksetzen der Ausleseschutzsicherungen wird zuerst das Plastik-Gehäuse durch Abschleifen und Zersetzen mittels Säure oberhalb des Halbleiterchips entfernt. Anschließend werden unter einem Mikroskop der Ort der Ausleseschutzsicherungen am Chip lokalisiert und der restliche Teil des Halbleiters mit einem lichtundurchlässigem Material abgedeckt. Danach wird die Ausleseschutzsicherung durch Ultraviolettstrahlung zurückgesetzt. Solche Angriffe sind sehr leicht und billig durchzuführen.

Beim PIC16C71 konnte nicht-invasiv, und ohne ihn außerhalb der Spezifikationen zu betreiben, durch eine kryptographische Schwachstelle, welche von Dejan Kaljević gefunden wurde, Rückschlüsse auf den Inhalt der Programmspeichers gemacht werden. Bestimmte Befehle müssen allerdings erraten bzw. nach dem Kontext bestimmt werden.

Angriffe auf Flash-basierte Modelle der PICmicro-Reihe können mitunter durch beabsichtigte Schwankungen der Versorgungsspannung, der Programmierspannung und des Taktes und durch invasive Aktionen (Mircoprobing, FIB-Editieren) durchgeführt werden.

Der EEPROM-basierte PIC16C84 ist durch nicht-invasive Angriffe, wie die Schwankungen der Versorgungsspannung, besonders leicht auszulesen. Es existieren viele Hobby-Programmiergeräte, die das Auslesen von kopiergeschützten PIC16C84 standardmässig vorsehen. Die Nachfolger, der Flash-basierte PIC16F84(A), hat dieses Problem jedoch behoben.

Der Hersteller Microchip baut bei einigen neueren Modellen und Revisionen Vorkehrungen wie Metall-Schutzschilder oder Metall-Netze ein. Ein Schutzschild verhindert das Zurücksetzen oder Verfälschen von Ausleseschutzsicherungen mittels UV-Licht, während ein Metall-Netz das Microprobing verhindern oder erschweren soll. Allerdings kann ein erfahrener Angreifer das Metall-Netz in der obersten Schicht mittels Laser zerschneiden oder mittels FIB „anbohren“.

PIC-kompatible Mikrocontroller und Nachbauten

  • Ubicom, ehemals Scenix, stellt die SX-Serie her. Diese funktionsähnlichen Microcontroller sind viel schneller als die PIC-Baseline-Architektur. Seit 2005 werden die Mikrokontroller der SX-Serie exklusiv von Parallax verkauft. Die neureren Produktionsserien der SX-Modelle haben deshalb einen Parallax-Aufdruck. Da Ubicom keine oder zu wenig Ressourcen für die Herstellung der SX-Serie hat, liefert Ubicom an Parallax die fertig prozessierten und gesägten Silizium-Wafer, während Parallax die Dice in Gehäuse montieren lässt und exklusiv vertreibt.
  • Holtek, ein taiwanesischer Halbleiter-Hersteller, bietet zu der PIC-Architektur sehr ähnliche, jedoch nicht vollständig kompatible Mikrokontroller an.
  • G-Alantic Enterprises, ein taiwanesischer Hersteller stellt neben PC-Gehäusen auch Mikrokontroller der MTD-Serie her, welche sogar offen als PIC-kompatibel beschrieben werden. [16]

Daneben existieren weitere Nachbauten weniger bekannter Halbleiter-Hersteller aus Fernost, welche sich fast immer auf die Baseline-Serie beschränken und nur OTP-EPROM oder Masken-ROM-Speicher aufweisen. Diese Mikrocontroller sind primär für Massenproduktionen ausgelegt.

Literatur

Günter Schmitt: PIC-Microcontroller - Programmierung in Assembler und C - Schaltungen und Anwendungsbeispiele für die Familien PIC18, PIC16, PIC12, PIC10. 2008. ISBN 978-3-486-58597-1

Quellen

  1. General Instrument Corporation, Microelectronics – 1977 Data Catalog. Seite 10C-2
  2. Kleinste Ausführung: [1]
  3. Microchip 32Bit Homepage [2]
  4. MIPS M4K Homepage [3]
  5. Produktübersicht der PIC32 Familie [4]
  6. Chipkarten mit PIC, Elektor November 2006 [5]
  7. NESS Security Products [6]
  8. Linyang Leistungsmessgeräte [7]
  9. BMW Energiemanagement [8]
  10. Insta Beleuchtungssyteme [9]
  11. PDF Dokument zu verschiedenen Programmspeichern [10]
  12. a b MPLAB C Compiler [11]
  13. Compilerlizenz [12]
  14. PIC18 Compiler [13]
  15. CC5X Compiler [14]
  16. G-Alantic, ein Hersteller von PIC-Nachbauten [15]

Weblinks

PIC-Assembler-Befehle
Informationen rund um den PIC (Tutorials, Projekte, Datenblätter, Wiki usw.)
PIC-Portal mit vielen Informationen und Selbstbau-Projekten
Freie IDE für Mikrokontrollerentwicklung unter Linux
Sicherheit des Kopierschutzes von PIC und anderen Mikrokontrollern

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • PICmicro — 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. Inhaltsverzeichnis …   Deutsch Wikipedia

  • PIC microcontroller — PIC microcontrollers in DIP and QFN packages …   Wikipedia

  • Mikroelektronika — Type Private Industry Electronics Founded 1997 Key people …   Wikipedia

  • MiWi — module produced by Microchip Technology beside a 1 cent coin. MiWi and MiWi P2P are proprietary wireless protocols designed by Microchip Technology that uses small, low power digital radios based on the IEEE 802.15.4 standard for wireless… …   Wikipedia

  • Liste des systèmes d'exploitation temps réel — Cette liste des systèmes d exploitation temps réel présente les systèmes d exploitation temps réel. Un RTOS est un système d exploitation pour les applications embarquées et temps réel permettant ainsi de garantir les contraintes et de fournir… …   Wikipédia en Français

  • Microcontroleur PIC — Microcontrôleur PIC Les microcontrôleurs PIC (ou PICmicro dans la terminologie du fabricant) forment une famille de microcontrôleurs de la société Microchip. Ces microcontrôleurs sont dérivés du PIC1650 développé à l origine par la division… …   Wikipédia en Français

  • Microcontrôleur PIC — Les microcontrôleurs PIC (ou PICmicro dans la terminologie du fabricant) forment une famille de microcontrôleurs de la société Microchip. Ces microcontrôleurs sont dérivés du PIC1650 développé à l origine par la division microélectronique de… …   Wikipédia en Français

  • Programmable Intelligent Computer — Microcontrôleur PIC Les microcontrôleurs PIC (ou PICmicro dans la terminologie du fabricant) forment une famille de microcontrôleurs de la société Microchip. Ces microcontrôleurs sont dérivés du PIC1650 développé à l origine par la division… …   Wikipédia en Français

  • PIC — У этого термина существуют и другие значения, см. PIC (значения). О микросхеме Intel 8259A см. Контроллер прерываний …   Википедия

  • GNU Compiler Collection — Cc1 redirects here. For other uses of CC1 or CC 1, see CC1 (disambiguation). GNU Compiler Collection Developer(s) GNU Project Initial release May 23, 1987 ( …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”