Sistemas Embebidos Para El Auto
-
Upload
abel-diaz-olivares -
Category
Documents
-
view
59 -
download
1
Transcript of Sistemas Embebidos Para El Auto
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
1
PRIMERA UNIDAD. INTRODUCCION A LOS SISTEMAS
EMBEBIDOS.
1.1 Qu es un sistema embebido y aplicaciones?
Un sistema embebido (SE) o sistema empotrado lo vamos a definir como un sistema
electrnico diseado especficamente para realizar unas determinadas funciones,
habitualmente formando parte de un sistema de mayor entidad. La caracterstica principal
es que emplea para ello uno o varios procesadores digitales (CPUs) en formato
microprocesador, microcontrolador o DSP lo que le permite aportar inteligencia al sistema anfitrin al que ayuda a gobernar y del que forma parte.
En el diseo de un sistema embebido se suelen implicar ingenieros y tcnicos
especializados tanto en el diseo electrnico hardware como el diseo del software. A su
vez tambin se requerir la colaboracin de los especialistas en el segmento de usuarios de
tales dispositivos.
Hardware
Normalmente un sistema embebido se trata de un mdulo electrnico alojado dentro de
un sistema de mayor entidad (host o anfitrin) al que ayuda en la realizacin tareas tales como el procesamiento de informacin generada por sensores, el control de actuadores, etc.
El ncleo de dicho mdulo lo forma al menos una CPU en cualquiera de los formatos
conocidos:
Microprocesador.
Microcontrolador de 4, 8, 16 o 32 bits.
DSP de punto fijo o punto flotante.
DSC de punto fijo o punto flotante.
Diseo a medida custom tales como los dispositivos FPGA.
Requisitos especficos de la aplicacin a la que est dirigida:
Tamao.
Margen de temperatura especifico del mbito de aplicacin.
Consumo de energa.
Robustez mecnica.
Costo.
Software
En general para el diseo de un SE no se dispone de recursos ilimitados sino que la
cantidad de memoria ser escasa, la capacidad de clculo y dispositivos externos ser
limitada, etc. Podemos hablar de las siguientes necesidades:
Trabajo en tiempo real.
Optimizar al mximo los recursos disponibles.
Disponer de un sistema de desarrollo especfico para cada familia de microprocesadores empleados.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
2
Programacin en ensamblador, aunque en los ltimos aos, los fabricantes o empresas externas han mejorado la oferta de compiladores que nos permiten
trabajar en lenguajes de alto nivel, tales como C.
El empleo de un sistema operativo determinado o el no empleo de ste depender del
sistema a desarrollar y es una de las principales decisiones que habr que tomar en la fase
de diseo del SE. As, en el caso de decidirse por el empleo de microcontroladores y DSP,
por lo general no se usar sistema operativo mientras que si se emplea algn micro del tipo
ARM, PowerPC, Intel x86, etc. s que lo llevar. La decisin depender de los requisitos
del sistema, tanto tcnicos como econmicos.
Las aplicaciones ms numerosas y habituales de los SE suelen ser del tipo industrial y
gran consumo. Existen en el mercado de semiconductores una amplia variedad de familias
de microprocesadores, microcontroladores y DSPs dirigidos a este sector.
En la prctica totalidad de las reas de nuestra vida nos encontramos con sistemas
embebidos que prcticamente nos pasan desapercibidos. Sirva como ejemplo el sector del
automvil, que en pocos aos ha introducido notables avances en lo referente a la
seguridad, confort, infomovilidad, etc. Pero, en general, podemos enumerar los siguientes
campos de aplicacin:
Equipos industriales de instrumentacin, automatizacin, produccin, etc.
Equipos de comunicaciones.
En vehculos para transporte terrestre, martimo y areo
En dispositivos dedicados al sector de consumo tales como electrodomsticos, equipamiento multimedia, juguetes, etc.
En bioingeniera y electromedicina.
Sector aerospacial y de defensa.
Equipos para domtica.
A continuacin se muestra la clasificacin ms comn de los fabricantes de
semiconductores en el rango de aplicaciones:
Audio
Automotive
Broadband
Communications & Telecom
Computers & Peripherals
Consumer Electronics
Industrial
Medical
Security
Space, Avionics, & Defense
Video and Imaging
Wireless
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
3
1.2 Arquitectura de un sistema embebido.
En el diseo de SE basados en microcontroladores, en general no se requiere una gran
potencia de procesado, ni dispositivos de presentacin con gran resolucin grfica ni
sistema operativo y si en cambio el trabajo en tiempo real. Tampoco se suelen contemplar
las posibilidades de ampliacin hardware con nuevos mdulos ya que el sistema anfitrin
se disea en su totalidad para unos requisitos especficos, de forma tal que si el sistema
anfitrin se queda obsoleto lo ser no slo por la CPU embebida sino tambin por el resto
de los elementos que lo integran, con lo que la nica alternativa consistir en el rediseo del
sistema completo, en la mayora de los casos. Requisitos tales como tamao, margen de
temperatura, consumo e inmunidad ante interferencias electromagnticas suelen ser de gran
importancia.
En la figura 1.1 se muestra un diagrama de bloques de lo que puede ser un modelo
general de un sistema embebido, de los aqu considerados.
Figura 1.1.- Diagrama de bloques simplificado de un mdulo tpico de un SE.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
4
1.3 Sistemas concurrentes y distribuidos.
Los sistemas concurrentes son la simultaneidad en la ejecucin de mltiples tareas
interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecucin creados
por un nico programa. Las tareas se pueden ejecutar en una sola unidad central de proceso,
en varios procesadores o en una red de computadores distribuidos. La programacin
concurrente est relacionada con la programacin paralela, pero enfatiza ms la interaccin
entre tareas. As, la correcta secuencia de interacciones o comunicaciones entre los
procesos y el acceso coordinado de recursos que se comparten por todos los procesos o
tareas son las claves de esta disciplina.
Figura 1.2 a) La supercomputadora Cray-2. b) La supercomputadora paralela Blue Gene de IBM.
Un sistema distribuido se define como una coleccin de computadoras separadas
fsicamente y conectadas entre s por una red de comunicaciones distribuida; cada mquina
posee sus componentes de hardware y software que el usuario percibe como un solo
sistema. El usuario accede a los recursos remotos (RPC) de la misma manera en que accede
a recursos locales, o un grupo de computadoras que usan un software para conseguir un
objetivo en comn. Los sistemas distribuidos deben ser muy confiables, ya que si un
componente del sistema se descompone otro componente debe ser capaz de reemplazarlo.
Esto se denomina tolerancia a fallos. El tamao de un sistema distribuido puede ser muy
variado, ya sean decenas de hosts (red de rea local), centenas de hosts (red de rea
metropolitana), o miles, o millones de hosts (Internet); esto se denomina escalabilidad.
1.4 Sistemas continuos, discretos e hbridos.
Los sistemas continuos operan con seales analgicas y su principal caracterstica es
presentar continuidad tanto en magnitud como en tiempo. Con los avances tecnolgicos,
tanto en electrnica como en computadoras, la mayora de los sistemas de adquisicin de
datos y de control automtico han evolucionado a procesadores digitales y sistemas que
operan con computadoras, a los cuales se les conoce como sistemas discretos, cuya
principal caracterstica es operar con seales discontinuas que presentan su discontinuidad
tanto en magnitud como en tiempo.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
5
Conocer las caractersticas, ventajas y desventajas de los sistemas continuos como de
los discretos es fundamental para tener claridad en las especificaciones y limitaciones de
diseo que aseguren que, en la implementacin de uno de estos tipos de sistemas,
cumplamos con los objetivos de rendimiento global esperado.
Sistemas Continuos.
Los primeros sistemas de adquisicin de datos (as como sistemas automticos de
control) operaron como sistemas continuos. A estos sistemas actualmente se les conoce
como sistemas o controles convencionales y su principal caracterstica es que registran y
manipulan la informacin mediante seales analgicas, tales como voltaje, corriente,
presin, temperatura, posicin o alguna otra variable fsica.
Estas seales tienen la caracterstica de presentar continuidad tanto en magnitud como
en tiempo. As definiremos a los sistemas continuos como aquellos que operan o manipulan
informacin en forma continua. La continuidad en magnitud se puede definir bajo la
caracterstica de que ante un rango definido de la variable o seal se tienen un nmero
infinito de valores intermedios.
Sistemas Discretos.
Las computadoras, microprocesadores y procesadores digitales operan como sistemas
discretos y como ya se mencion, tienen la caracterstica de operar con informacin o
seales que presentan discontinuidad tanto en magnitud como en tiempo.
Las computadoras operan y manipulan informacin en forma de cdigos digitales, es decir,
en grupos de bits (el bit es la unidad bsica de operacin y puede tener solo 2 posibles
valores: 0 1). Cuando varios bits se agrupan de alguna manera, se forma un cdigo digital, lo que permite representar la informacin con un mayor nmero de estados.
Por una parte, en una seal continua tenemos que en cualquier intervalo definido se
tiene un nmero infinito de valores intermedios y por otra parte en la seal discreta se tiene
un nmero finito de combinaciones. As, en el proceso de conversin se tendr que
aproximar la magnitud de la seal continua a la combinacin digital que mejor represente su magnitud (esto produce un error de redondeo o truncamiento conocido como error de
cuantizacin).
1.5 Sistemas operativos en tiempo real.
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia
el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la
finalidad de prestar atencin a los procesos en el momento que lo requieran y se utilizan en
entornos donde son procesados un gran nmero de sucesos o eventos.
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy
especficas como control de trfico areo, bolsas de valores, control de refineras, control de
laminadores. Tambin en el ramo automovilstico y de la electrnica de consumo, las
aplicaciones de tiempo real estn creciendo muy rpidamente.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
6
Otros campos de aplicacin de los Sistemas Operativos de tiempo real son los
siguientes:
1. Control de trenes. 2. Telecomunicaciones. 3. Sistemas de fabricacin integrada. 4. Produccin y distribucin de energa elctrica. 5. Control de edificios. 6. Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns
OS y Spectra.
Los Sistemas Operativos de tiempo real, cuentan con las siguientes caractersticas:
1. Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayora externos al sistema computacional, en breve tiempo o dentro de
ciertos plazos.
2. Se utilizan en control industrial, conmutacin telefnica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.
3. Objetivo es proporcionar rpidos tiempos de respuesta. 4. Procesa miles de interrupciones por segundo sin perder un solo suceso. 5. Proceso se activa tras ocurrencia de suceso, mediante interrupcin. 6. Proceso de mayor prioridad expropia recursos. 7. Por tanto generalmente se utiliza planificacin expropiativa basada en prioridades. 8. Gestin de memoria menos exigente que tiempo compartido, usualmente procesos
son residentes permanentes en memoria.
9. Poblacin de procesos esttica en gran medida. 10. Poco movimiento de programas entre almacenamiento secundario y memoria. 11. Gestin de archivos se orienta ms a velocidad de acceso que a utilizacin eficiente
del recurso.
1.6 Fases de diseo de un sistema embebido.
Una vez tomada la decisin de proceder a la fabricacin del SE, vamos a describir
brevemente las fases tpicas de diseo en cualquier sistema electrnico, sea ste embebido o
no lo sea. Desde la primera fase, conocida como diseo previo del sistema, hasta la ltima,
que consiste en la decisin del producto final, se debe de cuidar el orden de ejecucin de las
tareas y solapar todas las que sea posible de modo que se obtenga un producto fiable en el
menor tiempo posible de puesta en el mercado (time-to-market).
En la figura 1.3 se muestra un diagrama simplificado con las fases a seguir y que
comentamos a continuacin:
1. Diseo inicial del sistema que incluye toda una serie de tareas que acabarn en la elaboracin de un esquema elctrico del mismo y en un diseo de necesidades
software.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
7
2. A partir del esquemtico y de la forma fsica de cada uno de los componentes que intervienen, elaborar un diseo hardware del mismo. Esta tarea incluye el
posicionamiento de cada uno de los componentes y el ruteado de las pistas de cobre
que realizarn las necesarias interconexiones entre los pines de los componentes,
generando un prototipo de PCB, sobre el que se realiza el montaje o ensamblado de
todos y cada uno de los dispositivos mediante el procedimiento de soldadura ms
adecuado. Termina en un prototipo hardware.
3. Desarrollo del prototipo de software con la programacin inicial del micro o de los micros que formen parte del SE.
4. Integracin hardware/software mediante el volcado o programacin en el circuito de los micros. Se dispondr as del primer prototipo listo para proceder a su testeo y
depuracin.
5. Pruebas y depuracin del software y hardware mediante el empleo de prototipos hasta llegar a la versin final. Si se detectan errores en el hardware ser necesario
proceder a redisear la placa y volver a comenzar el proceso. Si los errores son de
software, el proceso es similar, solo que menos costoso en cuanto a materiales que
no en cuanto a horas de ingeniera.
6. Producto Final. Tras el resultado satisfactorio en todas las pruebas se conseguir el producto final. En el caso de previsiones de fabricacin masiva ser necesario
fabricar pre-series y probarlas para as minimizar los imprevistos de cara a la
fabricacin en serie de altas cantidades.
Figura 1.3. Fases tpicas de diseo de un SE.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
8
SEGUNDA UNIDAD. ORGANIZACIN COMPUTACIONAL.
2.1 Definicin de procesador, controlador, computadora, DSP, DSC.
Microprocesador: El microprocesador o procesador es el circuito integrado ms
importante. Est formado por millones de transistores integrados. Incorpora en su interior
una unidad central de proceso (CPU) permitiendo enlazar otros dispositivos. Para realizar
su trabajo debe ejecutar paso a paso un programa que consiste en una secuencia de nmeros
binarios o instrucciones, almacenndolas en uno o ms elementos de memoria,
generalmente externos al mismo.
Microcontrolador: Es un dispositivo que alberga el sistema mnimo dentro de un nico
chip, esto es, incluye CPU, buses, reloj, memoria ROM, memoria RAM, E/S, otros
perifricos tales como conversores A/D, temporizadores, contadores, moduladores de ancho
de pulso, etc.
Computadora: Es una mquina electrnica que recibe y procesa datos para convertirlos en
informacin til. Una computadora es una coleccin de circuitos integrados y otros
componentes relacionados que pueden ejecutar con exactitud, rapidez y de acuerdo a lo
indicado por un usuario o automticamente por otro programa, una gran variedad de
secuencias o rutinas de instrucciones que son ordenadas, organizadas y sistematizadas en
funcin a una amplia gama de aplicaciones prcticas y precisamente determinadas, proceso
al cual se le ha denominado con el nombre de programacin y al que lo realiza se le llama
programador.
Procesador Digital de Seal (DSP): Es un sistema basado en un procesador o
microprocesador que posee un conjunto de instrucciones, un hardware y un software
optimizados para aplicaciones que requieran operaciones numricas a muy alta velocidad.
Debido a esto es especialmente til para el procesado y representacin de seales
analgicas en tiempo real: en un sistema que trabaje de esta forma (tiempo real) se reciben
muestras, normalmente provenientes de un conversor analgico/digital (ADC), para realizar
tareas tpicas de procesamiento digital de seales en tiempo real.
DSC: Dispositivos mixtos microcontrolador/DSP que algunos fabricante ofrecen dentro de
su catlogo de productos. Por ejemplo, Microchip ha unido la potencia y posibilidades de
sus microcontroladores de 16bits (MCU) con las prestaciones ms interesantes de los DSP
para fabricar un circuito integrado denominado DSC. Dada las similitudes del DSC con los
MCU en cuanto arquitectura y repertorio de instrucciones, los usuarios de las familias de
microcontroladores PCI no encuentra dificultades para introducirse en el campo del
procesamiento digital de seales. Estos dispositivos se caracterizan por alcanzar un
rendimiento de 40 MIPS e integrar memoria FLASH de alta calidad junto a novedosos
recurso hardware, apoyndose en herramientas de desarrollo muy fciles de manejar.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
9
2.2 Arquitectura general de una computadora y un sistema mnimo.
La tecnologa de los microprocesadores est evolucionando en dos direcciones:
i) Desempeo
ii) Integracin.
Por un lado, el Desempeo hace nfasis en incrementar la velocidad y capacidad de
cmputo, junto con la habilidad de almacenar ms datos. Las computadoras personales usan
estos microprocesadores como CPU.
Por otro lado, muchas aplicaciones de control se estn beneficiando con la
reduccin en el nmero de circuitos integrados y no necesitan incrementar el poder de
cmputo. Existe un gran deseo por mejorar la integracin, aqu es cuando se desarrolla un
CPU con memoria y perifricos integrados al chip.
La siguiente figura muestra el diagrama de bloques de una computadora, y tambin
puede ser el diagrama a bloques de un microcontrolador.
Figura 2.1 Diagrama a bloques de una micro-computadora.
2.3 Definicin y tipos de buses y memorias.
BUSES.
Los diferentes elementos que componen una computadora se tienen que comunicar de
alguna manera, y esta comunicacin se realiza por los llamados buses. Los buses son un
conjunto de hilos o conexiones que llevan informacin de todo tipo de un elemento a otro,
transportando la informacin en paralelo. Hay 3 tipos de buses:
Bus de datos: Lleva los datos que es necesario enviar de un elemento a otro, puede ser bidireccional. Existe un bus de datos interno: (ejemplo: entre el microprocesador y la
memoria) y uno externo, entre la computadora y sus perifricos (ejemplo: Computadora
e impresora).
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
10
Bus de direcciones: Muchos de los elementos de una computadora as como las posiciones de memoria tienen una direccin nica dentro del sistema. De esta direccin
se puede leer un dato o en esta direccin podemos escribir un dato. En el bus de
direcciones se coloca la direccin del elemento a accesar y con ayuda del bus de datos
movemos la informacin de un elemento a otro.
Bus de control: Son hilos que transportan seales de control, dan la informacin del estado de ciertos componentes, la direccin del flujo de la informacin, controlan el
momento (temporizacin) en que suceden ciertos eventos de manera que no haya
choques de datos, transmiten seales de interrupcin, etc.
MEMORIA.
Parte de la computadora que almacena los programas y datos para que el programa que
est en funcionamiento cumpla su tarea. Es por este motivo que esta memoria es de gran
velocidad. Existen dos tipos de memoria (memoria RAM y ROM):
MEMORIA RAM: Memoria RAM (Random Acces Memory): Memoria de acceso aleatorio. En este
tipo de memoria se puede escribir y leer, pero los datos almacenados en ella
desaparecern si se desconecta la energa. Hay diferentes tipos de memoria RAM, la
esttica SRAM (retiene los datos mientras haya energa) y la dinmica DRAM (va
perdiendo el dato que tiene almacenado y hay que refrescarlos frecuentemente), por
este motivo las SRAM son ms rpidas pero tienen menos capacidad que una
DRAM para un mismo dispositivo de memoria.
VRAM (Video RAM): Es un tipo especial de memoria RAM, que se utiliza en adaptadores de video. Su principal diferencia es que puede ser accesada por dos
diferentes dispositivos en forma simultnea. Esto permite que un monitor pueda
acceder a la VRAM para actualizar la pantalla mientras que el procesador grfico
suministra nuevos datos. Permite mejores rendimientos, pero es ms cara.
RAMBUS: Esta memoria es exclusiva de las Pentium 4, y trabaja a una velocidad de 400 a 800 Mhz del bus de datos
MEMORIA ROM: Memoria ROM: (Read Only Memory) Memoria de slo lectura. Este dispositivo
slo permite leer la informacin que en el est grabada. Y no pierde la informacin
cuando se quita la energa. Normalmente vienen grabadas de fbrica.
Memoria PROM: Cuando se compra est en blanco (vaca) y mediante un proceso el usuario graba la informacin en ella, pero slo una vez.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
11
Memoria EPROM: (Erasable PROM) Igual a la anterior pero que mediante la exposicin de una ventana, en la parte superior del integrado, a la luz ultravioleta,
por un periodo definido de tiempo, se puede borrar.
Memoria EEPROM: (Electrical Erasable PROM) Igual a la anterior pero el borrado se realiza elctricamente.
Memoria Flash: Tipo especial de EEPROM que puede ser borrada y reprogramada dentro de una computadora. Los EEPROM necesitan un dispositivo especial
llamado lector de PROM.
2.4 Arquitecturas internas: Von Neumann y Harvard.
Von Neumann John Von Neumann fue un matemtico que propuso la arquitectura que es
considerada como tradicional en una computadora, dicha arquitectura se refiere
simplemente a que el CPU o el procesador se conecta a la memoria que guarda las
instrucciones y datos de los programas. Hay aspectos positivos en esta configuracin como
son los accesos a tablas almacenadas en ROM y un set de instrucciones ms ortogonal o
paralelo. El bus de direcciones es usado para identificar qu localidad de memoria est
siendo accesada, mientras que el bus de datos es utilizado para trasladar informacin entre
el CPU y alguna localidad de memoria o viceversa. En las primeras computadoras el
almacenamiento del programa era completamente diferente al almacenamiento de los datos.
Con un solo bus, la arquitectura Von Neumann es usada secuencialmente para acceder
instrucciones de la memoria de programa y ejecutarlas regresando desde/hacia la memoria
de datos. Esto significa que el ciclo de instruccin no puede traslaparse con algn acceso a
la memoria de datos.
Ventajas:
Tiene un bus de direcciones y de datos uniendo la memoria con el CPU.
Desventajas:
La longitud de las instrucciones se encuentra limitada por la longitud de los datos, lo que ocasiona que el procesador se vea obligado a hacer varios accesos a memoria
al momento de buscar instrucciones complejas.
La velocidad de operacin se encuentra limitada por el efecto cuello de botella, el cual se refiere a que existe un slo BUS para datos e instrucciones, lo que impide
superponer a ambos en el mismo tiempo de acceso. Esto provocara que el
apuntador de programa o algn otro registro se corrompieran y apuntara a la
memoria de datos y se tomara sta momentneamente como memoria de programa.
Consecuentemente se ejecutara una instruccin no deseada o un error en la
decodificacin de la instruccin.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
12
La siguiente figura se refiere a la arquitectura bsica de Von Neumann, de acuerdo a
su definicin anterior:
Figura 2.2 Arquitectura bsica de Von Neumann.
Harvard La arquitectura Harvard fue diseada en Harvard por Howard Aiken, para
contrarrestar las debilidades de la arquitectura Von Neumann, donde la ms importante es
la referente a el bus por donde se transportan los datos e instrucciones, el procesador se une
a dos tipos de memoria diferentes entre s por medio de buses independientes, y se termina
con el problema de cuello de botella, ya que tanto los datos como las instrucciones viajan por buses diferentes y no importa si el procesador los toma en el mismo tiempo de acceso.
Las dos memorias diferentes son la memoria de datos, donde se almacenan los datos de
programa, y la memoria de instrucciones, en las cuales se almacena el programa en s.
Ventajas:
La velocidad de operacin, o tambin llamada ancho de banda de operacin, se encuentra limitada por el efecto de cuello de botella, que como ya vimos, se refiere a un bus nico para datos e instrucciones lo que impide superponer ambos
tiempos de acceso.
La operacin del Microcontrolador puede ser controlada ms fcilmente si se presentara una anomala en el apuntador de programa.
Existe adems la Arquitectura Harvard Modificada que permite accesos a tablas de datos desde la memoria de programa. Esta ltima arquitectura es la dominante en
los microcontroladores actuales ya que la memoria de programa es usualmente
ROM, OTP, EPROM o FLASH mientras que la memoria de datos es usualmente
RAM. Consecuentemente, las tablas de datos pueden estar en la memoria de
programa sin que sean perdidas cada vez que el sistema es apagado.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
13
Otra ventaja importante en la arquitectura Harvard Modificada es que las transferencias de datos pueden ser traslapadas con los ciclos de decodificacin de
instrucciones. Esto quiere decir que la siguiente instruccin puede ser cargada de la
memoria de programa mientras se est ejecutando una instruccin interviniendo la
memoria de datos.
Desventajas:
Los procesadores con este tipo de arquitectura deben poseer instrucciones especiales para acceder a tablas de valores constantes necesarios a incluir en los programas, ya
que estas tablas se encontraran fsicamente en la memoria de programa (por ejemplo
en la EPROM de un microprocesador).
La desventaja de la arquitectura Harvard Modificada podra ser que se requieren instrucciones especiales para accesar valores en RAM y ROM haciendo la
programacin un poco complicada.
La siguiente figura se refiere a la arquitectura bsica Harvard, de acuerdo a su
definicin anterior:
Figura 2.3 Arquitectura bsica Harvard.
2.5 Organizacin del procesador.
ALU (Unidad Aritmtica y Lgica)
Las instrucciones de programa y los datos que se van a procesar se almacenan en la
memoria, la ALU se considera como el corazn o elemento principal del CPU debido a que
todas las instrucciones se refieren al procesado de los datos por medio del ALU. La primera
ALU era del tipo BCD, despus se implement un ALU de complemento a 2, actualmente
las ALUs trabajan en ambos modos.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
14
Los siguientes son ejemplos de operaciones que realiza la ALU: Limpiar,
Complementar, Incrementar, Decrementar, Negar, Transferir, Sumar, Restar, Dividir,
Multiplicar, Corrimiento, AND, OR, XOR.
La siguiente figura muestra el smbolo de la ALU.
Figura 2.4 Smbolo de la ALU.
Decodificador de Instrucciones.
Se encarga de traducir las instrucciones en seales de control. Normalmente se
implementa utilizando mquinas de estado donde su tamao y velocidad dependen del
diseo en particular, aunque actualmente sta es la parte principal de control y hace la
diferencia entre procesadores RISC y CISC.
Secuenciadores.
Esta es otra de las partes principales de control y cuya funcin principal es que se
encarga del direccionamiento de la memoria de programa, no slo se puede incrementar de
uno en uno, sino que puede cargar un valor arbitrario debido a un brinco, llamado
subrutina, interrupcin, etc. Podemos decir que la salida de los secuenciadores es el
Program Counter que es el registro que apunta directamente a la memoria de programa. Los
secuenciadores normalmente actan a la par con la pila, la pila se encarga de proporcionar
al secuenciador la direccin a la cual debe retornar despus de una interrupcin o subrutina.
Registro de Banderas.
Es un registro especial donde el CPU indica algn cambio en la ltima operacin
realizada, los brincos (instrucciones) condicionales siempre van a leer este registro antes de
brincar. Esta bandera siempre es leda entonces por el decodificador de instrucciones.
El registro de banderas normalmente es de 8 bits en los microcontroladores, aunque
Intel tiene procesadores con registros de banderas de 32 bits. Algunas de las principales
banderas son:
C (Acarreo): Indica un acarreo despus de una suma o un prstamo despus de una resta.
La bandera de acarreo tambin indica condiciones de error en ciertos programas y
procedimientos. Tambin se utiliza en algunas instrucciones de rotacin y desplazamiento.
A (Acarreo Auxiliar): Indica un acarreo despus de una suma o un prstamo despus de una
resta entre las posiciones de los bits 3 y 4 en el resultado.
Z (Zero): Indica que el resultado de una operacin aritmtica o lgica es cero. Si Z=1, el
resultado es cero, si Z=0 entonces el resultado no es cero.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
15
S (Signo): Indica el signo aritmtico del resultado despus de una suma o resta. Si S=1 la
bandera de signo se activa y el resultado es negativo. Si S=0 la bandera de signo se
desactiva y el resultado es positivo. Se debe tener en cuenta que el valor de la posicin del
bit ms significativo se coloca en el bit de signo para cualquier instruccin que afecte las
banderas.
O (Sobreflujo): Es una condicin que ocurre cuando se suman o restan nmeros con signo.
Un sobreflujo indica que el resultado ha excedido de la capacidad de la maquina. Por
ejemplo, si se suma un 7FH (+127) a 01H (+1) el resultado es 80H (-128). Este resultado
representa una situacin de sobreflujo sealado por la bandera para la suma con signo. Para
operaciones sin signo no se toma en cuenta esta bandera.
Registro de Interrupciones, Mascaras y Control.
Este registro es la salida principal del secuenciador, y es el que guarda la direccin
de la memoria de programa en la cual se encuentra la siguiente instruccin.
2.6 Organizacin de la memoria.
La tabla 2.1 muestra el mapa de registro del dispositivo despus del Reset.
Tabla 2.1 Mapa de Registro del Dispositivo.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
16
La siguiente figura ilustra el mapa de memoria completo del dispositivo.
Figura 2.5 Mapa de memoria completo del Microcontrolador MC9S12C32.
2.7 Arquitecturas del procesador: CISC, RISC y SISC.
Una de las primeras decisiones a la hora de disear un microprocesador es decidir cul
ser su juego de instrucciones. La decisin es trascendente por dos razones; primero, el
juego de instrucciones decide el diseo fsico del conjunto; segundo, cualquier operacin
que deba ejecutarse en el microprocesador deber poder ser descrita en trminos de un
lenguaje de estas instrucciones. Frente a esta cuestin caben dos filosofas de diseo;
mquinas denominadas CISC y mquinas denominadas RISC.
Cuando hablamos de microprocesadores CISC, computadoras con un conjunto de
instrucciones complejo, del ingls complex instruction set computer, y procesadores RISC,
computadoras con un conjunto de instrucciones reducido, del ingls reduced instruction set
computer, se piensa que los atributos complejo y reducido describen las diferencias entre
los dos modelos de arquitectura para microprocesadores.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
17
ARQUITECTURA CISC
La tecnologa CISC (Complex Instruction Set Computer) naci de la mano de Intel,
creador en 1971 del primer microchip que permitira el nacimiento de la informtica
personal. Ms concretamente, sera en 1972 cuando aparecera el 8080, primer chip capaz
de procesar 8 bits, suficiente para representar nmeros y letras. Con la posibilidad de
colocar todos los circuitos en un solo chip y la capacidad de manejar nmero y letras
nacera la cuarta generacin de ordenadores, la de los conocidos como PC u ordenadores
personales.
Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza
por ser muy amplio y permitir operaciones complejas entre operandos situados en la
memoria o en los registros internos. Este tipo de arquitectura dificulta el paralelismo entre
instrucciones, por lo que en la actualidad la mayora de los sistemas CISC de alto
rendimiento implementan un sistema que convierte dichas instrucciones complejas en
varias instrucciones simples, llamadas generalmente microinstrucciones.
La microprogramacin es una caracterstica importante y esencial de casi todas las
arquitecturas CISC. La microprogramacin significa que cada instruccin de mquina es
interpretada por un microprograma localizado en una memoria en el circuito integrado del
procesador. Las instrucciones compuestas son decodificadas internamente y ejecutadas con
una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren
de varios ciclos de reloj, al menos uno por microinstruccin. Es as entonces como los chips
CISC utilizan comandos que incorporan una gran diversidad de pequeas instrucciones
para realizar una nica operacin.
Entre las bondades de CISC destacan las siguientes:
Reduce la dificultad de crear compiladores.
Permite reducir el costo total del sistema.
Reduce los costos de creacin de software.
Mejora la compactacin de cdigo.
Facilita la depuracin de errores.
Ejemplo de microprocesadores basados en la tecnologa CISC:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
18
ARQUITECTURA RISC
Buscando aumentar la velocidad del procesamiento se descubri en base a
experimentos que, con una determinada arquitectura de base, la ejecucin de programas
compilados directamente con microinstrucciones y residentes en memoria externa al
circuito integrado resultaban ser ms eficientes, gracias a que el tiempo de acceso de las
memorias se fue decrementando conforme se mejoraba su tecnologa de encapsulado.
La arquitectura RISC funciona de modo muy diferente a la CISC, su objetivo no es
ahorrar esfuerzos externos por parte del software con sus accesos a la RAM, sino facilitar
que las instrucciones sean ejecutadas lo ms rpidamente posible. La forma de conseguirlo
es simplificando el tipo de instrucciones que ejecuta el procesador. As, las instrucciones
ms breves y sencillas de un procesador RISC son capaces de ejecutarse mucho ms aprisa
que las instrucciones ms largas y complejas de un chip CISC. Sin embargo, este diseo
requiere de mucha ms RAM y de una tecnologa de compilador ms avanzada.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de
diseo ms cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la
aplicacin de las ms recientes tecnologas de semiconductores. Adems, los comandos de
RISC son todos del mismo tamao y se cargan y almacenan del mismo modo. Al ser estas
instrucciones pequeas y sencillas, no necesitan ser descodificadas en instrucciones
menores como en el caso de los chips CISC, pues ya constituyen en s unidades
descodificadas. Por ello, el procesador RISC no gasta tiempo verificando el tamao del
comando, en descodificarlo ni en averiguar cmo cargarlo y guardarlo.
Entre las ventajas de RISC tenemos las siguientes:
La CPU trabaja ms rpido al utilizar menos ciclos de reloj para ejecutar instrucciones.
Utiliza un sistema de direcciones no destructivas en RAM. Eso significa que a diferencia de CISC, RISC conserva despus de realizar sus operaciones en memoria
los dos operandos y su resultado, reduciendo la ejecucin de nuevas operaciones.
Cada instruccin puede ser ejecutada en un solo ciclo del CPU
Ejemplo de microprocesadores basados en la tecnologa CISC:
PA-RISC, Hewlett Packard.
SPARC, Scalable Processor Architecture, Sun Microsystems.
POWER PC, Apple, Motorola e IBM.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
19
2.8 Arquitecturas DSP, DSC.
DSP
A lo largo de los ltimos aos, la aparicin y posterior desarrollo de los dispositivos
especializados en el procesado digital de seales o DSPs ha supuesto la apertura de una
nueva va de evolucin hacia niveles superiores en el tratamiento de datos. En este corto
espacio de tiempo, debido a su bajo coste y gran rendimiento, los DSPs han reemplazado
casi por completo a la tecnologa analgica tradicional en campos como
telecomunicaciones, procesado de audio y vdeo y control industrial. Se ha generalizado el
diseo de soluciones en este campo por parte de empresas de primer nivel, desarrolladores
independientes y universidades.
Figura 2.6. Diagrma de un SE que incorpora un nuclo DSP y modulos adicionales .
Es necesario un conocimiento de la teora de tratamiento digital de seales, en la
que se basan estos procesadores, para poder comprender el porqu de las arquitecturas que
emplean estos procesadores as como disponer de criterios ante la posible la eleccin del
procesador idneo para un proceso determinado.
DSC
El fabricante Microchip lanz la familia dsPIC con el objetivo de cubrir el nicho de
mercado existente entre las aplicaciones que les basta con un microcontrolador y aquellas
especficas donde los DSP de altas prestaciones son la solucin idnea. La idea era
conseguir, dentro de un mismo chip, las funciones MCU+DSP=DSC aunque con
prestaciones mas limitadas, seran tiles a muchas aplicaciones industriales que emplean
procesamiento de seales no muy complejo.
Se tratara de una CPU de altas prestaciones con arquitectura Harvard modificada,
que emplea 24 bits para codificar cada instruccin.Hay que tener en cuenta, que aunque se
disponga de 144 Kb de memoria de programa, solo podemos direccionar 48K instrucciones.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
20
Consigue hasta 30 millones de instrucciones por segundo e incorpora 41 fuentes de
interrupcin. Incorpora hasta 4 Kbytes de memoria de datos tipo EEPROM. El fabricante
separa las prestaciones como microcontrolador y como DSP.
2.9 Ejecucin de instrucciones y pipeline.
El ciclo de instruccin podemos dividirlo en tres partes:
1. Tomar la siguiente instruccin (fetch). 2. Decodificar la instruccin. 3. Ejecutar la instruccin.
Tomar la siguiente instruccin (fetch).
El procesador siempre tiene su registro PC (Contador de Programa) apuntando a la
direccin de memoria de la siguiente instruccin a ejecutar. Durante esta fase el procesador
extrae la instruccin de la memoria apuntada por el PC volcando el contenido de este
registro al bus de direcciones y pidiendo una operacin de lectura a la memoria.
Simultneamente a esta peticin, el PC se incrementar en una unidad para apuntar a la
siguiente instruccin o bien al primer operando de la instruccin extrada si esta lo tuviera.
Cuando la memoria est preparada para atender la peticin, vuelca el contenido de la
direccin pedida al bus de datos de donde el procesador recoge el cdigo de operacin y lo
coloca en un registro especial llamado Registro de Instruccin (IR).
Decodificar la instruccin.
Una vez tiene el cdigo de operacin alojado en el IR, el procesador decodifica ste
para saber de qu instruccin se trata y obtiene los parmetros de la memoria (si los
tuviera), incrementando el PC en una unidad por cada parmetro extrado.
Ejecutar la instruccin.
Llegado a este paso, el procesador ya sabe de qu instruccin se trata y los parmetros
que necesita, luego simplemente la ejecuta de la forma apropiada.
Al finalizar este paso finaliza una iteracin del ciclo de instruccin, volveremos al fetch de
la siguiente instruccin y as sucesivamente.
Pipeline
Es una tcnica empleada en el diseo de procesadores, basada en la divisin de la
ejecucin de las instrucciones en etapas, consiguiendo as que una instruccin empiece a
ejecutarse antes de que hayan terminado las anteriores y, por tanto, que haya varias
instrucciones procesndose simultneamente. Cada una de las etapas debe completar sus
acciones en un ciclo de reloj, pasando sus resultados a la etapa siguiente y recibindolos de
la anterior. Para eso es necesario almacenar los datos en registros intermedios. Cualquier
valor que pueda ser necesario en una etapa posterior debe irse propagando a travs de esos
registros intermedios hasta que ya no sea necesario. Para conseguir la segmentacin es
necesario que una instruccin utilice solamente una etapa en cada ciclo de ejecucin.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
21
Ya que todas las etapas deben de tardar lo mismo en su ejecucin, el tiempo de ciclo
ser el de la etapa ms lenta, ms el del retardo provocado por la utilizacin de los registros
intermedios. Comparando este esquema con el multiciclo, el tiempo de ciclo ser ms lento,
pero el CPI (Ciclos Por Instruccin) ser menor, lo que provoca un aumento del
rendimiento. Ya que si no tenemos en cuenta los riesgos estructurales (que pueden provocar
paradas en el pipeline), tendramos que en cada ciclo de reloj, termina de ejecutarse una
instruccin (CPI=1).
2.10 Recursos internos de los microcontroladores.
Al estar todos los microcontroladores integrados en un chip, su estructura fundamental
y sus caractersticas bsicas son muy parecidas. Todos deben disponer de los bloques
esenciales Procesador, memoria de datos y de instrucciones, lneas de E/S, oscilador de
reloj y mdulos controladores de perifricos. Sin embargo, cada fabricante intenta enfatizar
los recursos ms idneos para las aplicaciones a las que se destinan preferentemente.
A continuacin se describen todos los recursos que se hallan en todos los
microcontroladores describiendo las diversas alternativas y opciones que pueden
encontrarse segn el modelo seleccionado.
Recursos Especiales.
Cada fabricante oferta numerosas versiones de una arquitectura bsica de
microcontrolador. En algunas ampla las capacidades de las memorias, en otras incorpora
nuevos recursos, en otras reduce las prestaciones al mnimo para aplicaciones muy simples,
etc. La labor del diseador es encontrar el modelo mnimo que satisfaga todos los
requerimientos de su aplicacin. De esta forma, minimizar el costo, el hardware y el
software.
Los principales recursos especficos que incorporan los microcontroladores son:
Temporizadores o "Timers". Perro guardin o "Watchdog". Proteccin ante fallo de alimentacin o "Brownout". Estado de reposo o de bajo consumo. Conversor A/D. Conversor D/A. Comparador analgico. Modulador de anchura de impulsos o PWM. Puertos de E/S digitales. Puertos de comunicacin.
Temporizadores o "Timers".
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la
cuenta de acontecimientos que suceden en el exterior (contadores).
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
22
Para la medida de tiempos se carga un registro con el valor adecuado y a
continuacin dicho valor se va incrementando o decrementando al ritmo de los impulsos de
reloj o algn mltiplo hasta que se desborde y llegue a 0, momento en el que se produce un
aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o
flancos en alguno de los pines del microcontrolador, el mencionado registro se va
incrementando o decrementando al ritmo de dichos impulsos.
Perro guardin o "Watchdog".
Cuando el computador personal se bloquea por un fallo del software u otra causa, se
pulsa el botn del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin
el control de un supervisor y de forma continuada las 24 horas del da. El Perro guardin
consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset
automticamente en el sistema.
Se debe disear el programa de trabajo que controla la tarea de forma que refresque
o inicialice al Perro guardin antes de que provoque el reset. Si falla el programa o se
bloquea, no se refrescar al Perro guardin y, al completar su temporizacin, "ladrar y
ladrar" hasta provocar el reset.
Proteccin ante fallo de alimentacin o "Brownout".
Se trata de un circuito que resetea al microcontrolador cuando el voltaje de
alimentacin (VDD) es inferior a un voltaje mnimo ("brownout"). Mientras el voltaje de
alimentacin sea inferior al de brownout el dispositivo se mantiene reseteado, comenzando
a funcionar normalmente cuando sobrepasa dicho valor.
Estado de reposo de bajo consumo.
Son abundantes las situaciones reales de trabajo en que el microcontrolador debe
esperar, sin hacer nada, a que se produzca algn acontecimiento externo que le ponga de
nuevo en funcionamiento. Para ahorrar energa, (factor clave en los aparatos porttiles), los
microcontroladores disponen de una instruccin especial (SLEEP o WAIT), que les pasa al
estado de reposo o de bajo consumo, en el cual los requerimientos de potencia son
mnimos. En dicho estado se detiene el reloj principal y se "congelan" sus circuitos
asociados, quedando sumido en un profundo "sueo" el microcontrolador. Al activarse una
interrupcin ocasionada por el acontecimiento esperado, el microcontrolador se despierta y
reanuda su trabajo.
Convertidor A/D (ADC).
Los microcontroladores que incorporan un Convertidor A/D (Analgico/Digital)
pueden procesar seales analgicas, tan abundantes en las aplicaciones. Suelen disponer de
un multiplexor que permite aplicar a la entrada del ADC diversas seales analgicas desde
los pines del circuito integrado.
Convertidor D/A (DAC).
Transforma los datos digitales obtenidos del procesamiento de la computadora en su
correspondiente seal analgica que saca al exterior por uno de los pines del encapsulado.
Existen muchos efectores que trabajan con seales analgicas.
-
M.C Abel Daz Olivares Sistemas Embebidos para el Automvil
23
Comparador analgico.
Algunos modelos de microcontroladores disponen internamente de un Amplificador
Operacional que acta como comparador entre una seal fija de referencia y otra variable
que se aplica por uno de los pines del encapsulado. La salida del comparador proporciona
un nivel lgico 1 0 segn una seal sea mayor o menor que la otra. Tambin hay modelos
de microcontroladores con un mdulo de tensin de referencia que proporciona diversas
tensiones de referencia que se pueden aplicar en los comparadores.
Modulador de anchura de impulsos o PWM.
Son circuitos que proporcionan en su salida impulsos de anchura variable, que se
ofrecen al exterior a travs de los pines del encapsulado.
Puertos de E/S digitales.
Todos los microcontroladores destinan algunos de sus pines a soportar lneas de E/S
digitales. Por lo general, estas lneas se agrupan de ocho en ocho formando Puertos. Las
lneas digitales de los Puertos pueden configurarse como Entrada o como Salida cargando
un 1 un 0 en el bit correspondiente de un registro destinado a su configuracin.
Puertos de comunicacin.
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros
dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes
y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos
disponen de recursos que permiten directamente esta tarea, entre los que destacan:
UART, adaptador de comunicacin serie asncrona.
USART, adaptador de comunicacin serie sncrona y asncrona.
Puerto paralelo esclavo para poder conectarse con los buses de otros microprocesadores.
USB (Universal Serial Bus), que es un moderno bus serie para los PC.
Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), para permitir la adaptacin con redes de conexin multiplexado, desarrollado conjuntamente por Bosch e Intel para el
cableado de dispositivos en automviles. En EE.UU. se usa el J185O.
2.11 Seleccin de los microcontroladores.
Cuando se desea armar un sistema de cmputo la primera decisin es cual
microprocesador usar, para ello vamos a utilizar la clasificacin en cuanto a lo siguiente:
Tamao del bus (datos, direccin y control).
Compatibilidad.
Condiciones Ambientales.
Duracin (Tiempo).
Tamao fsico.
Velocidad del procesador (clock).
Arquitectura.
Material de fabricacin.
Costo.
Desempeo.
Fabricante.
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
24
TERCERA UNIDAD. MICROCONTROLADOR HC12.
3.1 Introduccin al Microcontrolador HC12
La tecnologa de los microprocesadores est evolucionando en dos direcciones:
i) Desempeo
ii) Integracin.
Por un lado, el Desempeo hace nfasis en incrementar la velocidad y capacidad de
cmputo, junto con la habilidad de almacenar ms datos. Las computadoras personales usan
estos microprocesadores como CPU.
Por otro lado, muchas aplicaciones de control se estn beneficiando con la
reduccin en el nmero de circuitos integrados y no necesitan incrementar el poder de
cmputo. Existe un gran deseo por mejorar la integracin, aqu es cuando se desarrolla un
CPU con memoria y perifricos integrados al chip. La siguiente figura muestra el diagrama
de bloques de una computadora, y tambin puede ser el diagrama a bloques de un
microcontrolador.
Figura 1.1 Diagrama a bloques de una micro-computadora.
El primer microprocesador de Motorola, una compaa de Phoenix, AZ, fue el 6800.
Le siguieron los microprocesadores 6808, 6809 y 6802. Usando stos diseos construyeron
el microcontrolador 6801 que incluy algunos circuitos de memoria y perifricos, este
dispositivo lleg a ser popular en sistemas de control de autos. Luego, se desarroll otro
microcontrolador muy popular, el 6805, al cual todava se le encuentra en aplicaciones de
baja velocidad, o como esclavo de otros micros.
Posteriormente, en 1985 Motorola desarroll el 68HC11, un microcontrolador
compatible con el 6800. En 1991. Motorola desarroll el 68HC16, que es compatible con el
68HC11. Una primera distincin entre el 68HC11 y los procesadores anteriores est en el
mtodo de fabricacin, el 68HC11 utiliza tecnologa CMOS de alta densidad (HCMOS).
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
25
Cuando un microcontrolador se fabrica usando este proceso, se vuelve ms pequeo
y ms rpido, adems utiliza menos potencia y tiene una alta tolerancia al ruido, factores
muy importantes en aplicaciones de control.
Con el afn de competir con fabricantes de micros baratos, Motorola desarrollo el
68HC08. Inclua 32K de RAM, 8 (4) canales del ADC y 2 canales de PWM adems de
Temporizadores y 2 puertos seriales. Despus se desarrolla el 68HC12 que es un micro de
16 bits, compatible con 68HC11 y que rene una gran cantidad de ventajas.
3.2 Caractersticas principales de la familia HCS12.
Compatible con 68HC11
25 MHz de velocidad en el bus
Ruta de Datos de 16 bits
32 KB de memoria Flash EEPROM
2 KB de RAM
1 Puerto Serial Asncrono (SCI)
1 Puerto Serial Sncrono (SPI)
1 Puerto Serial CAN 2.0 de 1M bit por segundo
8 Canales del Temporizador Programable
6 Canales del Modulador de Ancho de Pulsos (PWM)
8 Canales del Convertidor Anlogo-Digital (ADC) de 10 bits
52 terminales para puertos de Entrada/Salida (I/O)
Cola de instrucciones de 3 bytes
Direccionamiento Indexado muy verstil
Soporte para Lgica Difusa
Voltaje de entrada de 2.97 a 5.5 Volts
Figura 3.1 Codificado del Nmero de Parte
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
26
3.3 Arquitectura y registros del HC12.
Figura 3.2 Diagrama de Bloques de la Familia HC12
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
27
Registros del HCS12.
Se denomina CPU al Core del microcontrolador. Existen varias versiones del HC12,
pero el Core es el mismo.
Figura 3.3 Modelo de Programacin del CPU12
Acumuladores (A , B y D).
Los acumuladores A (ACCA) y B (ACCB) son registros acumuladores de propsito
general de 8 bits. Se utilizan para retener operandos y resultados de operaciones aritmticas
y movimiento de datos. Algunas instrucciones los tratan como un acumulador de 16 bits
(acumulador doble ACCD). La mayora de las instrucciones usan A o B indistintamente,
pero existen algunas excepciones: La instruccin ABX y ABY suman el contenido de B a
los registros IX o IY pero no existe instruccin equivalente para A. Las instrucciones TAP
y TPA se usan para intercambiar los datos entre el acumulador A y el registro de cdigos de
condicin, y no hay equivalente para el acumulador B. La instruccin de ajuste decimal al
acumulador (DAA) solo existe para A. Finalmente, la suma, resta y comparacin entre
acumuladores operan solo en una direccin; por lo tanto es importante planear
adecuadamente en cual acumulador poner el operando.
Registros ndices (X y Y)
Son usados en el modo de direccionamiento indexado. En este modo, los contenidos
de estos ndices de 16 bits, son sumados a un desplazamiento (offset) de 8 bits para obtener
la direccin efectiva del operando que se usar en la instruccin.
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
28
Apuntador de la Pila (SP).
La pila puede estar en cualquier ubicacin de los 64 Kb de memoria y puede tener
cualquier tamao, mientras el espacio lo permita. Cada vez que una instruccin mete un
dato al stack, el SP se decrementa automticamente. Cuando se saca un dato de la pila, el
SP se incrementa automticamente. En cualquier momento, el SP retiene la siguiente
localidad de 16 bits libre del stack. La pila es usada para llamadas a subrutinas,
interrupciones y como almacenamiento temporal de datos.
Contador de Programa (PC)
Es un registro de 16 bits que aloja la direccin de la siguiente localidad a ser
ejecutada.
Registro de Cdigo de Condicin (CCR).
Contiene cinco indicadores de estado, dos bits de mascara de interrupcin y un bit
de deshabilitacin de STOP.
La bandera C se usa para indicar Acarreo (Carry) en sumas, y prstamo (Borrow) en restas. Tambin es un indicador de error en multiplicaciones y divisiones. Las
instrucciones de corrimiento y rotacin a travs del carry se usan para facilitar
operaciones de mltiples bytes.
La bandera V (Overflow) indica que una operacin de complementos a dos ha producido un desbordamiento.
La bandera Z (Zero) se enciende cuando todos los bits de un resultado son cero.
La bandera N (Negative) refleja el bit ms significativo (MSB) del resultado. En complemento a dos este bit es uno para nmeros negativos y cero para nmeros
positivos.
La bandera H indica un acarreo del bit 3 durante una suma, se usa para ajustar nmeros que estn en formato BCD
La mscara de interrupcin (bit I) es un deshabilitador de todas las interrupciones enmascarables. Mientras este bit este encendido, el procesador deja pendientes las
interrupciones, no las atiende, pero las memoriza, las atender cuando este bit se
apague Se enciende automticamente al meter a la pila los registros pero antes de ir
por el vector de interrupciones.
El bit X (XIRQ mask) se usa para deshabilitar las interrupciones del pin /XIRQ. Este pin es una versin moderna del /NMI (Non-Maskable Interrupts) de los
primeros micros.
Despus del reset, el bit X se activa y mientras permanezca en UNO, las
interrupciones hechas en pin XIRQ sern ignoradas. Una instruccin debe apagar el bit X
para habilitar interrupciones en el pin XIRQ.
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
29
Despus de que bit ha sido apagado, no se podr regresar a UNO mediante una
instruccin de software. Esto la har la instruccin RTI al final de la interrupcin. Aunque
al entrar a la interrupcin, la bandera X e I sern puestas en UNO para evitar interferir la
interrupcin.
3.4 Modos de direccionamiento.
Todos los modos de direccionamiento del HC11 los soporta el HC12 y adems se
incluyen nuevos modos de direccionamiento indexado
Existen seis modos bsicos de direccionamiento para acceder a los datos:
Inmediato
Directo
Extendido
Indexado
Inherente
Relativo
Inmediato. El argumento se encuentra inmediatamente despus de la instruccin. Por
ejemplo:
LDAA #$AC ; Carga el acumulador A con el numero AC hexadecimal
LDD #1492 ; Carga el acumulador doble con el numero 1492 decimal
Directo. Permite acceder de las localidades $0000 a $00FF, indicando el ultimo byte de la
localidad. Por ejemplo:
LDAA $AC ; Carga A con el contenido de la localidad AC hexadecimal
STAB $7 ; Guarda el contenido de B en la localidad 7.
Extendido. La direccin efectiva se expresa usando dos bytes. Permite acceder los 64KB
de memoria. Por ejemplo:
LDAA $AA03 ; Carga A con el contenido de la localidad AA03
ADDB $01F5 ; Suma el acumulador B y el contenido de 01F5
Indexado. Es el modo ms verstil de todos. Se dispone de las siguientes variantes:
Indexado con offset de 5, 9 o 16 bits. El offset se suma al registro base (X, Y, SP o PC)
para formar la direccin de memoria que ser afectada por la instruccin. Por ejemplo,
asuma que X contiene un $1000 y Y un $2000,
LDAA 0,X ;Carga el acumulador con el contenido de la localidad
;$1000 ($1000 + 0)
STAB -8,Y ;Guarda el contenido del acumulador B en la
; localidad $1FF8 ($2000 - 8)
LDAA $FF,X ;Carga el acumulador con el contenido de la localidad
;$10FF ($1000 + $FF)
STAB -20,Y ;Guarda el contenido del acumulador B en la
; localidad $1FEC ($2000 - 20)
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
30
Indexado Indirecto de 16 bits. La direccin efectiva se obtiene del contenido de la direccin
que resulte de sumar un registro base a un nmero. Por ejemplo, asuma que X contiene un
$1000 y que en la localidad $100A y $100B se tiene un $2000,
LDAA [10,X] ;Carga el acumulador con el contenido de la localidad
;que resulte de sumar $1000 y $A
Indexado con Auto Pre/Post Decremento/Incremento. Este direccionamiento provee cuatro
formas de cambiar automticamente un Registro ndice Base al ejecutar una instruccin.
Los registros base pueden ser X, Y o SP.
El pre-decremento y pre-incremento modifican el registro base antes de acceder a la
memoria. El post-decremento y post-incremento usan el valor inicial del registro y despus
de acceder la memoria lo modifican. Por ejemplo:
STAA 1,SP ;equivalente a PSHA
STX 2,SP ;equivalente a PSHX
LDX 2,SP+ ;equivalente a PULX
LDAA 1,SP+ ;equivalente a PULA
Indexado con un offset en un acumulador. Ejemplo
LDAA B,X ;Carga el acumulador A con el contenido de la
; localidad que resulte de sumar B y X
Indexado Indirecto con el acumulador D. Usa un clculo indirecto donde primero suma el
acumulador D a un nmero y de all obtiene una direccin, el contenido de esta es el valor
que se usa. Por Ejemplo:
JMP [D, PC] ; Salta a la localidad que se encuentre en la direccin
; de resulte de sumar D + PC
Inherente. El operando esta implcito en la instruccin, es decir, no requiere ir por ningn
argumento. Por ejemplo:
ABA ; Suma acumuladores
INCB ; Incrementa B
Relativo. Se utiliza nicamente para saltos. Estas instrucciones consumen dos bytes, el
segundo byte se suma al contenido actual del PC, pudiendo ser un salto hacia atrs o hacia
adelante. Ejemplo:
BRA INICIO ; Salta a la etiqueta Inicio
BCC LBCC ; Salto largo si el carry esta apagado
BEQ $ ; Salta aqu mismo
LBCC: JMP MAS_ALLA
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
31
3.5 Modos de operacin.
Modos de Operacin Normal y Emulacin
Normal Single-Chip Mode
Normal Expanded Wide Mode
Normal Expanded Narrow Mode
Emulation Expanded Wide Mode
Emulation Expanded Narrow Mode
Modos de Operacin Especiales
Special Single-Chip Mode with active Background Debug Mode
Special Test Mode (Motorola use only) Special Peripheral Mode (Motorola use only)
3.6 Organizacin de la memoria.
Figura 3.4 Resumen del Mapa de Memoria
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
32
Figura 3.5 Mapa de Memoria del MC9S12C32
3.7 Conjunto de Instrucciones.
Se considera que el HC12 tiene un superjuego de instrucciones del juego de
instrucciones del HC11. El cdigo escrito para el HC11 puede ser ensamblado y ejecutado
en el HC12. Para una descripcin completa vea el manual del microcontrolador.
Instrucciones de Carga y Almacenamiento.
Las instrucciones de carga copian contenidos de localidades de memoria en algn
registro del microcontrolador. Las banderas del CCR se afectan automticamente, excepto
en las instrucciones LEA
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
33
Figura 3.6 Instrucciones de Carga
Las instrucciones de Almacenamiento copian el contenido de registros a memoria.
Automticamente se afectan las banderas correspondientes.
Figura 3.7 Instrucciones de Almacenamiento
Instrucciones de Transferencia e Intercambio.
Las instrucciones de Transferencia copian contenidos de un registro a otro. La
instruccin TFR es universal para cualquier registro como fuente o destino. Se conservan
las transferencias entre acumuladores TAB y TBA para compatibilidad con el HC11. Estas
dos ltimas instrucciones afectan las banderas, pero TFR no las afecta. Las instrucciones
de Intercambio pasan datos entre registros.
Figura 3.8 Instrucciones de Transferencia e Intercambio
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
34
Instrucciones de Movimiento de Datos.
Permiten copiar contenidos entre localidades de memoria, sin afectar registros. Se
tienen seis combinaciones: IMM EXT, IMM IDX, EXT EXT, EXT IDX, IDX EXT, IDX IDX.
Figura 3.9 Instrucciones de Movimiento de Datos
Instrucciones de Adicin y Substraccin.
Se dispone de sumas y restas con y sin signo en 8 y 16 bits
Figura 3.10 Instrucciones de Suma y Resta
Instrucciones con nmeros BCD.
Cuando se sumen nmeros BCD, se afectara la bandera Half-carry (H), enseguida
hacer ajustes DAA.
Figura 3.11 Instrucciones con nmeros BCD
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
35
Instrucciones de Decremento e Incremento.
Son operaciones restas y sumas optimizadas en 8 y 16 bits. No afectan la bandera
Carry.
Figura 3.12 Instrucciones de Decremento e Incremento
Instrucciones de Comparacin y Prueba.
Estas instrucciones realizan restas, pero el resultado no se almacena, solo se afectan
las banderas correspondientes.
Figura 3.13 Instrucciones de Comparacin y Prueba
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
36
Instrucciones Lgicas.
Realizan operaciones lgicas entre el acumulador o el CCR y la memoria.
Figura 3.14 Instrucciones Lgicas
Instrucciones de Borrado, Complemento y Negacin.
La instruccin Clear llena de ceros el Acumulador o la Memoria. El complemento a
1 niega cada bit y la Negacin realiza el complemento a dos.
Figura 3.15 Instrucciones de Borrado, Complemento y Negacin
Instrucciones de Prueba y Manipulacin de Bits.
Se utiliza una mscara para probar y manipular los bits en el acumulador o
memoria.
Figura 3.16 Instrucciones de Prueba y Manipulacin de Bits
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
37
Instrucciones de Multiplicacin y Divisin.
Se tiene multiplicacin con signo y sin signo en 8 y 16 bits. El producto es de 16 y
32 bits respectivamente. La Divisin entera y fraccional usa divisor, dividendo, cociente y
residuo de 16 bits. La divisin extendida usa un dividendo de 32 bits con divisor, cociente y
residuo de 16 bits.
Figura 3.17 Instrucciones de Multiplicacin y Divisin
Instrucciones de Corrimiento y Rotacin.
Se tienen corrimientos y rotaciones para todos los acumuladores y la memoria. En
todos los casos, el bit que sale, se pasa al Carry para facilitar las operaciones de mltiples
bytes.
Figura 3.18 Instrucciones de Corrimiento y Rotacin.
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
38
Instrucciones de Saltos.
Producen que una secuencia se altere si se satisface una condicin. Existen tres tipos
de saltos: saltos cortos, saltos largos y saltos causados por bits. Los saltos cortos permiten
saltar en un rango de -128 a 127 bytes. Los saltos largos permiten saltar a cualquier lugar de
los 64KB de memoria. Los saltos causados por bits tienen un rango de -128 a 127 bytes.
Figura 3.19 Instrucciones de Saltos Cortos
Figura 3.20 Instrucciones de Saltos Largos
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
39
Figura 3.21 Instrucciones de Saltos causados por bits
Instrucciones de Subrutinas.
Para llamar a una subrutina, normalmente se utilizan BSR o JSR. Si la subrutina
esta en memoria expandida se usa CALL. La subrutina debe terminar con RTS para las dos
primeras llamadas. Para terminar una CALL utilice RTC.
Figura 3.22 Instrucciones para Subrutinas
Instrucciones para Manipular los ndices
Permiten manipular los ndices, los acumuladores y la memoria.
Figura 3.23 Instrucciones para Manipular ndices
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
40
Instrucciones para Manejar el Stack
Figura 3.24 Instrucciones para Manipular el Stack.
Instrucciones para Manejar el Cdigo de Condicin.
Figura 3.25 Instrucciones para Manipular el Cdigo de Condicin.
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
41
3.8 Modelo de Programacin.
3.8.1 Programas en lnea recta.
Ejemplo 1 Desempacado de dgitos
Separe el contenido de la localidad $0800 en dos secciones de 4 bits (nibbles) y
gurdelos en $0801 y $0802. Coloque los cuatro bits ms significativos de la localidad
$0800 en los cuatro bits menos significativos de la localidad $0801; coloque los cuatro bits
menos significativos de la localidad $0800 en los cuatro bits menos significativos de la
localidad $0802.
Problema Ejemplo:
($0800) = AE
Resultado ($0801) = 0A
($0802) = 0E
Programa Fuente:
ORG $4000 ;Inicio del bloque Flash ROM
LDAA $800 ;Trae dato a desempacar
TAB ;Respalda dato
ANDA #$0F ;Mata nibble alto
STAA $802 ;Guarda nibble bajo en DATO2
ANDB #$F0 ;Mata nibble bajo
LSRB ;Pasa nibble alto a nibble bajo
LSRB
LSRB
LSRB
STAB $801 ;Guarda nibble alto en DATO3
WAI
ORG $0800
FCB $AE,00,00
Ejemplo 2
Encontrar el mayor de dos nmeros
Coloque al mayor de los contenidos de las localidades 0800 y 0801 en la localidad
0802. Asuma que los contenidos de 0800 y 0801 son nmeros de 8 bits sin signo.
Problema Ejemplo:
a. (0800) = 3F
(0801) = 2B
Resultado (0802) = 3F
b. (0800) = 75
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
42
(0801) = A8
Resultado (0802) = A8
Diagrama de flujo
Programa Fuente:
ORG $4000
LDD $0800 ;Carga dato en A y B
CBA ;Compara
BCS GUARDA ;Salta si B mayor
TAB ;Pasa dato en A a B
GUARDA STAB $802 ;Guarda resultado
WAI
ORG $0800
FCB $3F,$A5,00
END
Ejemplo 3
Raz Cuadrada
Calcule la raz cuadrada del nmero que esta en la localidad 0801 a partir de una
tabla y coloque el resultado en la localidad 0800. Asuma que el nmero en la localidad
Inicio
Dato1 = (0800)
Dato2 = (0801)
Es
Dato1>Dato2
?
Dato1 = Dato2
(0802) = Dato1
Fin
SI
NO
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
43
0801 es un entero sin signo entre 0 y 99. La tabla inicia a partir de la localidad 0810, el
primer dgito es la parte entera y el segundo es la fraccin, expresados en BCD.
Problema Ejemplo:
a. (0801) = 02
Resultado (0800) = 14 Porque la raz de 2 es 1.4142
b. (00801) = 0C
Resultado (0800) = 35 Por que la raz de 12 es 3.4641
Programa Fuente:
ORG $4000
INICIO LDAB $801 ;Trae dato a B
CLRA ;Limpia para definir dir. de 16 bits
XGDX ;Pasa dir. de 16 bits a X
LDAA $810,X ;Trae valor de la tabla
GUARDA STAA $800 ;Guarda raz en localidad $800
BRA INICIO
ORG $810 ;Aqu va la tabla
FCB 00,$10,$14,$17,$20,$22,$25,$26,$28,$30
END
3.18.2 Programas con lazos.
Los lazos son la estructura mas utilizada en programacin, permiten realizar tareas
repetitivas a muy alta velocidad y con gran precisin. Se componen de cuatro secciones:
1. Seccin Inicializadora. Aqu se preparan las variables que usar el lazo.
2. Seccin de Procesamiento. Es la parte que realmente hace el trabajo, debe ser ptima en tiempo.
3. Seccin de Control del Lazo. Aqu se actualizan las variables y se revisa si se contina en el ciclo.
4. Seccin Finalizadora. Es para recuperar los resultados del proceso repetitivo.
La siguiente figura muestra el diagrama de bloques de un lazo:
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
44
Figura. 3.21 Diagrama de flujo de un lazo
Ejemplo 4
Cuenta de bits uno.
Cuente los bits uno de la localidad 0800, deje el resultado en la localidad 0801.
Problema Ejemplo.
a. (0800) = 3A = 0011 1010
Resultado (0801) = 04 El nmero 3A tiene cuatro unos
b. (0800) = 1C = 0001 1100
Resultado (0801) = 03 El nmero 1C tiene tres unos
Diagrama de Flujo
In ic io
S e c c io n
In ic ia liz a d o ra
S e c c io n d e
P ro c e s a m ie n to
S e c c io n d e
C o n tro l d e l
la z o
Y a T e rm in
la ta re a ?
S e c c io n
F in a liz a d o ra
F in
N O
S i
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
45
Programa Fuente:
ORG $4000
INICIO: LDAA $800
;Trae dato a A
LDX #8
;Cuenta en X
CLRB
;Limpia total
OTRO: LSRA
;Corre un bit a la derecha
BCC NO_HUBO
;Es Carry = 1
INCB
;Si. Incrementa
NO_HUBO: DEX
;No. Decrementa cuenta
BNE OTRO
;Todos los bits?
STAB $801
;Si. Salva total
WAI
Ejemplo 5
Suma de datos
Calcule la suma de una serie de nmeros. La longitud de la serie esta en la localidad
0801, y la serie en s inicia en la localidad 0802. Guarde la suma en la localidad 0800.
Asuma que el resultado cabe en 8 bits de tal manera que los acarreos puedan ser ignorados
Problema Ejemplo:
(0801) = 03
(0802) = 28
(0803) = 55
(0804) = 26
Resultado (0800) = (0042) + (0043) + (0044)
= 28 + 55 + 26
= A3
Inicio
Dato = (0800)
Cuenta = 8
Total = 0
Es
Carry = 1
?
Total = Total + 1
Dato = Dato / 2
Fin
SI
NO
(0801) = Total
Es
Cuenta = 0
?
Cuenta = Cuenta -1
SI
NO
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
46
Existen tres entradas para la suma, debido a que (0801) = 03
Diagrama de flujo:
Programa Fuente:
ORG $4000
INICIO
LDAA #0 ;Suma = cero
STAA $800 ;Parte alta de la
cuenta
LDX #0 ;Indice = cero
OTRO:
ADDA $802,X ;Suma =
Suma + dato
INX ;Apunta a sig. dato
CPX $800 ;Se sumo todo?
BNE OTRO ;Si no, va por otro
STAA $800 ;Guarda suma
END
Nota. Observe que fue necesario escribir
un cero en la localidad $800, esto debido
a que el Registro ndice es de 16 bits.
Adems, la comparacin se hace con la
localidad $800 y no con la $801.
Ejemplo 6
Valor Mximo.
Inicio
Suma = 0
Indice = 0
Suma = Suma +
(0802 + Indice)
Indice = Indice + 1
Es
Indice = (0801) ?
(0800) = Suma
Fin
No
Si
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
47
Encuentre el mayor elemento de un bloque de datos. La longitud del bloque esta en
la localidad 0801 y el bloque en si inicia en la localidad 0802. Guarde el elemento mximo
en la localidad 0800. Asuma que los nmeros en el bloque son todos de 8 bits sin signo.
Problema Ejemplo:
(0801) = 05
(0802) = 67
(0803) = 79
(0804) = 15
(0805) = E3
(0806) = 72
Resultado (0800) = E3 Debido a que es el mayor de los cinco nmeros
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
48
Diagrama de Flujo
Programa Fuente
ORG $4000
INICIO:
LDAB $801 ;Cuenta en B
CLRA ;Limpia A
XGDX ;Cuenta en X
CLRA ;Borra para mx
OTRO:
CMPA $801,X ;Compara Mximo en
;A con memoria
BCC NOCAMB ;Salta si Mximo es
;mayor
LDAA $801,X ;El dato en memoria
; fue mayor, cambiar
Inicio
Base = 0801
Indice =(0801)
Max = 0
Es
Max =>
(Base+Indice)
?
Max = (Base +
Indice)
Indice = Indice -1
Es
Indice = 0
?
(0800) = Max
Fin
Si
No
Si
No
-
M.C. Abel Daz Olivares Sistemas Embebidos para el Automvil
49
NOCAMB:
DEX ;Decrementa cuenta
BNE OTRO ;Revisados todos?
STAA $800 ;Salva mximo en $800
BRA INICIO
ORG $0801
FCB 5,23,5,27,8,9 ;5 valores para probar
END