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