PIC (mikrocontroller)

PIC er en familie af RISC-mikrocontrollere lavet af firmaet Microchip Technology. PIC er en afledning af PIC1650, som oprindeligt blev udviklet af General Instruments Microelectronics Division.

Microchip Technology anvender ikke PIC som et akronym; faktisk er brand-navnet PICmicro.

PIC-kodningsværktøjer 
PICs anvender et RISC-instruktionssæt, som varierer med omkring 35 instruktioner for de mindste PICs til omkring 70 instruktioner for de største PICs.

Microchip tilbyder en freeware-IDE-pakke kaldet MPLAB, som også inkuderer en software-simulator såvel som en assembler.

Andre laver C-compilers til PICs. microchip sælger også compilere til de største PICs ("C18" til 18F serien og "C30" til dsPICs). De tilbyder også en "studenter-udgave/demo" af C18 som afbryder nogle optimeringer efter et stykke tid.

Open source-compilere til Pascal, JAL og Forth, PicForth findes også.

GPUTILS er en open source-samling af værktøjer, distribueret under GNU General Public License. GPUTILS omfatter en assembler og en linker og virker på Linux, Mac OS X og Microsoft Windows. GPSIM er en open source-simulator til PIC-mikrocontrollere, som også kan simulere hardwaremoduler som f.eks. LCD-skærme.

PIC-brændere 
Apparater kaldet "brændere" anvendes traditionelt til at lægge koden ind i en PIC. De fleste PICs som Microchip sælger, har mulighed for ICSP (In Circuit Serial Programming) og/eller LVP (Low Voltage Programming), hvilket gør det muligt at brænde PIC, mens den sidder i et anvendelseskredsløb. ICSP-brænding udføres ved at anvende benene RB6 og RB7 til clock og data, mens en høj spænding er tilstede på ben /MCLR. Der findes mange brændere til PIC-mikrocontrollere, lige fra de simpleste design, som kræver kommunikationssoftware til at håndtere alle kommunikationsdetaljer, til komplekse design, som kan teste brændingsresultatet ved forskellige spændinger. Mange af de komplekse brændere anvender en for-programmeret PIC som håndterer brændingskommandoer til PICen, som skal brændes.

Ordstørrelse 
PICens ordstørrelse er kilden til megen forvirring. Alle PICs (undtagen dsPICs) håndterer data i 8-bit bidder, så de burde kaldes 8-bit mikrocontrollere. Men til forskel fra de fleste CPUer anvender PICs en Harvard-arkitektur, så de enkelte instruktioners størrelser kan være indbyrdes forskellige. Faktisk anvender forskellige PIC familier forskellige instruktionsstørrelser, som gør det til en udfordring at sammenligne en PICs kodestørrelse med andre mikrocontrollere.

Moderne PICs 
De gamle PROM og EPROM PICs bliver gradvist erstattet af chips med Flashhukommelse. Flash-hukommelse gør det muligt at reprogrammere PICen flere tusind gange elektrisk.

"Egenskaber" 
PICs tilbyder mange forskellige hardwareblokke afhængig af den aktuelle PIC model:
 Timere
 Synkron/asynkron serial transmission UART
 AD-konvertere
 Spændingskomparatorer
 Capture/Compare/PWM-moduler
 LCD Drivere
 I2C og SPI periferi databus understøttelse
 Intern (software tilgængelig) EEPROM hukommelse
 Motorstyringskerner
 USB grænsefladeunderstøttelse

8-bit PIC-mikrocontroller-produktfamilier 
 PIC10
 PIC12 
 PIC14 
 PIC16 
 PIC18

Almindelige PICs 
 PIC10 familien (mini PIC)
 PIC12 familien (8 ben DIL. Nogle med intern oscillator)
 PIC12C508/509 (1k flash. Populær i mindre designs)
 PIC12F629/675 (1k flash)
 PIC16 familien
 PIC16F84 (18 ben DIL. 1k flash. Betragtes almindeligvis som en forældet chip, men umulig af "aflive" pga. populariteten)
 PIC16F84A (18 ben DIL. 1k flash. En lidt forbedret udgave af PIC16F84)
 PIC16F628A (18 ben DIL. 2k flash. Bedre og normalt billigere end PIC16F84 og PIC16F84A)
 PIC16F648A (fås i bl.a. 18 ben DIL. 4k flash. Mere flash-rom end PIC16F84A og PIC16F628A)
 PIC16F87X familien (fås bl.a. 28 ben smal DIL og 40 ben DIL. 2..8k flash. Anvendt i mange hobby projekter.)
 PIC18 familien (Forbedret instruktionssæt)
 PIC18F1320 (18 ben DIL. 8k flash)
 PIC18F2455 (28 ben DIL. 24k flash, USB)
 PIC18F4550 (fås i bl.a. 40 ben DIL. 32k flash, USB)
 (PIC18F452 ældre) (40 ben DIL. 16k flash. Anvendt i nogle hobby projekter.)

Se også 
 Microbot
 Atmel AVR
 TI MSP430
 ARM mikrocontroller
 Internet-jargon

Mikrocontrollere