Está en la página 1de 6

Pic.

Tipos de Pic y su Historia



[Escriba aqu una descripcin breve del documento. Normalmente, una
descripcin breve es un resumen corto del contenido del documento. Escriba aqu
una descripcin breve del documento. Normalmente, una descripcin breve es un
resumen corto del contenido del documento.]

2014
Carbajal Tepole Ricardo Arturo

04/03/2014

General Instrument. PIC1650.
Microcontrolador PIC

Los PIC son una familia de microcontroladores tipo RISC fabricados por Microchip Technology Inc.
y derivados del PIC1650, originalmente desarrollado por la divisin de microelectrnica de General
Instrument.
El nombre actual no es un acrnimo. En realidad, el nombre completo es PICmicro, aunque
generalmente se utiliza como Peripheral Interface Controller (controlador de interfaz perifrico).
El PIC original se dise para ser usado
con la nueva CPU de 16 bits CP16000.
Siendo en general una buena CPU, sta
tena malas prestaciones de entrada y
salida, y el PIC de 8 bits se desarroll en
1975 para mejorar el rendimiento del
sistema quitando peso de E/S a la CPU.
El PIC utilizaba microcdigo simple
almacenado en ROM para realizar estas tareas; y aunque el trmino no se usaba por aquel
entonces, se trata de un diseo RISC que ejecuta una instruccin cada 4 ciclos del oscilador.


En 1985 la divisin de microelectrnica de General Instrument se separa como compaa
independiente que es incorporada como filial (el 14 de diciembre de 1987 cambia el nombre a
Microchip Technology y en 1989 es adquirida por un grupo de inversores) y el nuevo propietario
cancel casi todos los desarrollos, que para esas fechas la mayora estaban obsoletos. El PIC, sin
embargo, se mejor con EPROM para conseguir un controlador de canal programable. Hoy en da
multitud de PICs vienen con varios perifricos incluidos (mdulos de comunicacin serie, UARTs,
ncleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000 palabras
(una palabra corresponde a una instruccin en lenguaje ensamblador, y puede ser de 12, 14, 16
32 bits, dependiendo de la familia especfica de PICmicro).

Juego de instrucciones y entorno de programacin
El PIC usa un juego de instrucciones tipo RISC, cuyo nmero puede variar desde 35 para PICs de
gama baja a 70 para los de gama alta. Las instrucciones se clasifican entre las que realizan
operaciones entre el acumulador y una constante, entre el acumulador y una posicin de memoria,
instrucciones de condicionamiento y de salto/retorno, implementacin de interrupciones y una para
pasar a modo de bajo consumo llamada sleep.
Microchip proporciona un entorno de desarrollo freeware llamado MPLAB que incluye
un simulador software y un ensamblador. Otras empresas desarrollan compiladores C y BASIC.
Microchip tambin vende compiladores para los PICs de gama alta ("C18" para la serie F18 y
"C30" para los dsPICs) y se puede descargar una edicin para estudiantes del C18 que inhabilita
algunas opciones despus de un tiempo de evaluacin.
Para el lenguaje de programacin Pascal existe un compilador de cdigo abierto, JAL, lo mismo
que PicForth para el lenguaje Forth. GPUTILS es una coleccin de herramientas distribuidas bajo
licencia GPL que incluye ensamblador y enlazador, y funciona en Linux, MacOS y Microsoft
Windows. GPSIM es otra herramienta libre que permite simular diversos dispositivos hardware
conectados al PIC.
Uno de los ms modernos y completos compiladores para lenguaje C es [mikroC], que es un
ambiente de desarrollo con editor de texto, bibliotecas con mltiples funciones para todos los
mdulos y herramientas incorporadas para facilitar enormemente el proceso de programacin.

Arquitectura central
La arquitectura del PIC es sumamente minimalista. Est caracterizada por las siguientes
prestaciones:
rea de cdigo y de datos separadas (Arquitectura Harvard).
Un reducido nmero de instrucciones de longitud fija.
Implementa segmentacin de tal modo que la mayora de instrucciones duran 1 tiempo de
instruccin (o 4 tiempos de reloj). Pueden haber instrucciones de dos tiempos de instruccin
(saltos, llamadas y retornos de subrutinas y otras) o inclusive con ms tiempo de instruccin en
PICs de gama alta. Esto implica que el rendimiento real de instrucciones por segundo del
procesador es de al menos 1/4 de la frecuencia del oscilador.
Un solo acumulador (W), cuyo uso (como operador de origen) es implcito (no est
especificado en la instruccin).
Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de
operaciones matemticas y otras funciones.
1

Una pila de hardware para almacenar instrucciones de regreso de funciones.
Una relativamente pequea cantidad de espacio de datos direccionable (tpicamente, 256
bytes), extensible a travs de manipulacin de bancos de memoria.
El espacio de datos est relacionado con el CPU, puertos, y los registros de los perifricos.
El contador de programa est tambin relacionado dentro del espacio de datos, y es posible
escribir en l (permitiendo saltos indirectos).
A diferencia de la mayora de otros CPU, no hay distincin entre los espacios de memoria y los
espacios de registros, ya que la RAM cumple ambas funciones, y esta es normalmente referida
como "archivo de registros" o simplemente, registros.
Espacio de datos (RAM)
Los microcontroladores PIC tienen una serie de registros que funcionan como una RAM de
propsito general. Los registros de propsito especfico para los recursos de hardware disponibles
dentro del propio chip tambin estn direccionados en la RAM. La direccionabilidad de la memoria
vara dependiendo de la lnea de dispositivos, y todos los dispositivos PIC tienen algn tipo de
mecanismo de manipulacin de bancos de memoria que pueden ser usados para acceder memoria
externa o adicional. Las series ms recientes de dispositivos disponen de funciones que pueden
cubrir todo el espacio direccionable, independientemente del banco de memoria seleccionado. En
los dispositivos anteriores, esto deba lograrse mediante el uso del acumulador.
Para implementar direccionamiento indirecto, se usa un registro de "seleccin de registro de
archivo" (FSR) y uno de "registro indirecto" (INDF): Un nmero de registro es escrito en el FSR,
haciendo que las lecturas o escrituras al INDF sern realmente hacia o desde el registro apuntado
por el FSR. Los dispositivos ms recientes extienden este concepto con post y
preincrementos/decrementos para mayor eficiencia al acceder secuencialmente a la informacin
almacenada. Esto permite que se pueda tratar al FSR como un puntero de pila.
La memoria de datos externa no es directamente direccionable excepto en algunos
microcontroladores PIC 18 de gran cantidad de pines.
Tamao de palabra
El tamao de palabra de los microcontroladores PIC es fuente de muchas confusiones. Todos los
PICs (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se deberan llamar
microcontroladores de 8 bits. Pero a diferencia de la mayora de las CPU, el PIC usa arquitectura
Harvard, por lo que el tamao de las instrucciones puede ser distinto del de la palabra de datos. De
hecho, las diferentes familias de PICs usan tamaos de instruccin distintos, lo que hace difcil
comparar el tamao del cdigo del PIC con el de otros microcontroladores. Por ejemplo, un
microcontrolador tiene 6144 bytes de memoria de programa: para un PIC de 12 bits esto significa
4096 palabras y para uno de 16 bits, 3072 palabras.

Ejemplo Prctico.
Comunicacin serial RS-232
Este ejemplo muestra cmo utilizar el mdulo EUSART del microcontrolador. La conexin a una
PC se habilita por medio del estndar de comunicacin RS-232. El programa funciona de la
siguiente manera. Cada byte recibido por medio de la comunicacin serial se visualiza al utilizar los
LEDs conectados al puerto PORTB y despus se devuelve automticamente al transmisor. Si
ocurre un error en recepcin, se lo indicar al encender el diodo LED. La manera ms fcil es
comprobar el funcionamiento del dispositivo en la prctica al utilizar un programa estndar de
Windows denominado Hyper Terminal.


/*Cabecera******************************************************/

unsigned short i;

void main() {
UART1_Init(19200); // Inicializar el mdulo USART
// (8 bits, tasa de baudios 19200, no hay bit
// de paridad...)

while (1) {
if (UART1_Data_Ready()) { // si se ha recibido un dato
i = UART1_Read(); // leerlo
UART1_Write(i); // enviarlo atrs
}
}
}
Para que este ejemplo funcione apropiadamente, es necesario marcar la librera UART en la ventana Library
Manager antes de compilar el programa:
UART

También podría gustarte