Sistemas Embebidos Para El Auto

download Sistemas Embebidos Para El Auto

of 49

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