Académique Documents
Professionnel Documents
Culture Documents
La situacin actual en el campo de los microcontroladores se ha producido gracias al desarrollo de la tecnologa de fabricacin de los
circuitos integrados. Este desarrollo ha permitido construir las centenas de miles de transistores en un chip. Esto fue una condicin
previa para la fabricacin de un microprocesador. Las primeras microcomputadoras se fabricaron al aadirles perifricos externos,
tales como memoria, lneas de entrada/salida, temporizadores u otros. El incremento posterior de la densidad de integracin permiti
crear un circuito integrado que contena tanto al procesador como perifricos. As es cmo fue desarrollada la primera
microcomputadora en un solo chip, denominada ms tarde microcontrolador.
1.1 Introduccin
1.2 Nmeros, nmeros, nmeros...
1.3 Detalles importantes
1.4 Microcontroladores PIC
Los principiantes en electrnica creen que un microcontrolador es igual a un microprocesador. Esto no es cierto. Difieren uno del otro
en muchos sentidos. La primera y la ms importante diferencia es su funcionalidad. Para utilizar al microprocesador en una aplicacin
real, se debe de conectar con otros componentes, en primer lugar con la memoria. Aunque el microprocesador se considera una
mquina de computacin poderosa, no est preparado para la comunicacin con los dispositivos perifricos que se le conectan. Para
que el microprocesador se comunique con algn perifrico, se deben utilizar los circuitos especiales. As era en el principio y esta
prctica sigue vigente en la actualidad.
Por otro lado, al microcontrolador se le disea de tal manera que tenga todas las componentes integradas en el mismo chip. No
necesita de otros componentes especializados para su aplicacin, porque todos los circuitos necesarios, que de otra manera
correspondan a los perifricos, ya se encuentran incorporados. As se ahorra tiempo y espacio necesario para construir un dispositivo.
Para entender con ms facilidad las razones del xito tan grande de los microcontroladores, vamos a prestar atencin al siguiente
ejemplo. Hace unos 10 aos, disear un dispositivo electrnico de control de un ascensor de un edificio de varios pisos era muy difcil,
incluso para un equipo de expertos. Ha pensado alguna vez en qu requisitos debe cumplir un simple ascensor? Cmo lidiar con la
situacin cuando dos o ms personas llaman al ascensor al mismo tiempo? Cul llamada tiene la prioridad? Cmo solucionar las
cuestiones de seguridad, de prdida de electricidad, de fallos, de uso indebido? Lo que sucede despus de resolver estos problemas
bsicos es un proceso meticuloso de disear los dispositivos adecuados utilizando un gran nmero de los chips especializados. Este
proceso puede tardar semanas o meses, dependiendo de la complejidad del dispositivo. Cuando haya terminado el proceso, llega la
hora de disear una placa de circuito impreso y de montar el dispositivo.Un dispositivo enorme! Es otro trabajo difcil y tardado. Por
ltimo, cuando todo est terminado y probado adecuadamente, pasamos al momento crucial y es cuando uno se concentra, respira
profundamente y enciende la fuente de alimentacin. Esto suele ser el punto en el que la fiesta se convierte en un verdadero trabajo
puesto que los dispositivos electrnicos casi nunca funcionan apropiadamente desde el inicio. Preprese para muchas noches sin
dormir, correcciones, mejoras... y no se olvide de que todava estamos hablando de cmo poner en marcha un simple ascensor.
Cuando el dispositivo finalmente empiece a funcionar perfectamente y todo el mundo est satisfecho, y le paguen por el trabajo que ha
hecho, muchas compaas de desarrollo estarn interesadas en su trabajo. Por supuesto, si tiene suerte, cada da le traer una oferta
de trabajo de un nuevo inversionista. Sin embargo, si lo requieren para trabajar en el control de los elevadores de un nuevo edificio
que tiene cuatro pisos ms de los que ya maneja su sistema de control. Sabe cmo proceder? Cree acaso que se pueden control ar
las demandas de sus clientes? Pensamos que usted va a construir un dispositivo universal que se puede utilizar en los edificios de 4 a
40 pisos, una obra maestra de electrnica. Bueno, incluso si usted consigue construir una joya electrnica, su inversionista le
esperarar delante de la puerta pidiendo una cmara en el ascensor o una msica relajante en caso de fallo de ascensor. O un
ascensor con dos puertas. De todos modos, la ley de Murphy es inexorable y sin duda usted no podr tomar ventaja a pesar de todos
los esfuerzos que ha hecho. Por desgracia, todo lo que se ha dicho hasta ahora sucede en la realidad. Esto es lo que dedicarse a la
ingeniera electrnica realmente significa. Es as como se hacan las cosas hasta aparicin de los microcontroladores diseados pequeos, potentes y baratos. Desde ese momento su programacin dej de ser una ciencia, y todo tom otra direccin ...
El dispositivo electrnico capaz de controlar un pequeo submarino, una gra o un ascensor como el anteriormente mencionado,
ahora est incorporado en un slo chip. Los microcontroladores ofrecen una amplia gama de aplicaciones y slo algunas se exploran
normalmente. Le toca a usted decidir qu quiere que haga el microcontrolador y cargar un programa en l con las instrucciones
apropiadas. Antes de encender el dispositivo es recomendable verificar su funcionamiento con ayuda de un simulador. Si todo
funciona como es debido, incorpore el microcontrolador en el sistema. Si alguna vez necesita cambiar, mejorar o actualizar el
programa, hgalo. Hasta cundo? Hasta quedar satisfecho. Eso puede realizarse sin ningn problema.
Saba usted que todas las personas pueden ser clasificadas en uno de 10 grupos, en los que estn familiarizados con el
sistema de numeracin binario y en los que no estn familiarizados con l. Si no entendi lo anterior significa que todava
pertenece al segundo grupo. Si desea cambiar su estado, lea el siguiente texto que describe brevemente algunos de los
conceptos bsicos utilizados ms tarde en este libro (slo para estar seguro de que estamos hablando en los mismos
trminos).
Evidentemente, se trata del mismo nmero representado en dos sistemas de numeracin diferentes. La nica diferencia entre estas
dos representaciones yace en el nmero de dgitos necesarios para escribir un nmero. Un dgito (2) se utiliza para escribir el nmero
2 en el sistema decimal, mientras que dos dgitos (1 y 0) se utilizan para escribir aquel nmero en el sistema binario. Ahora est de
acuerdo que hay 10 grupos de gente? Bienvenido al mundo de la aritmtica binaria! Tiene alguna idea de dnde se utiliza?
Excepto en las condiciones de laboratorio estrictamente controladas, los circuitos electrnicos ms complicados no pueden especificar
con exactitud la diferencia entre dos magnitudes (dos valores de voltaje, por ejemplo), si son demasiado pequeos (ms pequeos que
unos pocos voltios). La razn son los ruidos elctricos y fenmenos que se presentan dentro de lo que llamamos entorno de trabajo
real (algunos ejemplos de estos fenmenos son los cambios imprevisibles de la tensin de alimentacin, cambios de temperatura,
tolerancia a los valores de los componentes etc...) Imagnese una computadora que opera sobre nmeros decimales al tratarlos de la
siguiente manera: 0=0V, 1=5V, 2=10V, 3=15V, 4=20V... 9=45V!?
Alguien dijo bateras?
Una solucin mucho ms fcil es una lgica binaria donde 0 indica la ausencia de voltaje, mientras que 1 indica la presencia de voltaje.
Es ms fcil de escribir 0 o 1 en vez de no hay voltaje o hay voltaje. Mediante el cero lgico (0) y uno lgico (1) la electrnica se
enfrenta perfectamente y realiza con facilidad todas las operaciones aritmticas. Evidentemente, se trata de electrnica que en
realidad aplica aritmtica en la que todos los nmeros son representados con slo dos dgitos y donde slo es importante saber si hay
voltaje o no. Por supuesto, estamos hablando de electrnica digital.
El mayor nmero que puede ser representado con 4 dgitos binarios es el nmero 1111. Co-rresponde al nmero 15 en el sistema
decimal. En el sistema hexadecimal ese nmero se representa con slo un dgito F. Es el mayor nmero de un dgito en el sistema
hexadecimal. Se da cuenta de la gran utilidad de estas equivalencias? El mayor nmero escrito con ocho dgitos binarios es a la vez
el mayor nmero de dos dgitos en el sistema hexadecimal. Tenga en cuenta que una computadora utiliza nmeros binarios de 8
dgitos. Acaso se trata de una casualidad?
CDIGO BCD
El cdigo BCD (Binary-Coded Decimal - Cdigo binario decimal) es un cdigo binario utilizado para representar a los nmeros
decimales. Consiste en nmeros binarios de 4 dgitos que representan los primeros diez dgitos (0, 1, 2, 3...8, 9). Aunque cuatro dgitos
pueden hacer 16 combinaciones posibles en total, el cdigo BCD normalmente utiliza a las primeras diez.
Cabe destacar que es necesario utilizar slo dos dgitos binarios para representar a todos los nmeros decimales de 0 a 3. Para los
nmeros mayores, se deben utilizar los dgitos binarios adicionales. Por consiguiente, para representar los nmeros de 0 a 7 es
necesario utilizar tres dgitos binarios, para representar los nmeros de 0 a 15 - cuatro dgitos etc. Dicho de manera sencilla, el mayor
nmero binario que se puede representar utilizando n dgitos se obtiene al elevar la base 2 a la potencia n. Luego, al resultado se le
resta 1. Por ejemplo, si n=4:
4
2 - 1 = 16 - 1 = 15
Por consiguiente, al utilizar 4 dgitos binarios, es posible representar los nmeros decimales de 0 a 15, que son 16 valores diferentes
en total.
La siguiente es tabla comparativa que contiene los valores de nmeros 0-255 representados en tres sistemas de numeracin
diferentes. Esto es probablemente la manera ms fcil de entender lgica comn aplicada a todos los sistemas de numeracin.
los nmeros. Los prefijos $ y 0x marcan los nmeros hexadecimales. Por ejemplo, el nmero hexadecimal 10AF se puede escribir
como $10AF o 0x10AF. De manera similar, los nmeros binarios normalmente obtienen el prefijo %. Si un nmero no tiene ni sufijo ni
prefijo se considera decimal. Desafortunadamente, esta forma de marcar los nmeros no es estandarizada, por consiguiente depende
de la aplicacin concreta.
BIT
La teora dice que un bit es la unidad bsica de informacin...Vamos a olvidarlo por un momento y demostrar qu es eso en la prctica.
La respuesta es - nada especial- un bit es un slo dgito binario. Similar a un sistema de numeracin decimal en el que los dgitos de
un nmero no tienen la misma ponderacin (por ejemplo, los dgitos en el nmero 444 son los mismos pero tienen los valores
diferentes), el significado de un bit depende de la posicin que tiene en nmero binario. En este caso no tiene sentido hablar de
unidades, centenas etc. en los nmeros binarios, sus dgitos se denominan el bit cero (el primer bit a la derecha), el primer bit (el
segundo bit a la derecha) etc. Adems, ya que el sistema binario utiliza solamente dos dgitos (0 y 1), el valor de un bit puede ser 0 o
1.
No se confunda si se encuentra con un bit que tiene el valor 4, 16 o 64. Son los valores re-presentados en el sistema decimal.
Simplemente, nos hemos acostumbrado tanto a utilizar los nmeros decimales que estas expresiones llegaron a ser comunes. Sera
correcto decir por ejemplo, el valor del sexto bit en cualquier nmero binario equivale al nmero decimal 64. Pero todos somos
humanos y los viejos hbitos mueren difcilmente. Adems, cmo le suena nmero uno-uno-cero-uno-cero...?
BYTE
Un byte consiste en 8 bits colocados uno junto al otro. Si un bit es un dgito, es lgico que los bytes representen los nmeros. Todas
las operaciones matemticas se pueden realizar por medio de ellos, como por medio de los nmeros decimales comunes. Similar a
los dgitos de cualquier nmero, los dgitos de un byte no tienen el mismo significado. El bit del extremo izquierdo tiene la mayor
ponderacin, por eso es denominado el bit ms significativo (MSB). El bit del extremo derecho tiene la menor ponderacin, por eso es
denominado el bit menos significativo (LSB). Puesto que los 8 dgitos de un byte se pueden combinar de 256 maneras diferentes, el
mayor nmero decimal que se puede representar con un byte es 255 (una combinacin representa un cero).
Un nibble o un cuarteto representa una mitad de byte. Dependiendo de la mitad del nmero en cuestin (izquierda o derecha), se les
denomina nibbles altos o bajos, respectivamente.
Usted seguramente ha pensado alguna vez en cmo es la electrnica dentro de un circuito integrado digital, un microcontrolador o un
microprocesador. Cmo son los circuitos que realizan las operaciones matemticas complicadas y toman decisiones? Saba que
sus esquemas, aparentemente complicadas consisten en slo unos pocos elementos diferentes, denominados circuitos lgicos o
compuertas lgicas?
las funciones algebraicas. Tal idea pronto se transform en un producto prctico que se convirti ms tarde en lo que hoy en da
conocemos como circuitos lgicos Y (AND), O (OR) o NO (NOT). El principio de su funcionamiento es conocido como algebra de
Boole.
CIRCUITOS LGICOS
Algunas instrucciones de programa funcionan de la misma manera que las compuertas lgicas. A continuacin vamos a explicar el
principio de su funcionamiento.
Compuerta Y (AND)
Una compuerta lgica Y dispone de dos o ms entradas y de una salida. En este caso la compuerta utilizada dispone
de slo dos entradas. Un uno lgico (1) aparecer en su salida slo en caso de que ambas entradas (A y B) sean
llevadas a alto (1). La tabla a la derecha muestra la relacin entre las entradas y salidas de la compuerta Y.
El principio de funcionamiento es el mismo cuando la compuerta disponga de ms de dos entradas: la salida proporciona
un uno lgico (1) slo si todas las entradas son llevadas a alto (1). Cualquier otra combinacin de voltajes de entrada
proporcionar un cero lgico (0) en su salida. Utilizada en el programa, la operacin Y lgico es realizada por una
instruccin de programa, de la que vamos a hablar ms tarde. Por ahora basta con conocer que Y lgico en un
programa se refiere a la realizacin de este tipo de operacin sobre los bits correspondientes de dos registros diferentes.
Compuerta O (OR)
De manera similar, la compuerta O tambin dispone de dos o ms entradas y de una salida. Si la compuerta dispone de
slo dos entradas, es aplicable lo siguiente: la salida proporciona un uno lgico (1) si una u otra entrada (A o B) es
llevada a alto (1). En caso de que la compuerta O disponga de ms de dos entradas, es aplicable lo siguiente: La salida
proporciona un uno lgico (1) si por lo menos una entrada es llevada a alto (1). Si todas las entradas estn a cero lgico
(0), la salida estar a cero lgico (0) tambin.
En el programa la operacin lgica NO se realiza sobre un byte. El resultado es un byte con los bits invertidos. Si los bits de un byte se
consideran nmero, el valor invertido es un complemento a ese nmero. El complemento de un nmero es el valor que se aade al
nmero hasta llegar al mayor nmero binario de 8 dgitos. En otras palabras, la suma de un dgito de 8 nmeros y de su complemento
es siempre 255.
La compuerta XOR (O EXCLUSIVA) es un poco complicada en comparacin con las dems. Representa una
combinacin de todas las compuertas anteriormente descritas. La salida proporciona un uno lgico (1) slo si sus
entradas estn en estados lgicos diferentes.
En el programa, esta operacin se utiliza con frecuencia para comparar dos bytes. La resta se puede utilizar con el
mismo propsito (si el resultado es 0, los bytes son iguales). A diferencia de la resta, la ventaja de esta operacin lgica
es que no es posible obtener los resultados negativos.
REGISTRO
Un registro o una celda de memoria es un circuito electrnico que puede memorizar el estado de un byte.
REGISTROS SFR
A diferencia de los registros que no tienen ninguna funcin especial y predeterminada, cada microcontrolador dispone de un nmero
de registros de funciones especiales (SFR), con la funcin predeterminada por el fabricante. Sus bits estn conectados a los circuitos
internos del microcontrolador tales como temporizadores, convertidores A/D, osciladores entre otros. Esto significa que directamente
manejan el funcionamiento de estos circuitos, o sea del microcontrolador. Imagnese ocho interruptores que manejan el
funcionamiento de un circuito pequeo dentro del microcontrolador. Los registros SFR hacen exactamente lo mismo.
En otras palabras, el estado de los bits de registros se fija dentro de programa, los registros SFR dirigen los pequeos
circuitos dentro del microcontrolador, estos circuitos se conectan por los pines del microcontrolador a un dispositivo perifrico utilizado para... Bueno, depende de usted.
Una de las caractersticas ms importantes de los pines de entrada/salida (E/S) es la corriente mxima que pueden entregar/recibir.
En la mayora de los microcontroladores la corriente obtenida de un pin es suficiente para activar un LED u otro dispositivo de baja
corriente (10-20mA).
Otra caracterstica importante de los pines es que pueden disponer de los resistores pull-up. Estos resistores conectan los pines al
polo positivo del voltaje de la fuente de alimentacin y su efecto se puede ver al configurar el pin como una entrada conectada a un
interruptor mecnico o a un botn de presin. Las ltimas versiones de los microcontroladores tienen las resistencias pull-up
configurables por software.
Cada puerto de E/S normalmente est bajo el control de un registro SFR especializado, lo que significa que cada bit de ese registro
determina el estado del pin correspondiente en el el microcontrolador. Por ejemplo, al escribir un uno lgico (1) a un bit del registro de
control (SFR), el pin apropiado del puerto se configura automticamente como salida. Eso significa que el voltaje llevado a ese pin se
puede leer como 0 o 1 lgico. En caso contrario, al escribir 0 al registro SFR, el pin apropiado del puerto se configura como salida. Su
voltaje (0V o 5V) corresponde al estado del bit apropiado del registro del puerto (0 o 1 lgico, respectivamente).
UNIDAD DE MEMORIA
La unidad de memoria es una parte del microcontrolador utilizada para almacenar los datos. La manera ms fcil de explicarlo es
compararlo con un armario grande con muchos cajones. Si marcamos los cajones claramente, ser fcil acceder a cualquiera de s us
contenidos
al
leer
la
etiqueta
en
la
parte
delantera
del
cajn.
De manera similar, cada direccin de memoria corresponde a una localidad de memoria. El contenido de cualquier localidad se puede
leer y se le puede acceder al direccionarla. La memoria se puede escribir en la localidad o leer.
OTP ROM (One Time Programmable ROM) - ROM programable una sola vez
La memoria programable una sola vez permite descargar un programa en el chip, pero como dice su nombre, una sola vez. Si se
detecta un error despus de descargarlo, lo nico que se puede hacer es descargar el programa correcto en otro chip.
UV EEPROM (ROM Erasable programmable ROM) - ROM programable borrable por rayos ultravioleta
El encapsulado de este microcontrolador tiene una ventana reconocible en la parte alta. Eso permite exponer la
superficie del chip de silicio a la luz de ultravioleta y borrar el programa completamente en varios minutos. Luego es
posible
descargar
un
nuevo
programa
en
l.
MEMORIA RAM (Random AcMemoria RAM (Random Access Memory) - memoria de acceso aleatorio
Al apagar la fuente de alimentacin, se pierde el contenido de la memoria RAM. Se utiliza para almacenar temporalmente los datos y
los resultados inmediatos creados y utilizados durante el funcionamiento del microcontrolador. Por ejemplo, si el programa ejecuta la
adicin (de cualquier cosa) es necesario tener un registro que representa lo que se llama suma en vida cotidiana. Con tal propsito,
uno de los registros de la RAM es denominado suma y se utiliza para almacenar los resultados de la adicin.
Memoria EEPROM (Electrically Erasable Programmable ROM) - ROM programable y borrable elctricamente
El contenido de la EEPROM se puede cambiar durante el funcionamiento (similar a la RAM), pero se queda permanentemente
guardado despus de la prdida de la fuente de alimentacin (similar a la ROM). Por lo tanto, la EEPROM se utiliza con frecuencia
para almacenar los valores creados durante el funcionamiento, que tienen que estar permanentemente guardados. Por ejemplo, si
usted ha diseado una llave electrnica o un alarma, sera estupendo permitir al usuario crear e introducir una contrasea por su
cuenta.
INTERRUPCIN
La mayora de programas utilizan interrupciones durante ejecucin de programa regular. El propsito del microcontrolador
generalmente consiste en reaccionar a los cambios en su entorno. En otras palabras, cuando ocurre algo, el microcontrolador
reacciona de alguna manera... Por ejemplo, al apretar el botn del mando a distancia, el microcontrolador lo registra y responde al
comando cambiando de canal, subiendo o bajando el volumen etc. Si el microcontrolador pasar la mayora del tiempo comprobando
varios botones sin parar - las horas, los das, esto no sera nada prctico.
Por lo tanto, el microcontrolador aprendi un truco durante su evolucin. En vez de seguir comprobando algn pin o bit, el
microconrolador deja su trabajo de esperar a un experto que reaccionar slo en caso de que suceda algo digno de atencin.
La seal que informa al procesador central acerca de tal acontecimiento se denomina INTERRUPCIN.
BUS
El bus est formado por 8, 16 o ms cables. Hay dos tipos de buses: el bus de direcciones y el bus de datos. El bus de direcciones
consiste en tantas lneas como sean necesarias para direccionar la memoria. Se utiliza para transmitir la direccin de la CPU a la
memoria. El bus de datos es tan ancho como los datos, en este caso es de 8 bits o cables de ancho. Se utiliza para conectar todos los
circuitos dentro del microcontrolador.
Decodificador de instrucciones. Es la parte que descodifica las instrucciones del programa y acciona otros
circuitos basndose en esto;
Unidad lgica aritmtica (Arithmetical Logical Unit - ALU) realiza todas las operaciones matemticas y
lgicas sobre datos. El conjunto de instrucciones que es diferente para cada familia de microcontrolador
expresa las capacidades de este circuito; y
Acumulador o registro de trabajo. Es un registro SFR estrechamente relacionado con el funcionamiento de la
ALU. Es un tipo de escritorio de trabajo utilizado para almacenar todos los datos sobre los que se debe realizar
alguna operacin (sumar, mover). Tambin almacena los resultados preparados para el procesamiento futuro.
Uno de los registros SFR, denominado Registro Status (PSW), est estrechamente relacionado con el
acumulador. Muestra el estado de un nmero almacenado en el acumulador (el nmero es mayor o menor que
cero etc.) en cualquier instante dado. El acumulador es denominado registro de trabajo (working register), o sea,
registro W o solamente W.
COMUNICACIN SERIE
La conexin paralela entre el microcontrolador y los perifricos a travs de los puertos de entrada/salida es una solucin perfecta para
las distancias cortas - hasta varios metros. No obstante, cuando es necesario establecer comunicacin entre dos dispositivos a largas
distancias no es posible utilizar la conexin paralela. En vez de eso, se utiliza la conexin en serie.
Hoy en da, la mayora de los microcontroladores llevan incorporados varios sistemas diferentes para la comunicacin en serie, como
un equipo estndar. Cul de estos sistemas se utilizar en un caso concreto, depende de muchos factores, de los que ms
importantes son:
Una de las cosas ms importantes en cuanto a la comunicacin en serie es el Protocolo que debe ser estrictamente observado. Es un
conjunto de reglas que se aplican obligatoriamente para que los dispositivos puedan interpretar correctamente los datos que
intercambian mutuamente. Afortunadamente, los microcontroladores se encargan de eso automticamente, as que el trabajo de
programador/usuario es reducido a la escritura y lectura de datos.
Circuito inter-integrado es un sistema para el intercambio de datos serial entre los microcontroladores y los circuitos integrados de
nueva generacin. Se utiliza cuando la distancia entre ellos es corta (el receptor y el transmisor estn normalmente en la misma placa
de circuito impreso). La conexin se establece por medio de dos lneas - una se utiliza para transmitir los datos, mientras que la otra se
utiliza para la sincronizacin (la seal de reloj). Como se muestra en la figura, un dispositivo es siempre el principal (master - maestro),
el que realiza el direccionamiento de un chip subordinado (slave - esclavo) antes de que se inicie la comunicacin. De esta manera un
microcontrolador puede comunicarse con 112 dispositivos diferentes. La velocidad de transmisin de datos es normalmente 100
Kb/seg (el modo estndar) o 10 Kb/seg (modo de velocidad de transmisin de datos baja). Recientemente han aparecido los sistemas
con la velocidad de transmisin de datos de 3.4 Mb/sec. La distancia entre los dispositivos que se comunican por el bus I2C est
limitada a unos metros.
full
duplex,
lo
que
significa
que
los
datos
se
envan
se
reciben
simultneamente.
OSCILADOR
Los pulsos uniformes generados por el oscilador permiten el funcionamiento armnico y sncrono de todos los circuitos
del microcontrolador. El oscilador se configura normalmente de tal manera que utilice un cristal de cuarzo o resonador
cermico para estabilizacin de frecuencia. Adems, puede funcionar como un circuito autnomo (como oscilador RC).
Es importante decir que las instrucciones del programa no se ejecutan a la velocidad impuesta por el mismo oscilador
sino varias veces ms despacio. Eso ocurre porque cada instruccin se ejecuta en varios ciclos del oscilador. En algunos
microcontroladores se necesita el mismo nmero de ciclos para ejecutar todas las instrucciones, mientras que en otros el
tiempo de ejecucin no es el mismo para todas las instrucciones. Por consiguiente, si el sistema utiliza el cristal de
cuarzo con una frecuencia de 20 MHZ, el tiempo de ejecucin de una instruccin de programa no es 50 nS, sino 200, 400
o 800 nS dependiendo del tipo del microcontrolador.
CIRCUITO DE ALIMENTACIN
Hay que mencionar dos cosas dignas de atencin con relacin al circuito de la fuente de alimentacin de microcontroladores:
Brown out es un estado potencialmente peligroso que ocurre al apagar el microcontrolador o en caso de que el
voltaje de la fuente de alimentacin salga de unos mrgenes debido al ruido elctrico. Como el microcontrolador
dispone de varios circuitos que funcionan a niveles de voltaje diferentes, ese estado puede causar un
comportamiento descontrolado. Para evitarlo, el microcontrolador normalmente tiene un circuito incorporado para
el brown out reset. El circuito reinicia inmediatamente el microcontrolador si el voltaje de alimentacin cae por
debajo del lmite.
El pin de reset (reinicio), marcado frecuentemente con MCLR (Master Clear Reset), sirve para el reinicio
externo del microcontrolador al aplicar un cero (0) o un uno (1) lgico dependiendo del tipo del microcontrolador.
En caso de que el circuito brown out no est incorporado, un simple circuito externo para el brown out reset se
puede conectar al pin MCLR.
TEMPORIZADORES/CONTADORES
El oscilador del microcontrolador utiliza cristal de cuarzo para su funcionamiento. Aunque no se trata de la solucin ms simple, hay
muchas razones para utilizarlo. La frecuencia del oscilador es definida con precisin y muy estable, as que siempre genera los pulsos
del mismo ancho, lo que los hace perfectos para medicin de tiempo. Tales osciladores se utilizan en los relojes de cuarzo. Si es
necesario medir el tiempo transcurrido entre dos eventos, basta con contar los pulsos generados por este oscilador. Esto es
exactamente lo que hace el temporizador.
La mayora de los programas utiliza estos cronmetros electrnicos en miniatura. Generalmente son registros SFR de 8 o 16 bits cuyo
contenido se aumenta automticamente con cada pulso. Una vez que se llena el registro, se genera una interrupcin!
Si el temporizador utiliza el oscilador de cuarzo interno para su funcionamiento, es posible medir el tiempo entre dos eventos (el valor
de registro en el momento de iniciar la medicin es T1, en el momento de finalizar la medicin es T2, el tiempo transcurrido es igual al
resultado de la resta T2 - T1). Si los registros se aumentan con los pulsos que vienen de la fuente externa, tal temporizador se
convierte en un contador.
Esto es una explicacin simple de su funcionamiento. Es un poco ms complicado en prctica.
Es fcil de medir los intervalos de tiempo cortos de la manera descrita anteriormente (hasta 256 microsegundos porque es el mayor
nmero que un registro puede contener). Esta obvia desventaja se puede superar de varias maneras: al utilizar el oscilador ms lento,
por medio de registros con ms bits, del pre-escalador o de la interrupcin. Las primeras dos soluciones tienen algunas debilidades as
que se recomienda utilizar el pre-escalador y/o la interrupcin.
La figura anterior describe el uso de una interrupcin en el funcionamiento del temporizador. Al asignarle un pre-escalador al
temporizador, se producen retrasos de duracin arbitraria con mnima interferencia en la ejecucin del programa principal.
CONTADORES
Si un temporizador se suministra por los pulsos ingresados por el pin de entrada en el microcontrolador, se produce un contador.
Evidentemente, es el mismo circuito electrnico capaz de funcionar en dos modos diferentes. La nica diferencia es que los pulsos
para contar se ingresan por el pin de entrada y que su duracin (anchura) no es definida. Por eso, no se pueden utilizar para medicin
de tiempo, sino que se utilizan para otros propsitos, por ejemplo: contar los productos en la cadena de montaje, nmero de rotaciones
del eje de un motor, pasajeros etc. (dependiendo del sensor utilizado).
Si el perro guardin est habilitado, cada vez que cuenta hasta el mximo valor en el que ocurre el desbordamiento del registro se
genera una seal de reinicio del microcontrolador y la ejecucin de programa inicia en la primera instruccin. El punto es evitar que
eso ocurra al utilizar el comando adecuado.
La idea se basa en el hecho de que cada programa se ejecuta en varios bucles, ms largos o cortos. Si las instrucciones que reinician
el temporizador perro guardin se colocan en lugares estratgicos del programa, aparte los comandos que se ejecutan regularmente,
el funcionamiento del perro guardin no afectar a la ejecucin del programa. Si por cualquier razn (con frecuencia por los ruidos
elctricos) el contador de programa se queda atrapado dentro de un bucle infinito, el valor del registro continuar aumentado por el
temporizador perro guardin alcanzar el mximo valor, el registro se desbordar y, aleluya! Ocurre el reinicio y el programa ser
ejecutado desde el principio!
CONVERTIDOR A/D
Las seales externas son muy diferentes de las que entiende el microcontrolador (solamente 0V y 5V), as que deben
ser convertidas para que el microcontrolador pueda entenderlas. Un convertidor analgico-digital es un circuito
electrnico encargado de convertir las seales continuas en nmeros digitales discretos. En otras palabras, este circuito
convierte un nmero real en un nmero binario y se lo enva a la CPU para ser procesado. Este mdulo se utiliza para
medir
el
voltaje
en
el
pin
de
entrada
(voltaje
El resultado de esta medicin es un nmero (el valor digital) utilizado y procesado ms tarde en el programa.
analgico).
ARQUITECTURA INTERNA
Todos los microcontroladores actuales utilizan uno de dos modelos bsicos de arquitectura denominados Harvard y von-Neumann.
Son dos maneras diferentes del intercambio de datos entre la CPU y la memoria.
ARQUITECTURA DE VON-NEUMANN
Los microcontroladores que utilizan la arquitectura von-Neumann disponen de un solo bloque de memoria y de un bus de
datos de 8 bits. Como todos los datos se intercambian por medio de estas 8 lneas, este bus est sobrecargado, y la
comunicacin por si misma es muy lenta e ineficaz. La CPU puede leer una instruccin o leer/escribir datos de/en la
memoria. Los dos procesos no pueden ocurrir a la vez puesto que las instrucciones y los datos utilizan el mismo bus. Por
ejemplo, si alguna lnea de programa dice que el registro de la memoria RAM llamado SUM debe ser aumentado por
uno (instruccin: incf SUMA), el microcontrolador har lo siguiente:
1. Leer la parte de la instruccin de programa que especifica QU es lo que debe realizar (en este caso es la
instruccin para incrementar incf)
2. Seguir leyendo la misma instruccin que especifica sobre CUL dato lo debe realizar (en este caso es el contenido
del registro SUMA)
3. Despus de haber sido incrementado, el contenido de este registro se debe escribir en el registro del que fue ledo
(direccin del registro SUMA)
El mismo bus de datos se utiliza para todas estas operaciones intermedias al intercambiar los datos entre la CPU y la memoria.
ARQUITECTURA DE HARVARD
Los microcontroladores que utilizan esta arquitectura disponen de dos buses de datos diferentes. Uno es de 8 bits de
ancho y conecta la CPU con la memoria RAM. El otro consiste en varias lneas (12, 14 o 16) y conecta a la CPU y la
memoria ROM. Por consiguiente, la CPU puede leer las instrucciones y realizar el acceso a la memoria de datos a la vez.
Puesto que todos los registros de la memoria RAM son de 8 bits de ancho, todos los datos dentro del microcontrolador
que se intercambian son de la misma anchura. Durante el proceso de la escritura de programa, slo se manejan los
datos de 8 bits. En otras palabras, todo lo que usted podr cambiar en el programa y a lo que podr afectar ser de 8 bits
de ancho. Todos los programas escritos para estos microcontroladores sern almacenados en la memoria ROM interna
del microcontrolador despus de haber sido compilados a cdigo mquina. No obstante, estas localidades de memoria
ROM no tienen 8, sino 12, 14 o 16 bits. 4, 6 o 8 bits adicionales representan una instruccin que especifica a la CPU qu
hacer con los datos de 8 bits.
Las ventajas de esta arquitectura son las siguientes:
Todos los datos en el programa son de un byte (8 bits) de ancho. Como un bus de datos utilizado para lectura de
programa tiene unas lneas ms (12, 14 o 16), tanto la instruccin como el dato se pueden leer simultneamente
al utilizar estos bits adicionales. Por eso, todas las instrucciones se ejecutan en un ciclo salvo las instrucciones
de salto que son de dos ciclos.
El hecho de que un programa (la ROM) y los datos temporales (la RAM) estn separados, permite a la CPU
poder ejecutar dos instrucciones simultneamente. Dicho de manera sencilla, mientras que se realiza la lectura o
escritura de la RAM (que marca el fin de una instruccin), la siguiente instruccin se lee por medio de otro bus.
En los microcontroladores que utilizan la arquitectura de von-Neumann, nunca se sabe cunta memoria ocupar
algn programa. Generalmente, la mayora de las instrucciones de programa ocupan dos localidades de
memoria (una contiene informacin sobre QU se debe realizar, mientras que la otra contiene informacin sobre
CUL dato se debe realizar). Sin embargo, esto no es una frmula rgida, sino el caso ms frecuente. En los
microcontroladores que utilizan una arquitectura Harvard, el bus de la palabra de programa es ms ancho que un
byte,
lo que permite que cada palabra de programa est compuesto por una instruccin y un dato. En
otras palabras, una localidad de memoria - una instruccin de programa.
JUEGO DE INSTRUCCIONES
El nombre colectivo de todas las instrucciones que puede entender el microcontrolador es llamado Juego de
Instrucciones. Cuando se escribe un programa en ensamblador, en realidad se especifican instrucciones en el orden en
el que deben ser ejecutadas. La restriccin principal es el nmero de instrucciones disponibles. Los fabricantes
normalmente elijen entre una de dos soluciones opuestas y disean los microcontroladores que aplican el mayor o el
menor nmero posible de instrucciones. En otras palabras, elijen entre dos juegos de instrucciones - RISC o CISC,
respectivamente.
RISC (REDUCED INSTRUCTION SET COMPUTER) - COMPUTADORA CON JUEGO DE INSTRUCCIONES REDUCIDAS
En este caso la idea es que el microcontrolador reconoce y ejecuta slo operaciones bsicas (sumar, restar, copiar etc...) Las
operaciones ms complicadas se realizan al combinar stas. Por ejemplo, multiplicacin se lleva a cabo al realizar adicin sucesiva.
Es como intentar explicarle a alguien con pocas palabras cmo llegar al aeropuerto en una nueva ciudad. Sin embargo, no todo es tan
oscuro. Por ltimo, no es tan difcil explicar dnde est el aeropuerto si se utilizan las palabras adecuadas tales como: a la derecha, a
la izquierda, el kilmetro etc.
CISC (COMPLEX INSTRUCTION SET COMPUTER) - COMPUTADORAS CON JUEGO DE INTRUCCIONES COMPLEJO
CISC es opuesto a RISC! Los microcontroladores diseados para reconocer ms de 200 instrucciones diferentes realmente pueden
realizar muchas cosas a alta velocidad. No obstante, uno debe saber cmo utilizar todas las posibilidades que ofrece un lenguaje tan
rico, lo que no es siempre tan fcil...
Antes de empezar a disear un dispositivo basado en un microcontrolador, tome en cuenta lo siguiente: cuntas entradas/lneas son
necesarias para su funcionamiento, realizara el dispositivo otras operaciones adems encender/apagar un rel, necesita algn modulo
especializado tal como el de comunicacin en serie, convertidor A/D etc. Cuando usted tiene una clara imagen de lo que quiere, el
rango de seleccin se reduce considerablemente, y le queda pensar en el precio. Va a tener varios dispositivos? Varios cientos?
Ms o menos, todo se parece a montar en bicicleta: despus de varias cadas inevitables en el principio, ser capaz de mantener el
equilibrio y montar en cualquier otra bicicleta. Por supuesto, nunca se olvida tanto de montar en bicicleta, como de la destreza de
programacin!
Familia
ROM
[Kbytes]
RAM
[bytes]
Frecuencia
Pines
de
reloj[MHz]
Entradas
A/D
Resolucin
del
convertidor
A/D
Comparadores
Temporizadores
Com.
Salidas
de 8/16 bits
serial
PWM
0.375 0.75
16 - 24
6-8
4-8
0-2
0-1
1x8
PIC12FXXX
0.75 1.5
25 - 38
4-8
0-3
0-1
1x8
PIC16FXXX
0.75 - 3
25 134
14 44
20
0-3
0-2
1x8
PIC16HVXXX
1.5
25
18 20
20
1x8
1.75 3.5
64 128
20
0-4
10
1 - 2 x 8 1 x 16
0-1
PIC12HVXXX
1.75
64
20
0-4
10
1 - 2 x 8 1 x 16
0-1
PIC16FXXX
1.75 - 14
64 368
14 64
20
0 - 13
8 or 10
0-2
1 - 2 x 8 1 x 16
USART
I2C SPI
0-3
PIC16HVXXX
1.75 3.5
64 128
14 20
20
0 - 12
10
2 x 8 1 x 16
USART
I2C SPI
USB2.0
CAN2.0
USART
I2C SPI
0-5
USB2.0
2-5
PIC18FXXX
4 - 128
256 3936
PIC18FXXJXX
8 - 128
1024 -
18 80
32 - 48
4 - 16
10 or 12
0-3
0-2x82-3x
16
28 -
40 - 48
10 - 16
10
0-2x82-3x
PIC18FXXKXX
8 - 64
3936
100
768 3936
28 44
16
64
10 - 13
10
1 x 8 3 x 16
USART
Ethernet
I2C SPI
USART
I2C SPI
INSTRUCCIN
DESCRIPCIN
OPERACIN
BANDERA
CLK
Mover literal a W
k -> w
MOVWF f
Mover el contenido
de W a f
W -> f
MOVF f,d
Mover el contenido
de f a d
f -> d
CLRW
Borrar el contenido
de W
0 -> W
CLRF f
Borrar el contenido
de f
0 -> f
SWAPF f,d
Intercambiar de
nibbles en f
f(7:4),(3:0) ->
f(3:0),(7:4)
1, 2
1, 2
Sumar literal a W
W+k -> W
C, DC, Z
ADDWF f,d
Sumar el contenido
de W y f
W+f -> d
C, DC ,Z
SUBLW k
Restar W de literal
k-W -> W
C, DC, Z
SUBWF f,d
Restar W de f
f-W -> d
C, DC, Z
ANDLW k
W AND k -> W
ANDWF f,d
AND W con f
W AND f -> d
IORLW k
OR inclusivo de W
con literal
W OR k -> W
IORWF f,d
OR inclusivo de W
con f
W OR f -> d
1, 2
XORWF f,d
OR exclusivo de W
con literal
W XOR k -> W
1, 2
XORLW k
OR exclusivo de W
con f
W XOR f -> d
INCF f,d
Sumar 1 a f
f+1 -> f
1, 2
DECF f,d
Restar 1 a f
f-1 -> f
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
1, 2
RLF f,d
RRF f,d
Rotar F a la derecha
a travs del bit de
Acarreo
COMF f,d
Complementar f
f -> d
0 -> f(b)
1, 2
BSF f,b
1 -> f(b)
1, 2
Saltar si bit b de
registro f es 0
Skip if f(b) = 0
1 (2)
BTFSS f,b
Skip if f(b) = 1
1 (2)
f es 1
La
Disminuir f en 1.
Saltar si el resultado
es 0.
1 (2)
INCFSZ f,d
Incrementar f en 1.
Saltar si el resultado
es 1.
1 (2)
GOTO k
Saltar a una
direccin
k -> PC
CALL k
Llamar a una
subrutina
RETURN
Retornar de una
subrutina
TOS -> PC
RETLW k
RETFIE
Retornar de una
interupcin
DECFSZ f,d
1,
2, 3
1,
2, 3
principal
de
este libro es
proporcionar
la informacin
necesaria
al
usuario para
2
que
sea
capaz
de
utilizar
los
microcontrola
dores en la
prctica. Par
a
Otras instrucciones
evitar
explicaciones
NOP
No operacin
CLRWDT
Reiniciar el
temporizador perro
guardin
TO, PD
Poner en estado de
reposo
TO, PD
SLEEP
idea
pesadas y las
historias
infinitas sobre
las
caracterstica
s tiles de los microcontroladores diferentes, este libro describe el funcionamiento de un modelo particular que pertenece a la clase
media alta. Es PIC16F887 - bastante poderoso para ser digno de atencin y bastante simple para poder ser utilizado por cualquiera.
As, los siguientes captulos describen este microcontrolador en detalle y tambin se refieren a la familia PIC entera..
Todos los microcontroladores PIC utilizan una arquitectura Harvard, lo que quiere decir que su memoria de programa est conectada a
la CPU por ms de 8 lneas. Hay microcontroladores de 12, 14 y 16 bits, dependiendo de la anchura del bus. La siguiente tabla
rmuestra las caractersticas principales de estas tres categoras de los microcontroladores PIC.
Como se puede ver en la tabla de la pgina anterior, salvo los monstruos de 16 bits PIC 24FXXX y PIC 24HXXX - todos los
microcontroladores tienen la arquitectura Harvard de 8 bits y pertenecen a una de las tres grandes grupos. Por eso, dependiendo del
tamao de palabra de programa existen la primera, la segunda y la tercera categora de microcontroladores, es decir
microcontroladores de 12, 14 o 16 bits. Puesto que disponen del ncleo similar de 8 bits, todos utilizan el mismo juego de instrucciones
y el esqueleto bsico de hardware conectado a ms o menos unidades perifricas.
Los microcontroladores PIC con palabras de programa de 14 bits parecen ser la mejor opcin para los principiantes. Aqu est el
porqu...
JUEGO DE INSTRUCCIONES
El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones en total. La razn para un nmero tan reducido
de instrucciones yace en la arquietectura RISC. Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de la
velocidad operativa, la sencillez de la arquitectura y la compacidad del cdigo. La desventaja de la arquitectura RISC es que se espera
del programador que haga frente a estas instrucciones. Por supuesto, esto es relevante slo si se utiliza el lenguaje ensamblador para
la programacin. Este libro se refiere a la programacin en el lenguaje de alto nivel Basic, lo que significa que la mayor pa rte del
trabajo ya fue hecho por alguien ms. As, slo se tienen que utilizar instrucciones relativamente simples.
*1 Si un registro de E/S est modificado, el valor utilizado ser el valor presentado en los pines del microcontrolador.
*2
Si
la
instruccin
se
ejecuta
en
el
registro
TMR
si
d=1,
el
pre-escalador
ser
borrado.
*3 Si el contador de programa est modificado o el resultado de prueba es un uno lgico (1), la instruccin tiene una duracin de dos
ciclos. El segundo ciclo se ejecuta como un NOP