Vous êtes sur la page 1sur 14

Un microcontrolador (abreviado C, UC o MCU) es un circuito integrado programable, capaz

de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios bloques


funcionales, los cuales cumplen una tarea especfica. Un microcontrolador incluye en su
interior las tres principales unidades funcionales de una computadora: unidad central de
procesamiento, memoria y perifricos de entrada/salida.
Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionan a velocidad de
reloj con frecuencias tan bajas como 4 kHz, con un consumo de baja potencia (mW o
microvatios). Por lo general, tendr la capacidad de mantenerse a la espera de un evento
como pulsar un botn o de otra interrupcin; as, el consumo de energa durante el estado de
reposo (reloj de la CPU y los perifricos de la mayora) puede ser slo de nanovatios, lo que
hace que muchos de ellos sean muy adecuados para aplicaciones con batera de larga
duracin. Otros microcontroladores pueden servir para roles de rendimiento crtico, donde sea
necesario actuar ms como un procesador digital de seal (DSP), con velocidades de reloj y
consumo de energa ms altos.
Cuando es fabricado el microcontrolador, no contiene datos en la memoria ROM. Para que
pueda controlar algn proceso es necesario generar o crear y luego grabar en la EEPROM o
equivalente del microcontrolador algn programa, el cual puede ser escrito en lenguaje
ensamblador u otro lenguaje para microcontroladores; sin embargo, para que el programa
pueda ser grabado en la memoria del microcontrolador, debe ser codificado en sistema
numrico hexadecimal que es finalmente el sistema que hace trabajar al microcontrolador
cuando ste es alimentado con el voltaje adecuado y asociado a
dispositivos analgicos y discretos para su funcionamiento.
La arquitectura Von Neumann utiliza el mismo dispositivo de almacenamiento tanto para las
instrucciones como para los datos, siendo la que se utiliza en un ordenador personal porque
permite ahorrar una buena cantidad de lneas de E/S, que son bastante costosas, sobre todo
para aquellos sistemas donde el procesador se monta en algn tipo de zcalo alojado en
una placa madre. Tambin esta organizacin les ahorra a los diseadores de placas madre
una buena cantidad de problemas y reduce el costo de este tipo de sistemas.
En un ordenador personal, cuando se carga un programa en memoria, a ste se le asigna un
espacio de direcciones de la memoria que se divide en segmentos, de los cuales tpicamente
tenderemos los siguientes: cdigo (programa), datos y pila. Es por ello que podemos hablar de
la memoria como un todo, aunque existan distintos dispositivos fsicos en el sistema (disco
duro, memoria RAM, memoria flash, unidad de disco ptico...).
En el caso de los microcontroladores, existen dos tipos de memoria bien definidas: memoria
de datos (tpicamente algn tipo de SRAM) y memoria de programas (ROM, PROM,
EEPROM, flash u de otro tipo no voltil). En este caso la organizacin es distinta a las del
ordenador personal, porque hay circuitos distintos para cada memoria y normalmente no se
utilizan los registros de segmentos, sino que la memoria est segregada y el acceso a cada
tipo de memoria depende de las instrucciones del procesador.
A pesar de que en los sistemas integrados con arquitectura Von Neumann la memoria est
segregada, y existan diferencias con respecto a la definicin tradicional de esta arquitectura;
los buses para acceder a ambos tipos de memoria son los mismos, del procesador solamente
salen el bus de datos, el de direcciones, y el de control. Como conclusin, la arquitectura no
ha sido alterada, porque la forma en que se conecta la memoria al procesador sigue el mismo
principio definido en la arquitectura bsica.
Algunas familias de microcontroladores como la Intel 8051 y la Z80 implementan este tipo de
arquitectura, fundamentalmente porque era la utilizada cuando aparecieron los primeros
microcontroladores.
La arquitectura Von Neumann, tambin conocida como modelo de Von
Neumann o arquitectura Princeton, es una arquitectura de computadoras basada en la
descrita en 1945 por el matemtico y fsico John von Neumann y otros, en el primer borrador
de un informe sobre el EDVAC.1 Este describe una arquitectura de diseo para un computador
digital electrnico con partes que constan de una unidad de procesamiento que contiene
una unidad aritmtico lgica y registros del procesador, una unidad de control que contiene
un registro de instrucciones y un contador de programa, una memoria para almacenar tanto
datos como instrucciones, almacenamiento masivo externo, y mecanismos de entrada y
salida.1 2 El significado ha evolucionado hasta ser cualquier computador de programa
almacenado en el cual no pueden ocurrir una extraccin de instruccin y una operacin de
datos al mismo tiempo, ya que comparten un bus en comn. Esto se conoce como el cuello de
botella Von Neumann y muchas veces limita el rendimiento del sistema.3
El diseo de una arquitectura Von Neumann es ms simple que la arquitectura Harvard ms
moderna, que tambin es un sistema de programa almacenado, pero tiene un conjunto
dedicado de direcciones y buses de datos para leer datos desde memoria y escribir datos en
la misma, y otro conjunto de direcciones y buses de datos para ir a buscar instrucciones.
Un computador digital de programa almacenado es una que mantiene sus instrucciones de
programa, as como sus datos, en memoria de acceso aleatorio (RAM) de lectura-escritura.
Las computadoras de programa almacenado representaron un avance sobre los ordenadores
controlados por programas de la dcada de 1940, como la Colossus y la ENIAC, que fueron
programadas por ajustando interruptores e insertando parches, conduciendo datos de la ruta y
para controlar las seales entre las distintas unidades funcionales. En la gran mayora de las
computadoras modernas, se utiliza la misma memoria tanto para datos como para
instrucciones de programa, y la distincin entre Von Neumann vs. Harvard se aplica a la
arquitectura de memoria cach, pero no a la memoria principal

La otra variante es la arquitectura Harvard, y por excelencia la utilizada en


supercomputadoras, en los microcontroladores, y sistemas integrados en general. En este
caso, adems de la memoria, el procesador tiene los buses segregados, de modo que cada
tipo de memoria tiene un bus de datos, uno de direcciones y uno de control.
La ventaja fundamental de esta arquitectura es que permite adecuar el tamao de los buses a
las caractersticas de cada tipo de memoria; adems, el procesador puede acceder a cada
una de ellas de forma simultnea, lo que se traduce en un aumento significativo de la
velocidad de procesamiento. Tpicamente los sistemas con esta arquitectura pueden ser dos
veces ms rpidos que sistemas similares con arquitectura Von Neumann.
La desventaja est en que consume muchas lneas de E/S del procesador; por lo que en
sistemas donde el procesador est ubicado en su propio encapsulado, solo se utiliza en
supercomputadoras. Sin embargo, en los microcontroladores y otros sistemas integrados,
donde usualmente la memoria de datos y programas comparten el mismo encapsulado que el
procesador, este inconveniente deja de ser un problema serio y es por ello que encontramos
la arquitectura Harvard en la mayora de los microcontroladores.
Por eso es importante recordar que un microcontrolador se puede configurar de diferentes
maneras, siempre y cuando se respete el tamao de memoria que este requiera para su
correcto funcionamiento.
La arquitectura Harvard es una arquitectura de computadora con pistas
de almacenamiento y de seal fsicamente separadas para las instrucciones y para los datos.
El trmino proviene de la computadora Harvard Mark I basada en rels, que almacenaba las
instrucciones sobre cintas perforadas (de 24 bits de ancho) y los datos en interruptores
electromecnicos. Estas primeras mquinas tenan almacenamiento de datos totalmente
contenido dentro la unidad central de proceso, y no proporcionaban acceso al almacenamiento
de instrucciones como datos. Los programas necesitaban ser cargados por un operador; el
procesador no podra arrancar por s mismo.
Hoy en da (2017), la mayora de los procesadores implementan dichas vas de seales
separadas por motivos de rendimiento, pero en realidad implementan una arquitectura
Harvard modificada, para que puedan soportar tareas tales como la carga de un programa
desde una unidad de disco como datos para su posterior ejecucin.
La principal ventaja de la arquitectura Harvard pura acceso simultneo a ms de una
memoria del sistemase ha reducido por procesadores Harvard modificados utilizando
sistemas de cach de CPU modernos. Las mquinas de arquitectura Harvard relativamente
puras utilizan principalmente en aplicaciones cuyas compensaciones, como los costes y el
ahorro de energa de cachs derivadas de la omisin de cach, superan a las sanciones de
programacin desde ofreciendo distintos espacios de cdigo hasta espacios de direccin de
datos.

En general, los procesadores de seal digital (DSPs) ejecutan pequeos algoritmos


altamente optimizados de procesamiento de audio o vdeo. Evitan cachs porque su
comportamiento debe ser extremadamente reproducible. Las dificultades de lidiar con
mltiples espacios de direcciones son una preocupacin secundaria a la velocidad de
ejecucin. En consecuencia, algunos DSPs cuentan con mltiples memorias de datos en
distintos espacios de direcciones para facilitar tanto el procesamiento SIMD como el
VLIW. A modo de ejemplo, los procesadores Texas Instruments TMS320 C55x, cuentan
con varios buses de datos en paralelo (dos de escritura, tres de lectura) y un bus de
instrucciones.

Los microcontroladores se caracterizan por tener pequeas cantidades de programa


(memoria flash) y memoria de datos (SRAM), sin cache, y aprovechan la arquitectura de
Harvard para acelerar el procesamiento de la instruccin simultnea y el acceso a datos.
El almacenamiento separado significa que el programa y memorias de datos pueden
presentar diferentes anchos de bit, por ejemplo, utilizando instrucciones de 16 bits de
ancho y los datos de ancho de 8 bits. Tambin significa que la instruccin de
captacin previa puede llevarse a cabo en paralelo con otras actividades. Entre los
ejemplos se incluyen el AVR de Atmel Corp y la PIC de Microchip Technology, Inc..
Incluso en estos casos, es comn emplear instrucciones especiales con el fin de acceder a la
memoria del programa como si fueran tablas de datos de solo lectura, o para la reprogramarla;
esos procesadores son de arquitectura Harvard modificada.

REGISTROS
Son un espacio de memoria muy reducido pero necesario para cualquier microprocesador, de
aqu se toman los datos para varias operaciones que debe realizar el resto de los circuitos del
procesador. Los registros sirven para almacenar los resultados de la ejecucin de
instrucciones, cargar datos desde la memoria externa o almacenarlos en ella.
Aunque la importancia de los registros parezca trivial, no lo es en absoluto. De hecho una
parte de los registros, la destinada a los datos, es la que determina uno de los parmetros
ms importantes de cualquier microprocesador. Cuando escuchamos que un procesador es
de 4, 8, 16, 32 o 64 bits, nos estamos refiriendo a procesadores que realizan sus operaciones
con registros de datos de ese tamao, y por supuesto, esto determina muchas de las
potencialidades de estas mquinas.
Mientras mayor sea el nmero de bits de los registros de datos del procesador, mayores sern
sus prestaciones, en cuanto a poder de cmputo y velocidad de ejecucin, ya que este
parmetro determina la potencia que se puede incorporar al resto de los componentes del
sistema, por ejemplo, no tiene sentido tener una ALU de 16 bits en un procesador de 8 bits.
Por otro lado un procesador de 16 bits, puede que haga una suma de 16 bits en un solo ciclo
de mquina, mientras que uno de 8 bits deber ejecutar varias instrucciones antes de tener el
resultado, aun cuando ambos procesadores tengan la misma velocidad de ejecucin para sus
instrucciones. El procesador de 16 bits ser ms rpido porque puede hacer el mismo tipo de
tareas que uno de 8 bits, en menos tiempo.
UNIDAD DE CONTROL
Esta unidad es de las ms importantes en el procesador, en ella recae la lgica necesaria para
la decodificacin y ejecucin de las instrucciones, el control de los registros, la ALU, los buses
y cuanta cosa ms se quiera meter en el procesador.
La unidad de control es uno de los elementos fundamentales que determinan las prestaciones
del procesador, ya que su tipo y estructura determina parmetros tales como el tipo
de conjunto de instrucciones, velocidad de ejecucin, tiempo del ciclo de mquina, tipo de
buses que puede tener el sistema, manejo de interrupciones y un buen nmero de cosas ms
que en cualquier procesador van a parar a este bloque.
Por supuesto, las unidades de control son el elemento ms complejo de un procesador y
normalmente estn divididas en unidades ms pequeas trabajando de conjunto. La unidad de
control agrupa componentes tales como la unidad de decodificacin, unidad de ejecucin,
controladores de memoria cach, controladores de buses, controlador de interrupciones,
pipelines, entre otros elementos, dependiendo siempre del tipo de procesador.

Unidad aritmtico-lgica (ALU)


Como los procesadores son circuitos que hacen bsicamente operaciones lgicas y
matemticas, se le dedica a este proceso una unidad completa, con cierta independencia.
Aqu es donde se realizan las sumas, restas, y operaciones lgicas tpicas del lgebra de
Boole.
Actualmente este tipo de unidades ha evolucionado mucho y los procesadores ms modernos
tienen varias ALU, especializadas en la realizacin de operaciones complejas como las
operaciones en coma flotante. De hecho en muchos casos le han cambiado su nombre por el
de coprocesador matemtico, aunque este es un trmino que surgi para dar nombre a un
tipo especial de procesador que se conecta directamente al procesador ms tradicional.
Su impacto en las prestaciones del procesador es tambin importante porque, dependiendo de
su potencia, tareas ms o menos complejas, pueden hacerse en tiempos muy cortos, como
por ejemplo, los clculos en coma flotante.

Buses
Son el medio de comunicacin que utilizan los diferentes componentes del procesador para
intercambiar informacin entre s, eventualmente los buses o una parte de ellos estarn
reflejados en los pines del encapsulado del procesador.
En el caso de los microcontroladores, no es comn que los buses estn reflejados en el
encapsulado del circuito, ya que estos se destinan bsicamente a las E/S de propsito general
y perifricos del sistema.
Existen tres tipos de buses:
Direccin: Se utiliza para seleccionar al dispositivo con el cual se quiere trabajar o en el
caso de las memorias, seleccionar el dato que se desea leer o escribir.
Datos: Se utiliza para mover los datos entre los dispositivos de hardware (entrada y
salida).
Control: Se utiliza para gestionar los distintos procesos de escritura lectura y controlar la
operacin de los dispositivos del sistema.

Memoria
Anteriormente se ha visto que la memoria en los microcontroladores debe estar ubicada
dentro del mismo encapsulado, esto es as la mayora de las veces, porque la idea
fundamental es mantener el grueso de los circuitos del sistema dentro de un solo integrado.
En los microcontroladores la memoria no es abundante, aqu no encontrar Gigabytes de
memoria como en las computadoras personales. Tpicamente la memoria de programas no
exceder de 16 K-localizaciones de memoria no voltil (flash o eprom) para contener los
programas.
La memoria RAM est destinada al almacenamiento de informacin temporal que ser
utilizada por el procesador para realizar clculos u otro tipo de operaciones lgicas. En el
espacio de direcciones de memoria RAM se ubican adems los registros de trabajo del
procesador y los de configuracin y trabajo de los distintos perifricos del microcontrolador. Es
por ello que en la mayora de los casos, aunque se tenga un espacio de direcciones de un
tamao determinado, la cantidad de memoria RAM de que dispone el programador para
almacenar sus datos es menor que la que puede direccionar el procesador.
El tipo de memoria utilizada en las memorias RAM de los microcontroladores es SRAM, lo que
evita tener que implementar sistemas de refrescamiento como en el caso de las computadoras
personales, que utilizan gran cantidad de memoria, tpicamente alguna tecnologa DRAM. A
pesar de que la memoria SRAM es ms costosa que la DRAM, es el tipo adecuado para los
microcontroladores porque stos poseen pequeas cantidades de memoria RAM.
En el caso de la memoria de programas se utilizan diferentes tecnologas, y el uso de una u
otra depende de las caractersticas de la aplicacin a desarrollar, a continuacin se describen
las cinco tecnologas existentes, que mayor utilizacin tienen o han tenido:

Mscara ROM. En este caso no se graba el programa en memoria sino que el


microcontrolador se fabrica con el programa, es un proceso similar al de produccin de los
CD comerciales mediante masterizacin. El costo inicial de producir un circuito de este
tipo es alto, porque el diseo y produccin de la mscara es un proceso costoso, sin
embargo, cuando se necesitan varios miles o incluso cientos de miles de
microcontroladores para una aplicacin determinada, como por ejemplo, algn
electrodomstico, el costo inicial de produccin de la mscara y el de fabricacin del
circuito se distribuye entre todos los circuitos de la serie, y el costo final de sta es
bastante menor que el de sus semejantes con otro tipo de memoria.
Memoria PROM (Programmable Read-Only Memory) tambin conocida como OTP (One
Time Programmable). Este tipo de memoria tambin es conocida como PROM o
simplemente ROM.
Los microcontroladores con memoria OTP se pueden programar una sola vez, con
algn tipo de programador. Se utilizan en sistemas donde el programa no requiera
futuras actualizaciones y para series relativamente pequeas, donde la variante de
mscara sea muy costosa, tambin para sistemas que requieren serializacin de
datos, almacenados como constantes en la memoria de programas.
Memoria EPROM (Erasable Programmable Read Only Memory). Los
microcontroladores con este tipo de memoria son muy fciles de identificar porque su
encapsulado es de cermica y llevan encima una ventanita de vidrio desde la cual
puede verse la oblea de silicio del microcontrolador.
Se fabrican as porque la memoria EPROM es reprogramable, pero antes debe
borrase, y para ello hay que exponerla a una fuente de luz ultravioleta, el proceso de
grabacin es similar al empleado para las memorias OTP.
Al aparecer tecnologas menos costosas y ms flexibles, como las memorias
EEPROM y FLASH, este tipo de memoria han cado en desuso, se utilizaban en
sistemas que requieren actualizaciones del programa y para los procesos de
desarrollo y puesta a punto.
EPROM son las siglas de Erasable Programmable Read-Only
Memory (ROM programable borrable). Es un tipo de chip de memoria ROM no
voltil inventado por el ingeniero Dov Frohman de Intel1 . Est formada
por celdas de FAMOS (Floating Gate Avalanche-Injection Metal-Oxide Semiconductor)
o "transistores de puerta flotante", cada uno de los cuales viene de fbrica sin carga,
por lo que son ledos como 1 (por eso, una EPROM sin grabar se lee como FF en
todas sus celdas).

EEPROM (Electrical Erasable Programmable Read Only Memory). Fueron el


sustituto natural de las memorias EPROM, la diferencia fundamental es que
pueden ser borradas elctricamente, por lo que la ventanilla de cristal de
cuarzo y los encapsulados cermicos no son necesarios.
Al disminuir los costos de los encapsulados, los microcontroladores con este tipo de
memoria se hicieron ms baratos y cmodos para trabajar que sus equivalentes con
memoria EPROM.
Otra caracterstica destacable de este tipo de microcontrolador es que fue en ellos
donde comenzaron a utilizarse los sistemas de programacin en el sistema que evitan
tener que sacar el microcontrolador de la tarjeta que lo aloja para hacer
actualizaciones al programa.
EEPROM o EPROM son las siglas de Electrically Erasable Programmable Read-Only
Memory (ROM programable y borrable elctricamente). Es un tipo de memoria ROM que
puede ser programada, borrada y reprogramada elctricamente, a diferencia de
la EPROM que ha de borrarse mediante un aparato que emite rayos ultravioleta. Son
memorias no voltiles.
Las celdas de memoria de una EEPROM estn constituidas por un transistor MOS, que tiene
una compuerta flotante (estructura SAMOS), su estado normal est cortado y la salida
proporciona un 1 lgico.
Aunque una EEPROM puede ser leda un nmero ilimitado de veces, slo puede ser borrada y
reprogramada entre 100.000 y un milln de veces.
Estos dispositivos suelen comunicarse mediante protocolos como IC, SPI y Microwire. En
otras ocasiones, se integra dentro de chips como microcontroladores y DSPs para lograr una
mayor rapidez.
La memoria flash es una forma avanzada de EEPROM creada por el Dr. Fujio Masuoka
mientras trabajaba para Toshiba en 1984 y fue presentada en la Reunin de Aparatos
Electrnicos de la IEEE de 1984. Intel vio el potencial de la invencin y en 1988 lanz el
primer chip comercial de tipo NOR.
Memoria flash. En el campo de las memorias reprogramables para
microcontroladores, son el ltimo avance tecnolgico en uso a gran
escala, y han sustituido a los microcontroladores con memoria
EEPROM.
A las ventajas de las memorias flash se le adicionan su gran densidad respecto a sus
predecesoras lo que permite incrementar la cantidad de memoria de programas a un
costo muy bajo. Pueden adems ser programadas con las mismas tensiones de
alimentacin del microcontrolador, el acceso en lectura y la velocidad de programacin
es superior, disminucin de los costos de produccin, entre otras.
Lo ms habitual es encontrar que la memoria de programas y datos
est ubicada toda dentro del microcontrolador, de hecho, actualmente
son pocos los microcontroladores que permiten conectar memoria de
programas en el exterior del encapsulado. Las razones para estas
limitaciones estn dadas porque el objetivo fundamental es obtener
la mayor integracin posible y conectar memorias externas consume
lneas de E/S que son uno de los recursos ms preciados de los
microcontroladores.
A pesar de lo anterior existen familias como la Intel 8051 cuyos
microcontroladores tienen la capacidad de ser expandidos en una
variada gama de configuraciones para el uso de memoria de
programas externa. En el caso de los PIC, estas posibilidades estn
limitadas slo a algunos microcontroladores de la gama alta, la Figura
5 muestra algunas de las configuraciones para memoria de programa
que podemos encontrar en los microcontroladores. La configuracin
(a) es la tpica y podemos encontrarla casi en el 100% de los
microcontroladores. La configuracin (b) es poco frecuente y
generalmente se logra configurando al microcontrolador para
sacrificar la memoria de programas interna, sin embargo el Intel
8031 es un microcontrolador sin memoria de programas interna. La
configuracin (c) es la que se encuentra habitualmente en los
microcontroladores que tienen posibilidades de expandir su memoria
de programas como algunos PIC de gama alta.
Cuando se requiere aumentar la cantidad de memoria de datos, lo
ms frecuente es colocar dispositivos de memoria externa en forma
de perifricos, de esta forma se pueden utilizar memorias RAM,
FLASH o incluso discos duros como los de los ordenadores
personales, mientras que para los clculos y dems operaciones que
requieran almacenamiento temporal de datos se utiliza la memoria
RAM interna del microcontrolador. Esta forma de expandir la memoria
de datos est determinada, en la mayora de los casos, por el tipo de
repertorio de instrucciones del procesador y porque permite un
elevado nmero de configuraciones distintas, adems del
consiguiente ahorro de lneas de E/S que se logra con el uso de
memorias con buses de comunicacin serie.
La memoria flash derivada de la memoria EEPROM permite la
lectura y escritura de mltiples posiciones de memoria en la misma
operacin. Gracias a ello, la tecnologa flash, siempre mediante
impulsos elctricos, permite velocidades de funcionamiento muy
superiores frente a la tecnologa EEPROM primigenia, que slo
permita actuar sobre una nica celda de memoria en cada operacin
de programacin. Se trata de la tecnologa empleada en los
dispositivos denominados memoria USB.
INTERRUPCIONES
Las interrupciones son esencialmente llamadas a subrutina generadas por los dispositivos
fsicos, al contrario de las subrutinas normales de un programa en ejecucin. Como el salto de
subrutina no es parte del hilo o secuencia de ejecucin programada, el controlador guarda el
estado del procesador en la pila de memoria y entra a ejecutar un cdigo especial llamado
"manejador de interrupciones" que atiende al perifrico especfico que gener la interrupcin.
Al terminar la rutina, una instruccin especial le indica al procesador el fin de la atencin de la
interrupcin. En ese momento el controlador restablece el estado anterior, y el programa que
se estaba ejecutando antes de la interrupcin sigue como si nada hubiese pasado. Las rutinas
de atencin de interrupciones deben ser lo ms breves posibles para que el rendimiento del
sistema sea satisfactorio, por que normalmente cuando una interrupcin es atendida, todas las
dems interrupciones estn en espera.
Imagine que est esperando la visita de un amigo, al que llamaremos Juan. Usted y Juan han
acordado que cuando l llegue a su casa esperar pacientemente a que le abra la puerta.
Juan no debe tocar a la puerta porque alguien en la casa duerme y no quiere que le
despierten.
Ahora usted ha decidido leer un libro mientras espera a que Juan llegue a la casa, y para
comprobar si ha llegado, cada cierto tiempo detiene la lectura, marca la pgina donde se
qued, se levanta y va hasta la puerta, abre y comprueba si Juan ha llegado, si ste todava
no est en la puerta, esperar unos minutos, cerrar la puerta y regresar a su lectura durante
algn tiempo.
Como ver este es un mtodo poco eficiente para esperar a Juan porque requiere que deje la
lectura cada cierto tiempo y vaya hasta la puerta a comprobar si l ha llegado, adems debe
esperar un rato si todava no llega. Y por si fuera poco, imagine que Juan no llega nunca
porque se le present un problema, tuvo que cancelar la cita y no pudo avisarle a tiempo, o
peor, que Juan ha llegado a la puerta un instante despus que usted la cerraba. Juan,
respetando lo acordado, espera un tiempo, pero se cansa de esperar a que le abran y decide
marcharse porque cree que ya usted no est en la casa o no puede atenderlo. A este mtodo
de atender la llegada de Juan lo llamaremos encuesta.

Perifricos
Cuando observamos la organizacin bsica de un microcontrolador, sealamos que dentro de
este se ubican un conjunto de perifricos. A continuacin describiremos algunos de los
perifricos que con mayor frecuencia encontraremos en los microcontroladores.

Entradas y salidas de propsito general


Tambin conocidos como puertos de E/S, generalmente agrupadas en puertos de 8 bits de
longitud, permiten leer datos del exterior o escribir en ellos desde el interior del
microcontrolador, el destino habitual es el trabajo con dispositivos simples como rels, LED, o
cualquier otra cosa que se le ocurra al programador.
Algunos puertos de E/S tienen caractersticas especiales que le permiten manejar salidas con
determinados requerimientos de corriente, o incorporan mecanismos especiales de
interrupcin para el procesador.
Tpicamente cualquier pin de E/S puede ser considerada E/S de propsito general, pero como
los microcontroladores no pueden tener infinitos pines, ni siquiera todos los pines que
queramos, las E/S de propsito general comparten los pines con otros perifricos. Para usar
un pin con cualquiera de las caractersticas a l asignadas debemos configurarlo mediante los
registros destinados a ellos.

Temporizadores y contadores
Son circuitos sincrnicos para el conteo de los pulsos que llegan a su poder para conseguir la
entrada de reloj. Si la fuente de un gran conteo es el oscilador interno del microcontrolador es
comn que no tengan un pin asociado, y en este caso trabajan como temporizadores. Por otra
parte, cuando la fuente de conteo es externa, entonces tienen asociado un pin configurado
como entrada, este es el modo contador.
Los temporizadores son uno de los perifricos ms habituales en los microcontroladores y se
utilizan para muchas tareas, como por ejemplo, la medicin de frecuencia, implementacin de
relojes, para el trabajo de conjunto con otros perifricos que requieren una base estable de
tiempo entre otras funcionalidades. Es frecuente que un microcontrolador tpico incorpore ms
de un temporizador/contador e incluso algunos tienen arreglos de contadores. Como veremos
ms adelante este perifrico es un elemento casi imprescindible y es habitual que tengan
asociada alguna interrupcin. Los tamaos tpicos de los registros de conteo son 8 y 16 bits,
pudiendo encontrar dispositivos que solo tienen temporizadores de un tamao o con ms
frecuencia con ambos tipos de registro de conteo.

Conversor analgico/digital
Como es muy frecuente el trabajo con seales analgicas, stas deben ser convertidas a
digital y por ello muchos microcontroladores incorporan un conversor analgico-digital, el cual
se utiliza para tomar datos de varias entradas diferentes que se seleccionan mediante un
multiplexor.
Las resoluciones ms frecuentes son 8 y 10 bits, que son suficientes para aplicaciones
sencillas. Para aplicaciones en control e instrumentacin estn disponibles resoluciones de
12bit, 16bit y 24bit.6Tambin es posible conectar un convertidor externo, en caso de
necesidad.

Puertos de comunicacin
Puerto serie
Este perifrico est presente en casi cualquier microcontrolador, normalmente en forma
de UART (Universal Asynchronous Receiver Transmitter) o USART (Universal Synchronous
Asynchronous Receiver Transmitter) dependiendo de si permiten o no el modo sincrnico de
comunicacin.
El destino comn de este perifrico es la comunicacin con otro microcontrolador o con una
PC y en la mayora de los casos hay que agregar circuitos externos para completar la interfaz
de comunicacin. La forma ms comn de completar el puerto serie es para comunicarlo con
una PC mediante la interfaz EIA-232 (ms conocida como RS-232), es por ello que muchas
personas se refieren a la UART o USART como puerto serie RS-232, pero esto constituye un
error, puesto que este perifrico se puede utilizar para interconectar dispositivos mediante
otros estndares de comunicacin. En aplicaciones industriales se utiliza preferiblemente RS-
485 por sus superior alcance en distancia, velocidad y resistencia al ruido.

El Bus SPI (del ingls Serial Peripheral Interface) es un estndar de comunicaciones, usado
principalmente para la transferencia de informacin entre circuitos integrados en equipos
electrnicos. El bus de interfaz de perifricos serie o bus SPI es un estndar para controlar
casi cualquier dispositivo electrnico digital que acepte un flujo de bits serie regulado por un
reloj (comunicacin sincrnica).
Incluye una lnea de reloj, dato entrante, dato saliente y un pin de chip select, que conecta o
desconecta la operacin del dispositivo con el que uno desea comunicarse. De esta forma,
este estndar permite multiplexar las lneas de reloj.
Muchos sistemas digitales tienen perifricos que necesitan existir pero no ser rpidos. La
ventajas de un bus serie es que minimiza el nmero de conductores, pines y el tamao del
circuito integrado. Esto reduce el coste de fabricar, montar y probar la electrnica. Un bus de
perifricos serie es la opcin ms flexible cuando se tiene tipos diferentes de perifricos serie.
El hardware consiste en seales de reloj, data in, data out y chip select para cada circuito
integrado que tiene que ser controlado. Casi cualquier dispositivo digital puede ser controlado
con esta combinacin de seales. Los dispositivos se diferencian en un nmero predecible de
formas. Unos leen el dato cuando el reloj sube otros cuando el reloj baja. Algunos lo leen en el
flanco de subida del reloj y otros en el flanco de bajada. Escribir es casi siempre en la
direccin opuesta de la direccin de movimiento del reloj. Algunos dispositivos tienen dos
relojes. Uno para capturar o mostrar los datos y el otro para el dispositivo interno.
I2 C
Un circuito interintegrado (IC, del ingls Inter-Integrated Circuit) es un bus serie de datos
desarrollado en 1982 por Philips Semiconductors (hoy NXP Semiconductors, parte
de Qualcomm1 ). Se utiliza principalmente internamente para la comunicacin entre diferentes
partes de un circuito, por ejemplo, entre un controlador y circuitos perifricos integrados.
El sistema original fue desarrollado por Philips a principios de 1980 con el fin de controlar
varios chips en televisores de manera sencilla. Desde mediados de 1990 el IC tambin es
utilizado por algunos competidores para designar los sistemas compatibles IC Philips,
incluyendo Siemens AG (posteriormente Infineon Technologies AG), NEC, STMicroelectronics,
Motorola (Freescale ms adelante), Intersil, etc. Hay un total de mil circuitos integrados
diferentes de ms de 50 fabricantes (segn datos de 2014).
Atmel introdujo por motivos de licencia la designacin TWI (interfaz de dos hilos) actualmente
utilizada por algunos otros fabricantes. Desde el punto de vista tcnico, TWI e IC son
idnticos. Sin embargo, el 1 de octubre 2006, la patente original caduc, as que ya no hay
derechos de autor para el uso del trmino IC. IC no es tampoco una marca comercial
registrada de NXP Semiconductors, la proteccin de marca es slo para el logotipo.

Comparadores

Son circuitos analgicos basados en amplificadores operacionales que tienen la caracterstica


de comparar dos seales analgicas y dar como salida los niveles lgicos 0 o 1 en
dependencia del resultado de la comparacin. Es un perifrico muy til para detectar cambios
en seales de entrada de las que solamente nos interesa conocer cuando est en un rango
determinado de tensin.

Modulador de ancho de pulsoS


Los PWM (Pulse Width Modulator) son perifricos muy tiles sobre todo para el control de
motores, sin embargo hay un grupo de aplicaciones que pueden realizarse con este perifrico,
dentro de las cuales podemos citar: inversin DC/AC para UPS, conversin digital analgica
D/A, control regulado de luz (dimming) entre otras.

Memoria de datos no voltil


Muchos microcontroladores han incorporado estos tipos de memoria como un perifrico ms,
para el almacenamiento de datos de configuracin o de los procesos que se controlan. Esta
memoria es independiente de la memoria de datos tipo RAM o la memoria de programas, en
la que se almacena el cdigo del programa a ejecutar por el procesador del microcontrolador.
Muchos de los microcontroladores PIC incluyen este tipo de memoria, tpicamente en forma de
memoria EEPROM, incluso algunos de ellos permiten utilizar parte de la memoria de
programas como memoria de datos no voltil, por lo que el procesador tiene la capacidad de
escribir en la memoria de programas como si sta fuese un perifrico ms.

Atmega328
El ATmega328p es un chip microcontrolador creado por Atmel y pertenece a la
serie megaAVR.

El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que est basado un
microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leer-
mientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 lneas de E/S de propsito
general, 32 registros de proceso general, tres temporizadores flexibles/contadores con modo
de comparacin, interrupciones internas y externas, programador de modo USART, una
interfaz serial orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor
A/D (canales en TQFP y QFN/MLF packages), "watchdog timer" programable
con oscilador interno, y cinco modos de ahorro de energa seleccionables por software. El
dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la ejecucin de poderosas instrucciones
en un solo ciclo de reloj, el dispositivo alcanza una respuesta de 1 MIPS, balanceando
consumo de energa y velocidad de proceso .

Parmetros

PARMETROS VALORES

Flash 32 Kbytes

SRAM 2 Kbytes

Cantidad Pines 28

Frecuencia mxima de operacin 20 MHz

CPU 8-bit AVlR

Pines mximos de E/S 23


Interrupciones internas 24

SPI 1

UART 1

Canales ADC 8

Resolucion de ADC 10

Eeprom 1K

Canales PWM 6

Voltaje de operacion 1.8-5.5 v

Timers 3

APLICACIONES
Hoy el ATmega328 se usa comnmente en mltiples proyectos y sistemas autnomos donde
un micro controlador simple, de bajo consumo, bajo costo es requerido. Tal vez la
implementacin ms comn [cita requerida] de este chip es en la popular plataforma Arduino, en
sus modelos Uno y Nano.

Usando el ATmega328 como una alternativa a Arduino


Una gua fcil de como usar el Atmega328 como una alternativa a Arduino puede ser
encontrada. Adems tambin se encuentra el ATmega328p (pico power) que consiste en un
ahorro de energa que es tan solo una caracterstica adicional del ATmega328 pero su
funcionamiento es el mismo.

1 Base de tiempos El circuito de base de tiempos est formado por tres bloques, cada uno de ellos
con un registro asociado: El contador. Es un contador ascendente o descendente de 16 o 32 bits.
Es el corazn del timer. Tiene asociado el Counter Register (TIMx_CNT), en el que se puede leer y
escribir. El contador se incrementa o decrementa en una unidad cuando lega un flanco del
siguiente bloque. El prescaler. Es un divisor de frecuencia programable. En realidad es un timer
dentro del timer. Tiene un registro asociado, el Prescaler Register (TIMx_PSC). La frecuencia del
reloj a la salida del prescaler sigue la frmula de la ecuacin 1, por lo que el valor a escribir en el
prescaler vendr dado por la ecuacin 2. +1 = TIMxPSC CK CK PSC CNT Ecuacin 1. Frecuencia de
salida del prescaler. = 1 PSC CNT CK CK TIMxPSC Ecuacin 2. Clculo del valor del prescaler.
Donde: o CK_PSC es la frecuencia de entrada al prescaler (Clock Prescaler) o CK_CNT es la
frecuencia de salida del prescaler (Clock Counter) o TIMx_PSC es el valor contenido en el Prescaler
Register El registro de autorecarga, Auto-Reload Register (TIMx_ARR). Es un registro que
almacena el periodo que va a contar el timer. El funcionamiento es diferente si la cuenta es
ascendente o descendente. o Contador ascendente. El valor del contador crece hasta que alcanza
al valor contenido en el TIMx_ARR. En la siguiente cuenta el contador se pone a cero y vuelve a
empezar. o Contador descendente. El valor del contador disminuye hasta llegar a 0. En la siguiente
cuenta se escribe el contenido de TIMx_ARR en el contador y se vuelve a empezar. En la siguiente
figura se pueden ver los tres bloques de la base de tiempos. Est extrada de [1]. Figura 1.
Diagrama de bloques del circuito de base de tiempos 4.2 Y esto para qu sirve? Pues para medir
tiempos. Lo importante de un timer es la capacidad para medir un tiempo con tanta precisin
como queramos (dentro de los lmites del timer). Supongamos, por ejemplo, que queremos
generar un pulso de 10ms y queremos que la precisin sea de 1ms. Con esta precisin el contador
debe hacer 10 cuentas de 1ms cada una, por lo que en TIM_x_ARR deberamos escribir el nmero
mximo de cuentas menos uno (9 = 10-1) y en TIM_x_PSC deberamos escribir el divisor necesario
para conseguir que el contador cuente con una frecuencia de 1KHz (1/1ms). A partir de aqu se
plantean las siguientes preguntas al lector: Cul sera el tiempo mximo y mnimo que podra
medir un timer como este modificando slo TIM_x_ARR? Cmo tendramos que modificar estos
dos parmetros si queremos que la precisin sea de 1us? Cul sera la precisin mxima que
podemos alcanzar si fijamos el tiempo de cuenta en 10ms? 4.3 Interrupciones Para sincronizar los
eventos del timer con la ejecucin del programa principal podemos utilizar interrupciones. El timer
tiene varias fuentes posibles de interrupcin. Dentro de la base de tiempos se puede generar una
interrupcin cuando se produzca un evento de actualizacin. Esto quiere decir, si est funcionado
en modo creciente, cuando el contador alcance su cuenta mxima. En el instante en que la cuenta
pasa del valor mximo a cero se genera un evento de actualizacin. Si se ha habilitado la
interrupcin por actualizacin, este evento producir una interrupcin y se comenzar a ejecutar
el cdigo de la funcin de tratamiento de esta interrupcin. Hay que recordar que en el STM32F4,
para habilitar una interrupcin es necesario habilitarla en el perifrico y habilitar el canal
correspondiente en el controlador de interrupciones (NVIC). Por ltimo, en la funcin de
tratamiento de la interrupcin ser necesario borrar el flag correspondiente al evento de
actualizacin. 4.4 Implementacin, libreras. Para implementar un programa que utilice los timers
podemos utilizar las libreras de perifricos que nos proporciona el fabricante del
microcontrolador. En concreto la librera stm32f4xx_tim incluye funciones para tratamiento de
timers. Los pasos para utilizar la base de tiempos son los siguientes: Habilitar el reloj del
perifrico con la funcin RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) Rellenar
una estructura del tipo TIM_TimeBaseInitStruct con los parmetros deseados. Llamar a la
funcin TIM_TimeBaseInit(TIMx, &TIM_TimeBaseInitStruct) para inicializar la base de tiempos con
los parmetros configurados en el paso anterior. Habiltar el NVIC si se van a generar
interrupciones. Habilitar la interrupcin de actualizacin con la funcin TIM_ITConfig(TIMx,
TIM_IT_Update) Llamar a la funcin TIM_Cmd(ENABLE) para poner en marcha el timer. Por
ltimo, si se han configurado las interrupciones, cuando el timer alcance el valor almacenado en el
registro TIM_x_ARR se ejecutar automticamente la funcin asociada al la interrupcin, donde
habr que borrar el flag que ha

Vous aimerez peut-être aussi