New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
PICmicro - Wikipedia

PICmicro

aus Wikipedia, der freien Enzyklopädie

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

Inhaltsverzeichnis

[Bearbeiten] Geschichte

Der 1655, der erste ROM-basierte PIC (noch von GI)
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.

[Bearbeiten] Grundsätzliches

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

PIC sind 8 Bit oder 16 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).

Bei den PICmicros werden oft auch die ‚Familien‘ PIC10Fxx, PIC12F(C)xx und PIC16F(C)xxx voneinander unterschieden. Genaugenommen 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, nur wenige Features (Timer und bei den neuesten Produkten auch Komparatoren oder AD-Wandler), kein Interrupt-Support, 33 Befehle, 12 Bit Befehlsbreite, 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, Standardfeatures (z. T. auch mit LCD-Controller oder LowSpeed USB), Interrupt-Support, 35 Befehle, 14 Bit Befehlsbreite, 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, Standardfeatures, 16 Bit Befehlsbreite, 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, 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.
  • PIC24F: 16 Bit PICmicro, Standardfeatures, 24 Bit Befehlsbreite, maximal 16 MIPS, 2,0 bis 3,6 Volt. Zur Zeit (2006) beinhaltet die Familie Produkte von 64 bis 128 KByte Flash in Gehäusen von 64 bis 100 Pins, weitere Produkte ab 32 KByte Flash und kleineren Gehäusen ab 28 Pins sind für 2007 angekündigt.
  • 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 (2006) beinhaltet die Familie Produkte von 64 bis 256 KByte Flash in Gehäusen von 64 bis 100 Pins, weitere Produkte ab 16 KByte Flash und kleineren Gehäusen ab circa 20 Pins sind für 2007 angekündigt.
  • 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 bis 144 KByte Flash, 20 bis 80 Pins.
  • Motion-Controlfamilie, mit Interface für Quadratur Encoder, spezieller Motor Control PWM, CAN usw. 12 bis 144 KByte Flash, 28 bis 80 Pins.
  • SMPS-Familie, speziell für Schaltnetzteile, USV, Frequenzumrichter und teilweise auch für Motion Control, mit sehr schneller PWM, schnellen Komparatoren und AD-Wandlern. 6 bis 12 KByte 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. 64 bis 256 KByte Flash, 64 bis 100 Pins, weitere mit 20 bis zu 144 Pin und von 32 bis 512 KByte Flash sind geplant.
  • Motion-Controlfamilie, mit Interface für Quadratur Encoder, spezieller Motor Control PWM, CAN usw. 64 bis 256 KByte Flash, 64 bis 100 Pins, weitere mit 20 bis zu 144 Pin und von 32 bis 512 KByte Flash sind geplant.

[Bearbeiten] Hobby und Privatverwendung

PIC sind vielfältig bei Hobbyelektronikern im Einsatz. Durch verhältnismässig preiswerte Produkte und auch günstige Entwicklungstools Anfang der Neunziger Jahre des vergangenen Jahrhunderts 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 stehengeblieben und wenn auch diese PIC heute noch angeboten (aber verhältnismässig 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 PIC12F683 empfohlen werden, es ist kein 8 Pin PIC18Fxx verfügbar und Programmentwicklungen für solche kleine Produkte sind normalerweise doch in Assembler.
  • 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.
  • 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. Einen kostenlosen C-Compiler (Studentedition des C30) bietet Microchip zum Download auf ihrer Homepage.

[Bearbeiten] kommerzielle Verwendung

PIC Devirate:

[Bearbeiten] Gehäuse

Layoutkompatibilität von 8, 14 und 20 Pin
Layoutkompatibilität von 8, 14 und 20 Pin

Microchip-PIC gibt es von 6 bis 100 Pin, davon 8 bis 40 Pin 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 Pin ausreicht.

[Bearbeiten] 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 x 12 Bits d. h. je nach Typ bis maximal 2048 Worte (dies entspricht 3 KByte oder auch 2048 mögliche Befehle). Bei der MidRange-Familie gibt es ebenfalls bis zu 4 Seiten, diese enthalten aber jeweils 2 K x 14 Bits d. h. je nach Typ bis maximal 8192 Worte (entspricht 14 KByte 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 nicht mehr, der Programmspeicher ist linear adressierbar. Bei PIC18 liegt die auf dem Chip befindliche Obergrenze bei 128 KByte (64 K Befehlsworte á 16 Bit) und kann bei einigen sehr großen Varianten auf extern bis zu 2 Megabyte erweitert werden. Bei den 16bit-Familien liegt die Obergrenze derzeit bei circa 256 KByte 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 KByte, als auch extern anschließbarer Speicher sind in Planung.

Je nach Ausführung des Programmspeichers werden verschiedene Typen unterschieden: [7]
  • 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.
  • 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 KByte RAM. Bei den 16 Bit-Familien ist der Speicher bis maximal 64 KByte linear ausbaubar, maximal werden jetzt jedoch nur 30 KByte (inklusive 2 KByte Dual-Port-RAM für den teilweise vorhandenen DMA-Controller) genutzt, dazu kommt ein 2 KByte großer Speicherbereich für die SFR. Ein Bereich von 32 KByte 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.

[Bearbeiten] 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 x 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.

[Bearbeiten] 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.

[Bearbeiten] 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
  • 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 werden über SFRs (special function register) angesprochen und können je nach Funktion verschiedene Interrupts auslösen.

[Bearbeiten] 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.

[Bearbeiten] Programmentwicklung

Real-ICE, Emulator, Debugger und Programmiergerät
Real-ICE, Emulator, Debugger und Programmiergerät
ICD2, Debugger und Programmiergerät von Microchip
ICD2, Debugger und Programmiergerät von Microchip
PICkit2, Low Cost Programmiergerät von Microchip
PICkit2, Low Cost Programmiergerät von Microchip
PICstart+, Programmiergerät von Microchip
PICstart+, Programmiergerät von Microchip
Developmentboard für die dsPIC30 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 und für die 16 Bit-Familien (PIC24 und dsPIC) 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 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.
  • 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 und dsPIC33 werden zur Zeit noch 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.


[Bearbeiten] Sicherheit und Kopierschutz

Kritiker behaupten oft, PICmicro-Mikrokontroller seien nicht ausreichend gegen nicht-invasive und invasive Attacken gesichert. Das mag teilweise auf die OTP-basierten Modelle zutreffen, da hier oftmals die Kopierschutz-Fuses durch gezieltes Bestrahlen bestimmter Bereiche des Chip-Die mit UV-Licht zurückgesetzt werden können, jedoch ist dieses Phänomen bei einigen OTP-basierten Mikrokontrollern anderer Hersteller ebenso anzutreffen. Dabei wird zuerst das Plastik-Gehäuse durch Abschleifen und Zersetzen mittels Säure oberhalb des Chip-Dies entfernt, um diesen freizulegen. Anschließend wird unter einem Mikroskop die Kopierschutz-Fuse lokalisiert und der restliche Teil des Chip-Dies mit lichtundurchlässigem Material abgedeckt und die Fuse durch UV-Licht zurückgesetzt. Solche Angriffe sind sehr leicht und billig durchzuführen.

Angriffe auf Flash-basierte Modelle der PICmicro-Reihe können durch beabsichtigte Schwankungen der Versorgungsspannung, der Programmierspannung und des Taktes durchgeführt werden.

Der EEPROM-basierte PIC16C84 war besonders leicht auszulesen. Sein Nachfolger, der PIC16F84(A), hat dieses Problem jedoch behoben.

PICmicro-Mikrokontroller sind nicht weniger sicher als andere vergleichbare Produktfamilien, jedoch sollte immer abgewogen werden, wie hoch der Aufwand und die Kosten eines Reverse Engineering und der Wert der möglicherweise gefährdeten Programme ist. Die PICmicro-Familie ist nicht für Hochsicherheits-Anwendungen (Verschlüsselung, Smartcards, ...) geeignet.

[Bearbeiten] Quellen

  1. General Instrument Corporation, Microelectronics – 1977 Data Catalog. Seite 10C-2
  2. Elektor November 2006 http://www.elektor.de/Default.aspx?tabid=1&mid=386&ctl=Details&ItemID=703
  3. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en520680
  4. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en028627
  5. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en025608
  6. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2018&mcparam=en024624
  7. http://ww1.microchip.com/downloads/en/DeviceDoc/ramrom.pdf

[Bearbeiten] 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

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu