Académique Documents
Professionnel Documents
Culture Documents
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.
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:
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.
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
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
SPI 1
UART 1
Canales ADC 8
Resolucion de ADC 10
Eeprom 1K
Canales PWM 6
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.
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