Un controlador es un dispositivo electrnico encargado de, valga la redundancia, controlar uno o
ms procesos. Por ejemplo, el controlador del aire acondicionado, recoger la informacin de los sensores de temperatura, la procesar y actuar en consecuencia. Al principio, los controladores estaban formados exclusivamente por componentes discretos. Ms tarde, se emplearon procesadores rodeados de memorias, circuitos de E!," sobre una placa de circuito impreso #P$%&. Actualmente, los controladores integran todos los dispositivos antes mencionados en un pe'ue(o c)ip. Esto es lo 'ue )oy conocemos con el nombre de microcontrolador. Diferencia entre microcontrolador y microprocesador Es muy )abitual confundir los t*rminos de microcontrolador y microprocesador, cayendo as+ en un error de cierta magnitud. Un microcontrolador es, como ya se )a comentado previamente, un sistema completo, con unas prestaciones limitadas 'ue no pueden modificarse y 'ue puede llevar a cabo las tareas para las 'ue )a sido programado de forma autnoma. Un microprocesador, en cambio, es simplemente un componente 'ue conforma el microcontrolador, 'ue lleva a cabo ciertas tareas 'ue anali,aremos ms adelante y 'ue, en conjunto con otros componentes, forman un microcontrolador. -ebe 'uedar clara por tanto la diferencia entre microcontrolador y microprocesador. a modo de resumen, el primero es un sistema autnomo e independiente, mientras 'ue el segundo es una parte, cabe decir 'ue esencial, 'ue forma parte de un sistema mayor. Arquitectura interna de un microcontrolador $omo ya )emos visto, un microcontrolador es un dispositivo complejo, formado por otros ms sencillos. A continuacin se anali,an los ms importantes. Procesador Es la parte encargada del procesamiento de las instrucciones. -ebido a la necesidad de conseguir elevados rendimientos en este proceso, se )a desembocado en el empleo generali,ado de procesadores de ar'uitectura /arvard frente a los tradicionales 'ue segu+an la ar'uitectura de von 0eumann. Esta 1ltima se caracteri,aba por'ue la $PU se conectaba con una memoria 1nica, donde coexist+an datos e instrucciones, a trav*s de un sistema de buses. Ar'uitectura von 0eumann En la ar'uitectura /arvard son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el acceso. Esta dualidad, adems de propiciar el paralelismo, permite la adecuacin del tama(o de las palabras y los buses a los re'uerimientos espec+ficos de las instrucciones y de los datos. Ar'uitectura /arvard El procesador de los modernos microcontroladores responde a la ar'uitectura 23!$ #$omputadores de 4uego de 3nstrucciones 2educido&, 'ue se identifica por poseer un repertorio de instrucciones m'uina pe'ue(o y simple, de forma 'ue la mayor parte de las instrucciones se ejecutan en un ciclo de instruccin. 5tra aportacin frecuente 'ue aumenta el rendimiento del computador es el fomento del paralelismo impl+cito, 'ue consiste en la segmentacin del procesador #pipe6line&, descomponi*ndolo en etapas para poder procesar una instruccin diferente en cada una de ellas y trabajar con varias a la ve,. Memoria de programa El microcontrolador est dise(ado para 'ue en su memoria de programa se almacenen todas las instrucciones del programa de control. $omo *ste siempre es el mismo, debe estar grabado de forma permanente. Existen algunos tipos de memoria adecuados para soportar estas funciones, de las cuales se citan las siguientes. - ROM con mscara. se graba mediante el uso de mscaras. !lo es recomendable para series muy grandes debido a su elevado coste. - EPROM. se graba el*ctricamente con un programador controlador por un P$. -isponen de una ventana en la parte superior para someterla a lu, ultravioleta, lo 'ue permite su borrado. Puede usarse en fase de dise(o, aun'ue su coste unitario es elevado. - OTP: su proceso de grabacin es similiar al anterior, pero *stas no pueden borrarse. !u bajo coste las )acen idneas para productos finales. - EEPROM: tambi*n se graba el*ctricamente, pero su borrado es muc)o ms sencillo, ya 'ue tambi*n es el*ctrico. 0o se pueden conseguir grandes capacidades y su tiempo de de escritura y su consumo es elevado. - FA!": se trata de una memoria no voltil, de bajo consumo, 'ue se puede escribir y borrar en circuito al igual 'ue las EEP25M, pero 'ue suelen disponer de mayor capacidad 'ue estas 1ltimas. !on recomendables aplicaciones en las 'ue es necesario modificar el programa a lo largo de la vida del producto. Por sus mejores prestaciones, est sustituyendo a la memoria EEP25M para contener instrucciones. -e esta forma Microc)ip comerciali,a dos microcontroladores prcticamente iguales 'ue slo se diferencian en 'ue la memoria de programa de uno de ellos es tipo EEP25M y la del otro tipo 7las). !e trata del P3$89$:; y el P3$897:;, respectivamente. Memoria de datos <os datos 'ue manejas los programas var+an continuamente, y esto exige 'ue la memoria 'ue los contiene debe ser de lectura y escritura, por lo 'ue la memoria 2AM esttica #!2AM& es la ms adecuada, aun'ue sea voltil. /ay microcontroladores 'ue disponen como memoria de datos una de lectura y escritura no voltil, del tipo EEP25M. -e esta forma, un corte en el suministro de la alimentacin no ocasiona la p*rdida de la informacin, 'ue est disponible al reiniciarse el programa. El P3$897:; dispone de 9; bytes de memoria EEP25M para contener datos. #neas de E$! A excepcin de dos patitas destinadas a recibir la alimentacin, otras dos para el cristal de cuar,o, 'ue regula la frecuencia de trabajo, y una ms para provocar el 2eset, las restantes patitas de un microcontrolador sirven para soportar su comunicacin con los perif*ricos externos 'ue controla. <as l+neas de E! 'ue se adaptan con los perif*ricos manejan informacin en paralelo y se agrupan en conjuntos de oc)o, 'ue reciben el nombre de Puertas. /ay modelos con l+neas 'ue soportan la comunicacin en serie= otros disponen de conjuntos de l+neas 'ue implementan puertas de comunicacin para diversos protocolos, como el 3>$, el U!%, etc. Recursos au%iliares !eg1n las aplicaciones a las 'ue orienta el fabricante cada modelo de microcontrolador, incorpora una diversidad de complementos 'ue refuer,an la potencia y la flexibilidad del dispositivo. Entre los recursos ms comunes se citan los siguientes. 6 $ircuito de reloj. se encarga de generar los impulsos 'ue sincroni,an el funcionamiento de todo el sistema. 6 ?empori,adores, orientados a controlar tiempos. 6 Perro @uardin o Aatc)-og. se emplea para provocar una reiniciali,acin cuando el programa 'ueda blo'ueado. 6 $onversores A- y -A, para poder recibir y enviar se(ales analgicas. 6 !istema de proteccin ante fallos de alimentacin 6 Estados de reposos, gracias a los cuales el sistema 'ueda congelado y el consumo de energ+a se reduce al m+nimo. Programaci&n de microcontroladores <a utili,acin de los lenguajes ms cercanos a la m'uina #de bajo nivel& representan un considerable a)orro de cdigo en la confeccin de los programas, lo 'ue es muy importante dada la estricta limitacin de la capacidad de la memoria de instrucciones. <os programas bien reali,ados en lenguaje Ensamblador optimi,an el tama(o de la memoria 'ue ocupan y su ejecucin es muy rpida. <os lenguajes de alto nivel ms empleados con microcontroladores son el $ y el %A!3$ de los 'ue existen varias empresas 'ue comerciali,an versiones de compiladores e interpretes para diversas familias de microcontroladores. En el caso de los P3$ es muy competitivo e interesante el compilador de $ P$M de la empresa $$! y el P%A!3$ de micro<ab Engineerign, ambos comerciali,ados en Espa(a por Mircosystems Engineering. /ay versiones de interpretes de %A!3$ 'ue permiten la ejecucin del programa l+nea a l+nea, y en ocasiones, residen en la memoria del propio microcontrolador. $on ellos se puede escribir una parte del cdigo, ejecutarlo y comprobar el resultado antes de proseguir. os P'C( El )*F+, El P3$ es el microcontrolador 'ue fabrica la compa(+a Microc)ip. Aun'ue no son los microcontroladores 'ue ms prestaciones ofrecen, en los 1ltimos a(os )an ganado muc)o mercado, debido al bajo precio de *stos, lo sencillo de su manejo y programacin y la ingente cantidad de documentacin y usuarios 'ue )ay detrs de ellos. -Para qu. sir/e un P'C0 Un P3$, al ser un microcontrolador programable, puede llevar a cabo cual'uier tarea para la cual )aya sido programado. 0o obstante, debemos ser conscientes de las limitaciones de cada P3$. As+, el 897:;, P3$ 'ue se tratar en este tutorial, no podr generar un PAM ni convertir se(ales analgicas en digitales, entre otras. El )*F+, !e trata de un microcontrolador de : bits. Es un P3$ de gama baja, cuyas caracter+sticas podemos resumir en. 6 Memoria de 8B x 8; de tipo 7las) 6 Memoria de datos EEP25M de 9; bytes 6 8C l+neas de E! con control individual 6 7recuencia de funcionamiento mxima de 8D M),. 6 $uatro fuentes de interrupcin 6 Activacin de la patita 2%D30? 6 -esbordamiento del ?M2D 6 $ambio de estado en alguna patia 2%;62%E 6 7in de la escritura de la EEP25M de datos 6 ?empori,adorcontador ?M2D programable de : bits 6 Perro @uardin o Aatc)-og @eneralmente se encuentra encapsulado en formato -3P8:. A continuacin puede apreciarse dic)o encapsulado y una breve descripcin de cada una de las patitas. imagen. 6 F--. alimentacin 6 F!!. masa 6 5!$8$<B3065!$>$<B5U?. conexin del oscilador 6 FPPM$<2. tensin de programacin y reset 6 2AD62AC. l+neas de E! de la puerta A 6 2A;. l+nea de E! de la puerta A o entrada de impulsos de reloj para ?M2D 6 2%D30?. l+nea de E! de la puerta % o peticin de interrupcin 6 2%862%E. l+neas de E! de la puerta % Organi1aci&n de la memoria A continuacin podemos ver la organi,acin de la memoria del 897:;. Podemos comprobar como la memoria est dividida en dos bancos #cada una de las columnas&. banco D y banco 8. <as primeras 8> posiciones de cada banco #DD)6D%) y :D)6 :%)& estn ocupadas por los 2egistros de Propsito Especial #!pecial Purpose 2egisters&. Estos registros, en los 'ue entraremos en detalle ms adelante, son los encargados de controlar ciertas funciones espec+ficas del P3$. <as 9: posiciones siguientes #D$)6;7) y :$)6 $7)& son los denominados 2egistros de Propsito @eneral, del ingl*s @eneral Purpose 2egisters. Gstos son empleados para guardar cual'uier dato 'ue necesitemos durante la ejecucin del programa. %A0$5 D ?M2D. es un tempori,adorcontador de : bits. Puede operar de dos modos distintos. 6 ?empori,ador. el registro incrementa su valor en cada ciclo de instruccin #7osc;&. 6 $ontador. el registro incrementa su valor con cada impulso introducido en la patita 2A;?5!B3. En ambos casos, cuando el registro se desborda, es decir, llega a su valor mximo #en este caso >H: I >J9. $omo el D tambi*n se cuenta, el mximo valor ser+a >JJ&, empie,a de nuevo a contar a partir del D, no sin antes informar de este evento a trav*s de la activacin de un flag yo una interrupcin.
P$<. es el contador del programa. 3ndica la direccin de memoria 'ue se leer a continuacin. En algunas ocasiones, como el empleo de las tablas, el uso de este registro es imprescindible.
!?A?U!. registro de : bits 'ue sirve para configurar ciertos aspectos del P3$. En la siguiente figura se aprecia la disposicin de los bits de dic)o registro.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 IRP RP0 TO# PD# Z DC C 6 2PD. indica el banco de memoria con el 'ue se est trabajando. $uando vale D se selecciona el %anco D y cuando vale 8 el %anco 8.
P52?A. representacin de la puerta A. $ada bit representa una l+nea de E! de la puerta A.
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RA4 RA3 RA2 RA1 RA0 $omo se puede comprobar, los tres bits de mayor peso no representan ninguna l+nea de E!, ya 'ue la puerta A slo tiene J l+neas de E!
P52?%. lo mismo 'ue la puerta A, pero en este caso con : l+neas de E! %A0$5 8 ?23!A. registro de : bits de configuracin de la puerta A. !i un bit se encuentra en 8, esa l+nea de E! se configura como entrada= si, en cambio, se encuentra a D, se configura como salida ?23!%. lo mismo 'ue ?23!A, pero referente a la puerta %.
Bit7 %it9 %itJ %it; %itC %it> %it8 %itD RB7 2%9 2%J 2%; 2%C 2%> 2%8 2%D 7inalmente cabe destacar el registro A, tambi*n conocido como registro de trabajo #del ingl*s KorL& o acumulador. Es de vital importancia ya 'ue, entre otras, deberemos usarlo de registro puente para llevar a cabo ciertas operaciones.
Repertorio de instrucciones A continuacin veremos algunas de las instrucciones ms importantes, o al menos ms empleadas en la programacin de P3$s, en A!M. <as restantes se irn viendo en entregas posteriores seg1n vaya siendo necesario su manejo. 6 Manejo de registros 6 clrf f. limpia el registro f, es decir, pone todos sus bits a D. 6 comf f,d. complementa el registro fuente f #cambia los 8 por D y viceversa& y el resultado lo deposita en el destino. !i d I D el destino es A y si d I 8, el destino es el registro fuente f. 6 Manejo de bits 6 bcf f,b. pone a D el bit b del registro f. 6 bsf f,b. pone a 8 el bit b del registro f. 6 %rinco 6 %tfsc f, b. explora el bit b del registro f y salta si vale D 6 %tfss f, b. explora el bit b del registro f y salta si vale 8 6 $ontrol y especiales 6 @oto eti'ueta. sit1a el cursor del programa #P$<&, en eti'ueta Circuiter#a 23sica En el siguiente es'uema podemos ver la circuiter+a bsica, es decir, el circuito m+nimo para 'ue el P3$ empiece a funcionar
Identificador Componente R1 Resistencia 100 R2 Resistencia 10k C1, C2 Condensado ce!"ico 27 #$ D1 Diodo 1%414& 'TA( Cista) de c*a+o 4 ,-+. /01 P*)sado %A Gste consta bsicamente de dos partes. 6 Alimentacin. se emplean para ello dos pines. 8; F-- #tensin positiva& y J @0- #masa&. !e incluye adems un pulsador, conectado al pin ;. cuando se introduce un nivel alto de tensin #pulsador abierto& el P3$ funciona normalmente y cuando se introduce un nivel bajo #pulsador cerrado& se resetea el P3$. 6 5scilacin. la lleva a cabo el cristal de cuar,o #de ; M), en nuestro caso& junto con los dos condensadores cermicos #>Ep7&. Existen otros tipos de osciladores 'ue pueden sernos 1tiles cuando trabajemos con P3$s, pero de momento no los veremos. 4uestro primer programa A continuacin vamos a desarrollar nuestro primer programa. Gste activar un <E- conectado a 2%D siempre 'ue el interruptor conectado a 2AD este cerrado. Para ello vamos a montar el siguiente circuito. En el circuito podemos ver como lo 1nico 'ue )emos a(adido al circuito base es un pulsador conectado al pin 8E #2AD&, de forma 'ue cuando lo pulsemos se introdu,ca un cero lgico en el pin y cuando no lo pulsemos se introdu,ca un uno lgico. /emos a(adido adems un <E- con su correspondiente resistencia limitadora de corriente en el pin 9 #2%D&. -e lo 'ue )emos comentado en esta prctica, caben destacar dos cosas. 6 <a eleccin de los pines )a sido arbitraria. se )an escogido *stos, pero pod+amos )aber escogido otros. 0o obstante, mientras sea posible es mejor organi,ar el es'uema y el programa, y una forma de )acerlo es agrupando por un lado las entrada #Puerta A& y por otro las salidas #Puerta %&. Por la misma ra,n, )emos escogido el pin D de cada puerta, en ve, de escoger en un sitio el C y en otro el E, por ejemplo. 6 En el caso de las entradas, es trivial 'ue cuando se pulse o deje de activar el pulsador se env+e un cero o un uno, pues lo 1nico 'ue 'ueremos es 'ue el P3$ pueda detectar un cambio. As+, igual nos da comprobar cuando se env+a un cero 'ue cuando se env+a un uno, ya 'ue en ambos casos podremos verificarlo. En este caso se )a elegido el cero como activado por'ue es lo ms com1n. En el caso de las salidas no ocurre lo mismo, ya 'ue en este caso no se trata de detectar un cambio, sino de activar un dispositivo, por lo 'ue se )ace necesaria 'ue el P3$ MgenereM una diferencia de potencial. As+, la forma de indicar al P3$ 'ue lo )aga es poniendo a uno la salida. /ec)as estas aclaraciones, veamos el programa. ESTADO EQU 0x03 PORTA EQU 0x05 PORTB EQU 0x06 org 0 bsf ESTADO,5 clrf PORTA comf PORTA,1 clrf PORTB bcf ESTADO,5 INICIO btfsc PORTA,0 goto APAAR goto ENCENDER APAAR bcf PORTB,0 goto INICIO ENCENDER bsf PORTB,0 goto INICIO !"# $omentemos el cdigo. <as tres primeras l+neas, cuyo n1cleo es ENU, permiten 'ue el compilador interprete a partir de ese momento los nombres de la primera columna con las direccin de memoria de la derec)a. El objetivo de estas instrucciones es obvio. facilitar la comprensin del cdigo, ya 'ue es ms fcil recordar un nombre 'ue nos sugiere algo 'ue direccin en )exadecimal. <a siguiente instruccin, org D, no la anali,aremos de momento. !implemente decir 'ue es necesaria para el correcto funcionamiento del programa, ya 'ue indica el comien,o del cdigo. bsf E!?A-5,J nos permite poner a 8 el bit J de E!?A-5, con lo 'ue conseguimos acceder al banco 8, donde se encuentran los registros de configuracin de las puertas. clrf P52?A. pone a cero todos los bits del registro porta, con lo 'ue se consigue 'ue dic)a puerta se configure al completo como salida. En este caso lo usamos conjuntamente con comf, 'ue transforma los D en 8 y viceversa. As+, se consigue configurar la puerta a como entrada. Podr+amos usar otros m*todos, como movlK Dx77 junto con movKf PUE2?AA, pero el primero lo considero ms elegante. clrf P52?%. pone a cero todos los bits del registro P52?%, configurando *ste como salida. bcf E!?A-5,J pone a D el bit J de E!?A-5, volviendo as+ al banco D. 3nicio, apagar y encender son eti'uetas, cuya utilidad es marcar un punto del programa= as+, si 'ueremos volver a ese punto slo tendremos 'ue )acer referencia a su nombre. btfsc P52?A,D sirve para saltar si el bit D de P52?A vale D, es decir, cuando se activ el pulsador. En ese caso, vamos a E0$E0-E2 mediante goto E0$E0-E2, se pone a 8 el bit D de P52?%, 'ue es donde est conectado el led y volvemos a 303$35. !i no est pulsado el interruptor vamos a APA@A2, y )acemos la operacin contraria a la anterior. 7inalmente volvemos a 303$35. Programaci&n de P'Cs ?odos los microcontroladores necesitan un circuito grabador, llamado programador, para, valga la redundancia, programarlo. En este caso, los P3$s, y ms concretamente el 897:;, no es una excepcin.