Que es un microcontrolador?
Inicialmente podríamos decir que un microcontrolador es un circuito integrado que se puede programar para que haga lo que nosotros queremos, pero es eso y mucho mas, es una computadora, claro esta que del tamaño de un circuito integrado, pero hace las mismas funciones que esta.
Un microcontrolador permite entrada de información (entradas), tiene la capacidad de procesar esa información, y entrega los resultados del procesamiento(salida), siendo este el esquema básico de una computadora, solo que a una escala muy pequeña.
Que necesitamos para hacer funcionar un microcontrolador?
Un programa que le diga que es lo que tiene que hacer, esto es lo mismo que hacen los programas de computadora, le dicen a esta que hacer.
Y como hacemos estos programas?
Los microcontroladores son sistemas digitales, por lo tanto entienden unos y ceros, pues entonces sera cuestión de escribir el programa en secuencias de unos y ceros, lo que a nosotros los humanos nos resultaría una tarea muy complicada, entonces para ello se inventaron los lenguajes de programación, que son mas fáciles de entender por nosotros y nos facilitaran la tarea de escribir los programas, para el caso de los microcontroladores cada fabricante proporciona un lenguaje con el cual se pueden controlar estas maquinas llamado lenguaje Ensamblador( Assembler ). mas adelante veremos que también se pueden programar con otros lenguajes.
Fabricantes de microcontroladores hay muchos, Freescale(Motorola), Intel, Microchip, Atmel, entre otros. Yo me ocupare de los que fabrica la empresa Microchip, mas conocidos como PIC's. La razón para usarlos es lo fácil que es conseguirlos, la variedad y lo económicos que resultan, ya que hay muchas referencias de PIC's y las herramientas para trabajar con ellos son muy fáciles de conseguir.
Para empezar no dirigimos a la pagina de Microchip y descargamos el programa MPLAB IDE (http://www.microchip.com ), este programa es para escribir en ensamblador lo que queremos que haga el microcontrolador y después traducirlo al lenguaje que entiende la maquina, a este proceso se le denomina comúnmente “compilar el programa” , claro que este programa tiene muchas mas funciones, también nos permite simular el programa, que es muy útil para encontrar errores cuando no nos funciona como queremos.
Bueno la idea era explicar la forma de programar un microcontrolador de forma fácil y no extenderme tanto, pero resulta muy difícil por que este tema es muy extenso, así que voy a empezar y espero que practicando vamos aprendiendo.
Instalamos el MPLAB
En windows
vamos a : Inicio-Programas-Microchip-MPLAB IDE
En Linux
Lo instalamos con el Wine por que no tenemos una versión de este entorno gráfico para Linux, claro que si en modo consola. Existen otras formas de trabajar los PIC's en Linux como el Piklab, que es un entorno gráfico Open Source.
Esta es la vista al iniciar el MPLAD IDE, inicialmente vamos a hacer un programa sencillo, no crearemos un proyecto. Podemos cerrar las dos ventanas internas que aparecen.
Esta es la vista del PikLab para Linux
Vamos a File-New y nos abre una hoja de un editor de texto donde escribiremos nuestro primer programa. Aparece la ventana con el nombre Untitled, por que no hemos dado un nombre a nuestro programa.
Los archivos con el código de nuestro programa (código fuente) se deben guardar con la extensión .ASM, el programa que vamos a hacer como ejemplo hará que el micro prenda y apague un LED conectado en uno de sus pines ( el pin RB0 en este caso), este es como el “hola mundo” en la programación de microcontroladores, así que lo llamaremos onoff.asm.
En este punto debemos ya escoger que referencia de microcontrolador vamos a trabajar, ya que como habíamos dicho antes hay muchas referencias. El mas básico y mas usado de todos lo PIC para el aprendizaje es el PIC 16F84A, por lo que entonces el primer programa lo voy a hacer con este microcontrolador, pero después seguiré usando el PIC 16F88, ya que es un PIC mas potente que el anterior.
Empecemos copiando este código en el MPLAB
LIST P=16F84A
INCLUDE P16F84A.INC
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
ORG 00
GOTO CONFIGURACION
CONFIGURACION NOP
BANKSEL TRISA
CLRF TRISB
BANKSEL PORTB
CLRF PORTB
CICLO BSF PORTB,0
BCF PORTB,0
GOTO CICLO
END
Noten que se mantiene un orden respecto a las columnas (3 columnas), esto lo hacemos con el tabulador y es muy importante que se respete este orden. Después de haber copiado el programa, lo guardamos, en la opción File Name escribimos el nombre onoff.asm(no olviden la extensión .asm) y el la opción Files of Tipes seleccionamos la segunda opción “Assembly Source Files (*.asm.......) y le damos guardar(Save).
Notemos como al guardarlo cambian los colores del texto en el código.
Ya tenemos listo el código fuente. Recordemos que este esta escrito en el lenguaje de programación llamado Ensamblador o Assembler, y que la maquina no entiende esto, por eso lo debemos traducir para que la maquina lo entienda (compilar ) y para ello debemos seguir los siguientes pasos:
Seleccionar el microcontrolador en la opción Configure—Select Device nos aparece la siguiente ventana y seleccionamos nuestro PIC16F84A.
Compilar el programa con la opción Project—Quickbuild onoff.asm
y si todo sale bien no aparece esta ventana diciendo que la compilación fue un éxito, que tuvo 0 errores y BUILD SUCCEEDED
Ya tenemos nuestro programa listo para enviárselo al PIC, pero de eso nos ocuparemos mas adelante, por ahora nos interesa saber como se puede hacer la simulación en el MPLAB.
Vamos Debugguer—Select Tool—MPLAB SIM. Esto es para activar el simulador.
Para la simulación tenemos las siguientes opciones que aparecen en el menu Debugguer y nos van a ser de mucha utilidad
Processor Reset F6 Reset del procesador
Step Into F7 Simulación paso a paso
Steo Over F8 Simulación paso a paso realizando las subrrutinas en tiempo real( las llamadas con CALL)
Al seleccionar el MPLAB SIM y presionar F6 tenemos la siguiente vista, noten la FLECHA VERDE que aparece en la linea 7 despues de la sentencia “ORG 00” (llamado vector de reset), esto es por que alli es donde empieza el procesador despues de un reinicio(reset).
Si presionamos F7 vemos como el programa va avanzando siguiendo las ordenes que dimos al microcontrolador.
Como lo mensione al inicio este programa enciende y apaga un led conectado en el pin RB0 del micro, para observar esto en la simulacion hacemos lo siguiente:
vamos al menu View—Watch y obtenemos la siguiente vista
Vamos a organizar las dos ventanas para que se puedan ver al mismo tiempo y podamos observar como se comporta el microcontrolador en la simulación.
En la ventana Watch hacemos click derecho sobre la siguiente barra
y escojemos del menu que se nos muestran varias opciones, solo las 3 siguientes(por ahora)
Symbol Name
Decimal
Binary
y la barra nos quedara así
luego escogemos de la lista
que esta al lado del boton
la opción PORTB presionamos el botón y tendremos la siguiente vista
así ya tenemos todo listo para simular nuestro primer programa.
Básicamente las siguientes lineas de código son las que hacen prender y apagar el LED:
CICLO BSF PORTB,0
BCF PORTB,0
GOTO CICLO
Para entender la simulación debemos saber que los pines del microcontrolador están relacionados con algo que se llaman puertos de entrada/salida, nuestro micro tiene dos puertos el PORTA y el PORTB (así los bautizo el fabricante), cada uno de estos puertos esta dispuesto internamente en el micro como un Byte ( 8 bit's, se acuerdan de la electrónica digital, aquí aplica!!), por eso es que en la gráfica del Watch aparecen al frente del PORTB y debajo de la palabra Binary 8 ceros ( 00000000 ) que representan un Byte ( también se le llama REGISTRO), que a su vez representa 8 pines del micro asociados con el PORTB, osea que cada bit del registro (Byte) PORTB es un pin del circuito integrado ( del PIC), que trabalenguas, miremos la siguiente tabla:
PORTB
RB7 | RB6 | RB5 | RB4 | RB3 | RB2 | RB1 | RB0 |
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
Presionemos F7 hasta llegar(la flecha verde se mueve cada vez que presionamos F7) a la linea “GOTO BSF PORTB,0”, note que el RB0 es igual a 0 (cero)
presionemos F7 y vemos como cambia a 1 (uno).
Presionemos F7
presionamos F7 y vemos como se repite este ciclo una y otra vez, logrando con esto que el LED conectado al pin RB0 encienda y apague.
Presionamos F7 y vemos como la flecha verde se posiciona de nuevo al frente de ciclo.
Con esto doy por terminada esta guiá de iniciación a la programación de microcontroladores PIC, ya con esto lograremos escribir y simular nuestros programas, en una próxima guiá describiré los pasos para lograr hacer que funcione en un board con un micro de verdad( y no en simulaciones)
Usted puede compiar, distribuir y/o modificar este doucmento bajo los terminos de la GFDL (licencia de documentacion libre de GNU) versión 1.3 o superior publicada por la fundacion de sontware libre.
Copyright (C) Edwin Espinosa Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
saludos
ResponderEliminar