# PIC

* No s'ha de confondre amb pic.
El PIC és un microcontrolador amb arquitectura Harvard, fabricats per "Microchip Technology". Deriven del PIC1650 desenvolupats inicialment per la divisió de microelectrònica de General Instrument. El nom PIC inicialment es referia a "Peripheral Interface Controller". és a dir, microcontrolador de connexió perifèric, passant més tard a anomenar-se'n "Programmable Intelligent Computer". La fama i el coneixement per aquest producte s'obté a partir del baix cost, àmplia disponibilitat i base d'usuaris, amplies possibilitats per aplicacions amb documents, disponibilitat de baixos costos o gratuïtes eines de desenvolupament i forces sèries de programacions o reprogramacions amb memòries flash.
Els PICs tenen un conjunt de registres que funcionen com a memòria RAM de propòsit general. Registres de control especials sobre els recursos de maquinari xip, que s'assignen a l'espai de dades. L'adreçament de la memòria varia depenent de la sèrie de dispositius, i tots els dispositius PIC disposen d'un mecanisme bancari per ampliar el front de la memòria addicional. Més tard la sèrie de dispositius amb instruccions poden cobrir l'espai direccionable en el seu conjunt, independentment del banc seleccionat.
El PIC original es va dissenyar per a ser usat amb la nova CPU de 16 bits CP16000. Sent en general una bona CPU, aquesta tenia males prestacions de E/S, i el PIC de 8 bits es va desenvolupar el 1975 per millorar el rendiment del sistema traient pes d'E/S a la CPU. El PIC utilitzava microcodi simple emmagatzemat en memòria ROM per a realitzar aquestes tasques, i encara que el terme no s'usava en aquell moment, es tracta d'un disseny RISC que executa una instrucció cada 4 cicles de l'oscil·lador.

## Arquitectura central

L'arquitectura del PIC és molt minimalista. Aquesta caracteritzada per les següents prestacions:
* Àrea de codi i de dades separades (Arquitectura Harvard).
* Un reduït nombre d'instruccions de longitud fixa.
* La majoria de les instruccions s'executen en un sol cicle d'execució (4 cicles de clock), amb cicles d'únic retard en les bifurcacions i salts.
* Un sol acumulador (W), l'ús (com a operador d'origen) és implícit (no està especificat en la instrucció).
* Totes les posicions de la RAM funcionen com registres d'origen i / o de destinació d'operacions matemàtiques i altres funcions.
* Una pila de maquinari per a emmagatzemar instruccions de tornada de funcions.
* Una relativament petita quantitat d'espai de dades direccionable (típicament, 256 bytes), extensible a través de manipulació de bancs de memòria.
* L'espai de dades està relacionat amb el CPU, ports, i els registres dels perifèrics.
* El comptador de programa està també relacionat dins l'espai de dades, i és possible escriure-hi (permetent salts indirectes).
A diferencien de la majoria d'altres CPU, no hi ha distinció entre els espais de memòria i els espais de registres, ja que la RAM compleix dues funcions, i aquesta és normalment referida com arxiu de registres "o simplement, registres.

### Espai de dades (RAM)

Els microcontroladors PIC tenen una sèrie de registres que funcionen com una RAM de propòsit general. Els registres de propòsit específic per als recursos de maquinari disponibles dins del mateix xip també estan adreçats a la RAM. L'adreça de la memòria varia segons la línia de dispositius, i tots els dispositius PIC tenen algun tipus de mecanisme de manipulació de bancs de memòria que poden ser usats per accedir memòria addicional. Les sèries més recents de dispositius disposen de funcions que poden cobrir tot l'espai direccionable, independentment del banc de memòria seleccionat. En els dispositius anteriors, això havia d'assolir-se mitjançant l'ús de l'acumulador.
Per implementar adreçament indirecte, un registre de "selecció de registre d'arxiu" (FSR) i de "registre indirecte" (Indf) són usats: Un número de registre és escrit en el FSR, fent que les lectures o escriptures al Indf seran realment cap o el registre apuntat pel FSR. Els dispositius més recents s'estenen aquest concepte amb post-i pre-increments / decrements per a major eficiència en accedir seqüencialment a la informació emmagatzemada. Això permet que es pugui tractar el FSR com un punter de pila.
La memòria de dades externa no és directament direccionable excepte en alguns microcontroladors PIC 18 de gran quantitat de pins.

### Espai de codi

L'espai de codi s'implementa generalment amb ROM, EPROM o flash ROM. En general, la memòria de codi extern no és directament direccionable per la manca d'una interfície de memòria externa. Les excepcions són el PIC17 i alguns dels pins de dispositius d'alta quantitat PIC18.

### Mida de paraula

La grandària de paraula dels microcontroladors és PIC és font de moltes confusions. Tots els PICS (excepte els dsPIC) manegen dades en trossos de 8 bits, amb el que s'haurien de cridar microcontroladors de 8 bits. Però a diferència de la majoria de CPUs, el PIC utilitza arquitectura Harvard, pel que la grandària de les instruccions pot variar respecte al de la paraula de dades. De fet, les diferents famílies de pics utilitzen mides d'instrucció diferents, el que fa difícil comparar la grandària del codi del PIC amb el d'altres microcontroladors. Per exemple, un microcontrolador té 6.144 bytes de memòria de programa: per a un PIC de 12 bits això significa 4.096 paraules i per a un de 16 bits, 3072 paraules.

### Pila

Els PIC tenen una pila de retorn que s'utilitza per guardar les adreces de retorn. El hardware de la pila no és un programari d'accés en els dispositius anteriors, però això va canviar amb els 18 dispositius de la sèrie. El suport de maquinari per a un paràmetre d'ús general de pila que faltava en les primeres sèries, però aquesta molt millor en la sèrie 18, per la qual cosa l'arquitectura de la sèrie 18 més amigable per als compiladors d'alt nivell d'idioma.

## Programació del PIC

Per transferir el codi d'un ordinador al PIC normalment es fa servir un dispositiu anomenat programador. La majoria de pics que Microchip distribueix avui en dia incorporen ICSP (In Circuit Serial Programming, programació sèrie incorporada) o LVP (Low Voltage Programming, programació a baix voltatge), el que permet programar el PIC directament al circuit destinació. Per a la ICSP s'usen els pins RB6 i RB7 (En alguns models es poden fer servir altres pins com el GP0 i GP1 o el ra0 i RA1) com rellotge i dades i el MCLR per activar el mode programació aplicant un voltatge de 13 volts. Hi ha molts programadors de pics, des dels més simples que deixen al programari els detalls de comunicacions, als més complexos, que poden verificar el dispositiu a diverses tensions d'alimentació i implementen en maquinari gairebé totes les funcionalitats. Molts d'aquests programadors complexos inclouen ells mateixos PICS preprogramats com interfície per enviar les ordres al PIC que es vol programar. Un dels programadors més simples és el TE20, que utilitza la línia TX del port RS-232 com alimentació i les línies DTR i CTS per enviar o rebre dades quan el microcontrolador està en mode programació. El programari de programació pot ser el ICprog, molt comú entre la gent que utilitza aquest tipus de microcontroladors.

### PICkit 2 Estructura de codi obert i els clons

PICkit 2 ha estat un interessant programador PIC de Microchip. Es pot programar tots els PICs i depurar la majoria de les fotos (a partir de maig de 2009, només la família PIC32 no és compatible amb la depuració MPLAB). Des de les primeres versions, tot el codi font del programari (firmware, aplicació per a PC) i el maquinari esquemàtica estan obertes al públic. Això fa que sigui relativament fàcil per a un usuari final modificar el programador per al seu ús amb un no-sistema operatiu Windows, com Linux o Mac OS. De moment, sinó que també crea un munt d'interès de bricolatge i els clons. Aquesta estructura de codi obert ofereix moltes característiques per a la comunitat PICkit 2 de programador-a-Go, l'eina de UART i l'eina de la lògica, que han estat aportats per PICkit 2 usuaris. Els usuaris també han afegit funcions, a la PICkit 2 com 4 MB programador-per portar la capacitat, diners USB / circuits d'impuls, connectors RJ12 tipus i altres.

#### Programadors

* PICStart Plus (port sèrie i USB)
* Promat II (sèrie)
* MPLAB PM3 (port sèrie i USB)
* ICD2 (port sèrie i USB)
* Pickit 1 (USB)
* IC-Prog 1.06B
* PICAT 1.25 (port USB2.0 per PICS i Atmel)
* WinPic 800 (port paral·lel, sèrie i USB)
* Pickit 2 (USB)
* Pickit 3 (USB)
* Terusb1.0
* Eclipsi (PICS i AVRs. USB.)

#### Depuradores integrats

* ICD (Sèrie)
* ICD2 (USB)

#### Emuladors

* Proteus - ISIS
* ICE2000 (port paral·lel, convertidor a USB disponible)
* ICE4000 (USB)
* PIC EMU
* PIC CDlite

## Variacions del PIC
### PICs moderns

Els vells PICs amb memòria PROM o EPROM es van anar canviant gradualment per xips amb memòria Flash. Tanmateix, el joc d'instruccions original de 12 bits del PIC1650 i dels seus descendents directes ha estat suplantat per jocs d'instruccions de 14 i 16 bits. Microchip Technology encara ven versions PROM i EPROM de la majoria dels PICs per a suportar aplicacions antigues.
Es poden considerar tres grans gammes de MCUs PIC en l'actualitat: Els bàsics (Linebase), els de medi rang (Mid Range) i els d'alt acompliment (high performance). Els PIC18 són considerants d'alt acompliment i tenen entre els seus membres a PICs amb mòduls de comunicació i protocols avançats (USB, Ethernet, Zigbee entre d'altres).

### Clons del PIC

A poc a poc van sorgir noves companyies que oferien versions del PIC més barates o millorades. La majoria solien desaparèixer ràpidament. Una d'elles que va perdurar és Ubicom (l'antiga Scenix) que ven clons del PIC que funcionen molt més ràpid que l'original. OpenCores té un nucli del PIC16F84 escrit en Verilog.

### PICs wireless

El microcontrolador rfPIC integra totes les prestacions del PICmicro de Microchip amb la capacitat de comunicació wireless UHF per a aplicacions RF de baixa potència. Aquests dispositius ofereixen un disseny molt comprimit per ajustar-se als cada vegada més demandats requeriments de miniaturització en aparells electrònics. Així i tot, no semblen tenir molta sortida en el mercat.

### PICs per processament de senyal (dsPICs)

Els dsPICs són el penúltim llançament de Microchip, començats a produir a gran escala a finals del 2004. Són els primers PICs amb bus de dades inherent de 16 bits. Incorporen totes les possibilitats dels anteriors PICs i afegeixen diverses operacions de processament de senyals digitals implementades en maquinari i diverses operacions aritmètiques com multiplicacions de 16x16 bits, barrel shifting i bit reversion.

### PICs de 32 bits (PIC32)

Microchip Technology va llançar el novembre del 2007 els nous microcontroladors de 32 bits amb una velocitat de processament de 1.5 DMIPS/MHz amb capacitat HOST USB. Aquests MCUs permeten un processament d'informació increïble amb un nucli de processador de tipus M4K.

## Característiques

Els PICs actuals venen amb una àmplia gamma de millores hardware incorporades:
* Nucli de CPU de 8/16 bits amb Arquitectura Harvard modificada
* Memòria Flash y ROM disponible des de 256 bytes a 256 kilobytes
* Ports de E/S (típicament 0 a 5,5 volts)
* Temporitzadors de 8/16 bits
* Tecnologia Nanowatt per a models de control d'energia
* Perifèrics sèrie síncrons y asíncrons: USART, AUSART, EUSART
* Conversos analògic/digital de 8-10-12 bits
* Comparadors de tensió
* Mòduls de captura y comparació PWM
* Controladors LCD
* Perifèric MSSP per a comunicacions I²C, SPI, y I²S
* Memòria EEPROM interna amb duració de fins a un milió de cicles de lectura/escriptura
* Perifèrics de control de motors
* Suports d'interfaç USB
* Suports de controlador Ethernet
* Suports de controlador CAN
* Suports de controlador LIN
* Suports de controlador Irda

## PICs a Internet

Es pot trobar molta informació i documentació sobre PICs a Internet principalment per dos motius: el primer, perquè han estat molt usats per trencar els sistemes de seguretat de diversos productes de consum majoritari, el que atreu l'atenció dels crackers, i segon, perquè el PIC16C84 va ser un dels primers microcontroladors fàcilment reprogramables per aficionats. Hi ha molts fòrums i llistes de correu dedicats al PIC en els quals un usuari pot proposar els seus dubtes i rebre respostes.

## Vegeu també

* RISC
* Bank switching

## Referències

* ↑ http://ww1.microchip.com/downloads/en/DeviceDoc/39630C.pdf
* ↑ http://www.datasheetarchive.com/dl/Databooks-1/Book241-407.pdf Arxivat 2012-03-23 a Wayback Machine.
* ↑ "PICmicro Family Tree", PIC16F Seminar Presentation http://www.microchip.com.tw/PDF/2004_spring/PIC16F%20seminar%20presentation.pdf Arxivat 2012-03-02 a Wayback Machine.
* ↑ "MOS DATA 1976", General Instrument 1976 Databook
* ↑ "1977 Data Catalog", Micro Electronics from General Instrument Corporation http://www.rhoent.com/pic16xx.pdf Arxivat 2011-08-15 a Wayback Machine.

## Enllaços externs

* Recopilació d'eines de desenvolupament per PICS .
* http://microspics.blogspot.com
* http://www.eclip-se.es.tl/