Este documento describe los microcontroladores PIC de Microchip y cómo usarlos en proyectos. Explica que son populares debido a su bajo costo y tamaño pequeño, y que usarlos en lugar de circuitos lógicos discretos simplifica los diseños. Recomienda leer las hojas de datos técnicas, conseguir herramientas de programación como MPLAB, y comprar o construir un grabador para cargar programas en los microcontroladores.
0 calificaciones0% encontró este documento útil (0 votos)
340 vistas20 páginas
Este documento describe los microcontroladores PIC de Microchip y cómo usarlos en proyectos. Explica que son populares debido a su bajo costo y tamaño pequeño, y que usarlos en lugar de circuitos lógicos discretos simplifica los diseños. Recomienda leer las hojas de datos técnicas, conseguir herramientas de programación como MPLAB, y comprar o construir un grabador para cargar programas en los microcontroladores.
Este documento describe los microcontroladores PIC de Microchip y cómo usarlos en proyectos. Explica que son populares debido a su bajo costo y tamaño pequeño, y que usarlos en lugar de circuitos lógicos discretos simplifica los diseños. Recomienda leer las hojas de datos técnicas, conseguir herramientas de programación como MPLAB, y comprar o construir un grabador para cargar programas en los microcontroladores.
Este documento describe los microcontroladores PIC de Microchip y cómo usarlos en proyectos. Explica que son populares debido a su bajo costo y tamaño pequeño, y que usarlos en lugar de circuitos lógicos discretos simplifica los diseños. Recomienda leer las hojas de datos técnicas, conseguir herramientas de programación como MPLAB, y comprar o construir un grabador para cargar programas en los microcontroladores.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 20
Proyectos con microcontroladores PIC.
Estos microcontroladores de la empresa Microchip, son los ms populares actualmente,
puede ser por tener versiones econmicas de pequeo tamao, porque tiene set de instrucciones reducidas, por la disponibilidad de herramientas de programacin y por la facilidad para grabarlo.
Si estamos diseando un circuito compuesto por varios circuitos integrados de compuertas lgicas, temporizadores, etc, debemos considerar que es ms conveniente utilizar un microcontrolador. La cantidad de componentes externos ser menor, el circuito impreso ms sencillo, y el circuito ms fcil de actualizar o modificar, as que vale la pena aprender a usarlos.
Dentro de las cosas que debemos hacer para aprender sobre estos microcontroladores:
1. Leer las hojas tcnicas de un microcontrolador pequeo y econmico, para empezar. Puede ser el PIC16F84A o el ms reciente PIC16F716. 2. Conseguir las herramientas de compilacin y simulacin. MPLAB funciona bien y est disponible gratis en la pgina de Microchip. 3. Crear programas para ejercicios sencillos y comprobarlos con el simulador. 4. Comprar o construir un grabador. Los grabadores Pickit2 y Pickit 3 son oficiales de Microchip y son econmicos. Se conectan al PC a travs de puerto USB, a travs del cual tambin se alimentan.
Si pretendemos construirnos nuestro grabador conviene elegir alguno del listado que funciona con icprog, este programa funciona bien y tambin es gratis. Adems debemos asegurarnos de contar con algn equipo antiguo con puerto paralelo o serial segn requiera el grabador.
Timer 0 del 16F84.
Una forma para guiarse en la configuracin del Timer 0 y otras funciones de los microcontroladores es utilizar los diagramas de bloques equivalentes de las hojas tcnicas. As en la figura, de izquierda a derecha, se puede ver un cuadro que corresponde al pin RA4/TOCKI que es al que se le aplican los pulsos en el caso que se quiera un clock externo, luego vemos una compuerta ORex en la que una de las entradas es TOSE(Timer 0 Source edge), que permite elegir el canto del pulso con el que se incrementar el registro del timer, luego vemos un mutiplexor de 2 entradas, si T0CS (Timer 0 clock source) est en 1 la rama que viene del pin RA4 alcanza la salida, y si T0CS est en 0 el clock del uC/4 alcanza la salida. El prximo multiplexor depende del estado del bit PSA(Pre escalar assignment) y si est en 0 recibe los pulsos del clock que elegimos con TOCS y lo divide segn el pre escalar que elijamos con PS2, PS1 y PS0. Y si PSA lo configuramos con 1 recibimos los pulsos desde TOCS directamente. Luego de pasar por un bloque de sincronizacin los pulsos alcanzan el registro TMR0 incrementndolo. Cuando el registro TMR0 rebose (llegue al valor mximo y vuelva a cero) se activar el flag de interrupcin del Timer 0 T0IF, el cual producir una interrupcin si es que la interrupcin del Timer 0 est habilitada en el registro INTCON. Para producir un tiempo determinado debemos primero considerar que el uC incrementa el registro del Timer con una frecuencia igual a la de su oscilador dividida por 4, o lo que es lo mismo con un periodo de 4 veces el de su clock, sin considerar el pre escalar. (En el caso de elegir usar el clock del uC con T0CS). Por ejemplo si el oscilador del uC es de 4MHz, entonces incrementar el registro del timer TMR0 con una frecuencia de 1MHz o cada 1uS. Por lo tanto el tiempo mximo que se puede obtener sin pre escalar es de 255uS. Porque 255 es el numero mximo de TMR0. Si queremos un tiempo, por ejemplo de 20uS entonces debemos restar 20 al valor mximo de TMR0, es decir debemos inicializar TMR0 en 235. El clock externo es til en el caso de que necesitemos usar como contador de eventos externos el TMR0, por ejemplo cuando se reciban 10 pulsos de un sensor, o tambin si queremos usar un clock ms lento que el del uC para obtener retardos ms largos.
Implementar ICSP de Microchip en nuestros proyectos. Los protocolos de grabacin serial de los microcontroladores actuales, como el ICSP (In Circuit Serial Programming) de Microchip fueron concebidos para programar los microcontroladores en la aplicacin, es decir, sin retirar el microcontrolador de la tarjeta, con ventajas evidentes sobre todo para produccin masiva. Es por esto que los grabadores como Pickit2 de Microchip no traen un zcalo ZIF (Zero Insertion Force). Cuando desarrollamos prototipos necesitaremos probar el programa del microcontrolador en protoboard. En este caso nos conviene construir un cable con un conector Slim hembra de 6 pines en un extremo y en el otro puntas para el protoboard. Podemos mantener el cable conectado al protoboard mientras no lo necesitemos para otro proyecto.
Cable conexin ICSP para conectar grabador con protoboard.
Conexin grabador a protoboard.
De todas maneras nos va a resultar ms cmodo construir este cable una sla vez, que retirar muchas veces el microcontrolador del protoboard para grabarlo cada vez que se necesite corregir el programa. Adems: es usual que queden puentes o componentes atravesados por encima del microcontrolador. Por ejemplo el tpico condensador de 0,1uF en los pines de alimentacin. el cable nos permite en el futuro aprovechar la funcin de depuracin en circuito (In Circuit Debugger) que est disponible en los microcontroladores de rango alto y en los ms recientes de rango medio. con el cable podemos prescindir de una fuente de alimentacin externa y usar los 5V del USB del computador a travs del grabador para alimentar el circuito. La aplicacin de Pickit2 tiene una casilla de verificacin para activar o desactivar la alimentacin. El conector del grabador tiene 6 pines. Se utilizan 5 para grabar microcontroladores y se dej un sexto para posibles funciones auxiliares: 1. VPP Voltaje de programacin. 2. VDD Positivo de fuente de alimentacin 3. VSS Negativo de fuente de alimentacin 4. PGD Dato de programacin. 5. PGC Clock de programacin. 6. AUX Auxiliar. Nota. Pin 1 marcado con flecha blanca en Pickit2 Para grabar con xito nuestro microcontrolador en circuito debemos evitar que los componentes de nuestra aplicacin, conectados a los pines que intervienen en la grabacin interfieran con las seales de grabacin. Para el pin VPP que se conecta al MCLR del microcontrolador basta con un circuito Power on reset y una resistencia de 470 para aislarse de ste. NO SE PUEDE USAR MCLR DIRECTAMENTE A +V Las seales PGD y PGC se conectan a RB7 y RB6 respectivamente y para aislarse de la aplicacin se puede poner resistencias en serie si la aplicacin lo permite. En ltimo caso si no queremos complicarnos y nos sobran pines de IO dejamos RB6 y RB7 exclusivos para ICSP.
Implementar ICSP en protoboard.
Uso de interrupciones externas de microcontroladores.
Muchos de los pulsos que deseamos leer con el microcontrolador aparecen de forma breve e inesperada. Si bien los microcontroladores actuales pueden ejecutar instrucciones en fracciones de microsegundo, evaluar el estado de una entrada permanentemente a travs de un loop no garantiza la lectura del evento. (ej teclados, seales Ready de un ADC, etc.) Para resolver este problema, los microcontroladores disponen de un mecanismo llamado interrupcin, que en este caso seran externas, pues las hay tambin internas (timers, mdulos de comunicacin, etc.). Los microcontroladores PIC de Microchip constan con una interrupcin externa asociada al pin RB0 y una interrupcin on change (al cambio) que se activa al cambiar el estado de los pines RB7, RB6, RB5 y RB4. Al producirse un cambio en un pin de entrada asociado a una interrupcin, hardware interno del microcontrolador activa un flag. Si la interrupcin est habilitada el programa altera su flujo normal y salta a una direccin asignada, llamada Vector de interrupcin y a partir de esa direccin est escrito el cdigo a ejecutar al producirse la interrupcin: Rutina de servicio de interrupcin o RSI o ISR. Logrando de esta manera atender inmediatamente un evento. Para producir una interrupcin, el pin debe estar configurado como entrada y la interrupcin debe estar habilitada en los registros correspondientes. Para probar el funcionamiento de la interrupcin en el simulador de MPLAB de Microchip podemos crear un Workbook en Debugger/ Stimulus/ New Workbook. Se abre una ventana que nos permite aplicar distintos niveles a los pines de entrada. Hacer click en un campo en blanco de la columna Pin/Sfr y aparece una flecha para desplegar un men, aqu elegimos el pin que nos interesa cambiar y en la columna Action elegimos la accin que se le aplicara al pin. Puede ser Toggle que conmuta el estado del pin. Para activar el estmulo elegido debemos hacer click en la casilla Fire de la fila correspondiente. Si la interrupcin esta bien configurada, el flujo del programa debe saltar al vector de interrupcin al producirse un canto de subida o de bajada, segn cmo se configur la interrupcin. Segn lo que se necesite hacer con el programa, a veces resulta ms conveniente no habilitar la interrupcin y evaluar con un loop el estado del flag correspondiente a la interrupcin. A diferencia del mtodo que explicaba al principio, de esta forma s se asegura recibir el evento, pues aunque no sea inmediatamente, aunque el evento desaparezca, el flag de interrupcin queda activado.
Empezando con lenguaje C para microcontrolador PIC. Primero aclaremos que a diferencia de terceras empresas, Microchip no tiene compilador C para los microcontroladores pequeos, slo para los de gama alta como la familia PIC18 y superiores, los cuales han sido diseados para trabajar con lenguaje C. El compilador C18 se baja de forma gratuita de la pgina de Microchip. Aunque el lenguaje Assembler nos permite resolver cualquier problema y debemos primero pensar en resolverlo con Assembler, pues el microcontrolador puede ser ms econmico, hay requerimientos que nos obligan a programar en un lenguaje de nivel ms alto, como lenguaje C: Evitar complejos algoritmos de aritmtica de Assembler. Simplificacin del cdigo y disminucin del tiempo de desarrollo. El costo de un uC PIC18F4550 de 40 pines est alrededor de $6.000(Chile). Herramientas: Debemos tener instalado en el computador MPLAB y el compilador C18. Ambos se descargan de forma gratuita de la pgina de Microchip. Primero debemos instalar MPLAB y despus C18, el cual se instala en el raz y configurar a MPLAB para integrar C18 en MPLAB. Haremos un ejemplo muy simple con las siguientes herramientas de desarrollo: MPLAB versin 8.56 C18 versin 3.36 Aplicacin Microchip HID bootloader v2.6a Tarjeta de evaluacin PICDEM FS USB con uC 18F4550. Cable USB A a B. El de impresoras sirve.
Para quienes deseen conseguir una de mis tarjetas compatibles PICDEM FS USB:
Ver seccin "Ventas y servicios"
CARACTERSTICAS DEL MICROCONTROLADOR PIC18F4550: 40 pines 35 pines I/O. puerto USB 2.0 4 timers Salida PWM ADC 10 bit y 13 canales Arquitectura optimizada para compilador C. 32K memoria flash, 2048 SRAM, 256 EEPROM
CARACTERSTICAS TARJETA PICDEM FS USB: Conector USB tipo B Pulsador y LEDs incorporados en pines I/O. Microcontrolador PIC18F4550. Conector e interface serial RS232. Incluye bootloader HID. (Es reconocido por PC sin necesidad de driver). Conector ICSP Incluye potencimetro en entrada ADC.
Debemos revisar y tener una copia de estos archivos a mano: 39632e.pdf datasheets de PIC18F4550 c18_user_guide_51288j.pdf gua de usuario de C18 p18f4550.inc definiciones de registros Ubicados en: C:Archivos de programaMicrochipMPASM Suite mplab_c18_getting_started_51295f.pdf mplab-c18-libraries_51297f.pdf hlppic18configset.chm Ubicados en C:MCC18doc Tambin es recomendable tener algn libro de lenguaje C ANSI aunque sea para PC, para consultar la sintaxis, estructuras de bucles, etc.
Descargar archivos (31KB)
CREAR PROYECTO EN MPLAB:
1. Crear una carpeta con el nombre que le queramos dar a nuestro proyecto. 2. Copiar en la carpeta archivo fuente main.c disponible en link abajo. 3. Copiar en la carpeta archivo linker. Usar: rm18f4550 - hid bootload.lkr para usar con Bootloader HID. 4. En men Project click en Project Wizard y en la siguiente ventana click en botn Siguiente. 5. En esta ventana elegir PIC18F4550 y hacer click en siguiente.
6. En campo Active Toolsuite elegir Microchip C18 Toolsuite y hacer click en siguiente.
7. Ahora click en Browse y abrir la carpeta que creamos anteriormente.
8. Elegir nombre de proyecto y click en Guardar.
9. En esta ventana, Step Three click en Siguiente. 10. Ahora en la ventana Step Four localizar la carpeta de nuestro proyecto y seleccionar cada uno de los 2 archivos y agregarlos al proyecto haciendo click en Add. Luego click en Siguiente.
11. En la ventana Sumary click en Finalizar para crear el proyecto.
12. Nos aparece un esquema de nuestro proyecto en estructura de rbol. Confirmar que aparezcan nuestros 2 archivos: main.c en Source files y rm18f4550 - hid bootload.lkr en Linker script.
Si revisamos con el explorador de archivos la carpeta de nuestro proyecto, veremos que ahora se agregaron 3 archivos ms. Estos archivos mantienen la informacin sobre el proyecto. El que tiene extensin mcw guarda la informacin de las ventanas abiertas y su distribucin sobre el espacio de trabajo. Posteriormente podemos abrir nuestro proyecto con este archivo o con el de extensin mcp. 13. Ahora ya estamos en condiciones de compilar y ejecutar nuestro proyecto con Project Build All. Si todo est bin deberamos obtener Build Succeeded en la ventana Ouput. Y si revisamos en este momento, con el explorador de archivos, la carpeta de nuestro proyecto veremos que se agregaron 3 archivos ms. El que nos interesa por ahora es el que tiene extensin hex pues es el que se cargar en el microcontrolador. Para ver en detalle la ejecucin del programa debemos aprender a usar el simulador de MPLAB. Ver seccin: Uso de Simulador de MPLAB. Es un ejemplo muy sencillo de la gua Getting started al cual se le cambi el puerto de salida al puerto D, pues ste incorpora 4 LEDs en la tarjeta PICDEM FS USB. El programa configura el puerto D como salida, lo resetea, y luego lo deja permanentemente en estado alto. Pueden modificarlo ustedes posteriormente para dejar los LEDs permanentemente apagados.
Cargar programa al microcontrolador. Una de las caractersticas de la tarjeta de evaluacin es que ya viene con un bootloader grabado, esto nos permite cargar el programa al microcontrolador sin necesidad de un grabador, pues el bootloader se encarga de recibir el archivo hex a travs del puerto USB y hacer que el microcontrolador se grabe a si mismo con el programa de nuestra aplicacin a continuacin del espacio que ocupa el programa del Bootloader. E bootloader usado es el denominado HID, que es el que usa Microchip en sus ltimas bibliotecas de aplicacin MAL (Microchip Aplication Library). Este bootloader es declarado al sistema como un dispositivo de interfaz humana (HID), los cuales Windows reconoce directamente sin necesidad de driver. 1. Ejecutar aplicacin HID bootloader y nos aparecer esta ventana:
La tarjeta de evaluacin PICDEM FS USB normalmente ejecuta el programa que se le ha cargado y si mantenemos presionado uno de sus pulsadores (S2) y reseteamos entra al modo bootloader. Al entrar a este modo ser reconocida por el sistema y por la aplicacin Bootloader, recuerden que no necesita driver, y se habilitar el botn Open Hex File de la aplicacin en el PC. 2. Haciendo click en botn Open Hex File podemos cargar el archivo con extensin hex que generamos anteriormente. 3. Click en Program/Verify para cargar el microcontrolador con nuestro programa. Confirmar que la operacin se realiz con xito en la parte informativa de la ventana principal. 4. Presionar pulsador Reset de la tarjeta lo que hace que salga del modo bootloader y ejecute nuestro programa. Deben encenderse los 4 LEDs que la tarjeta tiene conectados en el Puerto D. A continuacin analizamos el programa para que lo entienda y puedan usarlo como plantilla y modificarlo de acuerdo a sus necesidades.
Anlisis del programa. 1. Lo que est encerrado entre /* y */ son comentarios y aparecen en MPLAB de color gris claro: /*Ejemplo 2 captulo "Getting started" "Light LED" modificado para puerto D que tiene LEDs en tarjeta USB_BOARD_4550 XTAL = 20MHz versin: 10 para bootloader HID Modificado: 13 Agosto 2012 */
2. // se usa para agregar comentarios desde que aparece hasta el final de la lnea: #pragma config PLLDIV = 5 // 20 MHz crystal/5 = 4MHZ para PLL 96MHz A veces se usan tambin para deshabilitar una lnea del programa sin borrarla: //#pragma config CP2 = OFF
3. Los comandos #pragma config le indican al programa grabador el valor de los distintos bytes de fusibles de configuracin que tiene el microcontrolador: #pragma config PLLDIV = 5 // 20 MHz crystal/5 = 4MHZ para PLL 96MHz
4. Ya que el programa bootloader ocupa permanentemente un espacio al inicio de la memoria de programa donde se encuentran los vectores de reset e interrupcin, debemos re-direccionar estos vectores: // (PROGRAMMABLE_WITH_USB_HID_BOOTLOADER) #define REMAPPED_RESET_VECTOR_ADDRESS 0x1000 extern void _startup (void); // See c018i.c in your C18 compiler dir #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS void _reset (void) { _asm goto _startup _endasm }
5. Con void main(void) comienza nuestro programa principal. Est encerrado entre parntesis de llaves {}
6. TRISD = 0; configura el puerto D como salida.
7. El valor que asignemos a PORTD se ver reflejado en la salida: PORTD = 0x0f; Con esto los 4 bits menos significativos se activan, por lo tanto los LEDs se encienden.
Uso de Simulador de MPLAB. 1. Si no vemos el cdigo fuente de nuestro programa en este momento y slo vemos el esquema de rbol. Hacer click en el archivo con extensin .c para abrirlo. 2. Si seleccionamos Debugger/Select tool podemos ver varias herramientas de depuracin. MPLAB SIM no requiere hardware adicional y nos permite simular en pantalla. Elegir esta opcin. 3. Se agregar una barra con iconos que nos permiten ejecutar el programa paso a paso, de una sla vez, saltarse funciones, salir de stas, etc.
Nota: F5, F6, F7, F8, F9 corresponden a los conos de la barra de depuracin.
4. Teniendo abierto nuestro proyecto presionar F5 (Halt) y luego F6 (Reset) para asegurarnos que no haya una ejecucin en progreso. Nota: Es necesario hacer click en la parte blanca de la ventana que contiene el cdigo para enfocarla y luego ejecutar los comandos de depuracin. 5. Presionar F7 para ejecutar paso a paso. Pasaremos por varias sentencias de funciones que implementan C18 y que aparecen en una ventana separada. Nos concentraremos en llegar a la funcin main de nuestro programa. 6. En la primera lnea despus de la llave de apertura de main podemos hacer doble click para poner un Breakpoint, lo que nos permitir ejecutar hasta este punto de una sla vez la prxima vez que corramos el programa desde el principio con F9. 7. Presionar F5 y F6 para resetear, luego F9 y llegaremos al Breakpoint. Luego podemos seguir paso a paso. 8. Para ver cmo cambian los registros del microcontrolador ejecutar View/Watch:
Elegir el registro que queremos observar en la caja combo izquierda, por ejemplo para nuestro programa Prog2, elegir PORTD y luego click en el botn Add SFR. Ejecutemos nuevamente paso a paso observando cmo cambia el estado de PORTD. 9. Cuando cerremos el proyecto debemos guardar tambin el Work space.
Grabacin de E2PROM 93LC46 con Pickit2.
Aunque las memorias E2PROM seriales no se comunican a travs de ICSP como los microcontroladores, de todas maneras la aplicacin de Pickit2 permite grabarlas. En el archivo pickit 2 readme.txt (ubicado en C: ARCHIVOS DE PROGRAMAMICROCHIPPICKIT 2 V2) se puede ver la conexin entre los pines del grabador y los de la memoria: PICkit 2 Pin 93LC Device Pin (DIP) (1) VPP 1 CS (2) Vdd 8 Vcc (3) GND 5 Vss (4) PGD 4 DO (5) PGC 2 CLK (6) AUX 3 DI 7 PE - enabled (Vdd) 6 'C' Device ORG Set to select word size Nota. No se conectaron pines 6 y 7 de E2PROM pues en Datasheet se ve que son "NC".
Conexin entre Pickit2 y E2PROM 93LC46.
Tambin aparecen las conexiones para grabar memorias E2PROM de otras familias como las: 11LC 24LC 25LC