532
5/21/2018 SISTEMASEMBEBIDOSenC.pdf-slidepdf.com http://slidepdf.com/reader/full/sistemas-embebidos-en-cpdf 1/532 1

SISTEMAS EMBEBIDOS en C.pdf

Embed Size (px)

Citation preview

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    1/532

    1

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    2/532

    2

    INDICEIntroduccin

    1.1 Qu es un Sistema Embebido?1.2.1 Qu es un compilador? Qu es un interpretador?1.2.2 Estructura y pasadas de un compilador1.2.3 Tiempo de compilacin vs tiempo de ejecucin1.3 De dnde viene el ANSI C?1.3.1 Forma general de un proyecto en C1.4 Perifricos ms comunes en Sistemas Embebidos1.4.1 Puertos de entrada/salida y Funcin KBI1.4.2 Conversor analgico a digital (ADC)1.4.3 Computador operando apropiadamente (COP)1.4.4 Detector de bajo nivel de voltaje (LVI)1.4.5 Temporizador (TIMER)

    1.4.6 Comunicacin serial asincrnica (SCI)1.4.7 Comunicacin serial sincrnica (SPI)1.4.8 Comunicacin serial I2C1.5.1 El Concepto de Interrupcin1.5.2 Cmo trabaja el procesador ante una interrupcin?1.6 Cambio de contexto1.7 Latencia de interrupcin1.8 Zonas crticas de software1.9.1 Herramientas para MicrochipTM1.9.2 Herramientas para RenesasTM

    1.9.3 Herramientas para Texas Instrumens1.9.4 Herramientas para FreescaleTM1.9.5 Herramientas utilizadas en los ejemplosResumen del captuloPreguntas del captulo

    Introduccin2.1 Arquitectura RISC (Harvard) Microchip de 8 bits2.1.1 Componentes bsicos de la arquitectura MicrochipTM

    2.1.2 Modos de direccionamiento MicrochipTM2.1.3 Mapa de memoria MicrochipTM del PIC16F877A2.1.4 Caractersticas del microcontrolador PIC16F877A2.1.5 Fuentes de interrupcin del microcontrolador PIC16F877A2.2 Arquitectura CISC (Von Newman) FreescaleTM de 8 bits2.2.1 Modelo de programacin FreescaleTM HC(S) 082.2.2 Modos de direccionamiento FreescaleTM HC(S) 082.2.3 Mapa de memoria del microcontrolador AP16A

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    3/532

    3

    2.2.4 Caractersticas del microcontrolador AP16A2.2.5 Fuentes de interrupcin del microcontrolador AP16AResumen del captuloPreguntas del captulo

    Introduccin3.1 El manejador de Proyectos (IDE)3.2 Introduccin al compilador CCS para MicrochipTM3.2.1 Creacin de proyectos embebidos usando el ambiente CCS3.2.2 Familiarizacin con el IDE del CCS3.3 Introduccin al compilador Codewarrior de FreescaleTM3.3.1 Creacin de proyectos embebidos en C usando Codewarrior3.3.2 Familiarizacin con el IDE de Codewarrior3.4 El primer programa embebido en C usando CodewarriorResumen del captulo

    Preguntas del captulo

    Introduccin4.1 Ventajas y desventajas del C usado en Sistemas Embebidos4.2 Programacin embebida vs programacin para PC4.3 Constantes y variables4.3.1 Constantes4.3.2 Variables4.4.1 char en Codewarrior (o int8 en CCS)4.4.2 int en Codewarrior (o int16 para CCS)

    4.4.3 long en Codewarrior (o int32 para CCS)4.4.4 float (en Codewarrior y en CCS)4.4.5. Double en Codewarrior (no soportado en CCS)4.5 Cmo elegir un tipo de variable en un sistema embebido?4.6 Modificadores a tipos de datos comunes en Sistemas Embebidos4.6.1 El modificador unsigned4.6.2 El modificador signed4.6.3 El modificador volatile4.6.4 El modificador near

    4.6.5 El modificador far4.6.6 El modificador register4.6.7 El modificador const4.6.8 El modificador static4.6.9 El modificador extern4.7 Moldes o Casting para variables y constantesResumen del captuloPreguntas del captulo

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    4/532

    4

    Introduccin5.1 Directivas ms comunes del preprocesador5.1.1 Macro o equivalencia #define5.1.2 Inclusin de archivo de cabecera #include5.1.3 Notificacin de error al compilar #error5.1.4 Notificacin de precaucin al compilar #warning5.1.5 Directiva #line5.1.6 Compilacin condicional #if, #elif, #else, #endif, #ifdef y #ifndef5.1.7 Directiva #undef5.1.8 Directiva #pragma5.2 Medida en bytes de expresiones sizeof5.3 Definiciones de tipo typedef5.4 Operadores aritmticos5.5 Operadores relacionales

    5.5.1 Operadores de Comparacin cuantitativa: , =5.5.2 Operador de igualdad: ==, !=5.6 Operadores lgicos booleanos5.6.1 El operador || (OR)5.6.2 El operador && (AND)5.6.3 El operador ! (NOT)5.7 Operadores orientados a BIT5.7.1 El operador | (OR Bit a Bit)5.7.2 El operador & (AND bit a bit)5.7.3 El operador ~ (NOT bit a bit)

    5.7.4 El operador ^ (OR exclusiva o XOR)5.8 Los operadores >> y

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    5/532

    5

    6.2.2 La sentencia do... while6.2.3 La sentencia while6.2.4 La sentencia for6.2.5 La sentencia switch6.2.6 La sentencia break6.2.7 La sentencia continue6.2.8 La sentencia goto6.3 Mezcla de C con lenguaje ensamblador en Sistemas Embebidos6.4 Recursividad en Sistemas Embebidos6.5 Arreglos (Arrays) de datos6.5.1 Arreglos unidimensionales6.5.2 Cadenas de datos strings6.5.3 Arreglos multidimensionales6.5.4 Estructuras struct y uniones union6.5.5 Estructuras de bits

    6.6 Apuntadores a funciones6.7 Manejo de interrupciones en Sistemas Embebidos desde C6.7.1 Configuracin de interrupciones en Codewarrior 6.8 Convenciones tiles de programacin embebida en C6.8.1 Sobre la distribucin del cdigo fuente6.8.2 Sobre los nombres de funciones6.8.3 Sobre las variables y apuntadores6.8.4 Sobre las constantes6.8.5 Sobre los parntesis y corchetesResumen del captulo

    Preguntas del captulo

    Introduccin7.1 Qu es una librera ANSI C?7.2 Librera matemtica 7.3 Librera estndar 7.4 Librera estndar de entrada/salida 7.5 Librera de manejo de cadenas 7.6 Librera de tipos

    7.7 Librera de manejo de tiempo Resumen del captuloPreguntas del captulo

    Introduccin8.1 La ecuacin de consumo de energa8.2 Modo Wait8.3 Modo Stop

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    6/532

    6

    8.3.1 Modo Stop38.3.2 Modo Stop28.3.3 Modo Stop18.4 Otros modos de bajo consumo8.4.1 Modo Low Power Run (LPrun)8.4.2 Modo Low Power Wait (LPwait)8.5 Consideraciones en el diseo de un Sistema EmbebidoResumen del captuloPreguntas del captulo

    Introduccin9.1 Proccess or Exper tTM"9.2 El Concepto del bean9.3 Librera de beans9.4 Creacin de proyectos usando el Processor Expert

    9.5.1 La ventana bean inspector9.5.2 La ventana bean selector9.5.3 La ventana Target CPU9.6 Creacin de beans en Processor Expert9.6.1 Creacin de un bean plantilla9.6.2 Uso del Bean Wizard9.7 Consideraciones sobre el uso del Processor ExpertResumen del captuloPreguntas del captulo

    Introduccin10.1 Qu es un sistema operativo de tiempo real?10.2.1 Tareas (Task Thread)10.2.2 Recursos (resources)10.2.3 Eventos (events)10.2.4 Semforos (semaphores)10.2.5 Mensajes (message mailbox)10.2.6 Bloques de Memoria (buffers)10.2.7 Reloj y Timers (Clock Tick & Timers)

    10.2.8 Kernel10.3 Sistema de Loop consecutivo/interrupcin10.3.1 Diseo del Loop principal10.3.2 Archivo de cabecera TareaX.H.10.3.3 Archivo cdigo fuente TareaX.C.10.3.4 Manejo de prioridades10.4 Sistema RTOS uC/OS-II de Micrium.10.4.1 Consideracin para la implementacin del uC/OS-II.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    7/532

    7

    10.4.2 Manejo de las secciones crticas de software en uC/OS-II.10.4.3 Portado del uC/OS-II para el AP16AResumen del captuloPreguntas del captulo

    Anexo_1Anexo_2GlosarioBibliografa

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    8/532

    8

    INTRODUCCIN

    El captulo est orientado a definir los conceptos sobre programacin general que servirn durante elcompleto recorrido del texto; inicialmente se define lo que es un sistema embebido, mostrando elmodelo expandido hasta llegar al popular modelo de una sola pastilla (single chip).

    Se aclara el concepto de compilador con respecto al de interpretador y se muestran los pasos tpicosque un compilador tiene que realizar antes de generar el programa ejecutable en el chip, dejando muyclaro los tiempos que tardan los procesadores involucrados en el diseo: el que realiza la compilacin(tiempo de compilacin) y el que ejecuta el cdigo generado por el primero (tiempo de ejecucin).

    Un poco de historia sobre los orgenes del C y el porqu ha llegado a convertirse en el lenguaje mspopular de programacin, tanto para programadores de alto nivel en computadoras comerciales comopara programadores de microcontroladores de bajo costo. Se muestra de forma general la estructura deun cdigo desarrollado en lenguaje C y se familiariza al programador, que viene del lenguaje deensamblador, con las palabras reservadas, los operadores y los signos propios de un cdigo en lenguajeC.

    Se abordan algunos de los perifricos existentes en los microcontroladores del mercado, con los cualesse realizarn prcticas reales en captulos posteriores, como son los dispositivos de entrada y salida(I/O), el convertidor analgico a digital (ADC), el perro guardin (COP), el detector de bajo nivel devoltaje (LVI), el temporizador (TIMER), y las comunicaciones seriales asincrnicas (SCI) ysincrnicas (SPI, I2C).

    Se dedica un buen espacio a un tema con el que siempre tienen que ver los sistemas embebidos, comolo es el de las interrupciones, parte fundamental y crtica en cualquier diseo basado enmicrocontroladores. Este concepto ser aclarado con un ejemplo de la vida cotidiana y luego puesto enel contexto propio de un procesador.

    Al final se describen las herramientas de desarrollo de cuatro de las marcas ms populares defabricantes de microcontroladores como son las de Microchip, Renesas, Texas Instruments yFreescaley la posibilidad de tener una herramienta de diseo propia a muy bajo costo, para ejercitar deforma prctica todos los ejemplos del libro.

    1.1 QU ES UN SISTEMA EMBEBIDO?

    Se conoce como sistema embebido a un circuito electrnico computarizado que esta diseado para

    cumplir una labor especifica en un producto.

    La inteligencia artificial, secuencias y algoritmos de un sistemaembebido, estn residentes en la memoria de una pequeacomputadora denominada microcontrolador.

    A diferencia de los sistemas computacionales de oficina y laptops,estos sistemas solucionan un problema especfico y estndispersos en todos los ambientes posibles de la vida cotidiana. Es

    Los sistemasembebidos

    controlan un

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    9/532

    9

    comn encontrar sistemas embebidos en los vehculos; porejemplo, controlando el sistema de inyeccin de combustible, enlos sistemas de frenado ABS (Anti-lock Braking Systems), en elcontrol de espejos, sistemas de proteccin contra impacto(Airbag), alarmas contra robo, sistemas de ubicacin, entre otros.Tambin en los electrodomsticos de uso diario: controlando la

    temperatura en refrigeradores, estufas, hornos microondas yplanchas; el motor de licuadoras, lavadoras de ropa, lavaplatos,aspiradoras y juguetes; en los equipos celulares, agendas debolsillo, PDA, cajeros automticos, cmaras fotogrficas,reproductores de msica (MP3) y video, equipo de gimnasio,equipo mdico, y en general, en una gran cantidad de dispositivosde uso diario (ver Grfico 1.1).

    sinnmero de objetoscotidianos, comocelulares, agendas

    de bolsillo, cmarasfotogrficas o sistemas

    de inyeccin de

    combustible, entreotros.

    Se sabe que en general, un consumidor promedio interacta con alrededor de 400 microcontroladorespor da; este nmero tiende a crecer significativamente para los prximos aos, considerando que losprocesadores son cada vez mas pequeos, consumen menos energa y el precio es menor gracias a la

    economa de escala aplicada en su fabricacin, aspectos que ayudan a reemplazar en mayor proporcinlos sistemas lgicos, los equipos electromecnicos y en el futuro, se podrn incorporar en los equiposdesechables.

    La programacinembebida

    La programacin embebida, como es el caso de este libro, vasiempre orientada a aplicaciones portables o compactas,alimentadas por batera o por una fuente de poder de bajacapacidad de corriente (por cuestiones de espacio), menordisipacin de calor y muy econmica.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    10/532

    10

    permite desarrollarinstruccionesprecisas para

    microcontroladoresque cumplen funciones

    especficas; por

    ejemplo, controlar elciclo de trabajo enuna lavadora.

    Lo anterior apunta a tener una aplicacin final de tamao reducidoy de bajo costo; sin embargo, es propio de los sistemas embebidossu robustez. Esta caracterstica se debe al gran rango deaplicaciones y ambientes que cubren: industriales, de consumo,automotriz, electrodomsticos, donde el equipo final puede estarsometido a situaciones muy exigentes como pueden ser el polvo,

    la humedad, la vibracin, rotaciones de alta velocidad, situacionesextremas de presin y/o temperatura.

    El nmero de aplicaciones y de ambientes soportados por lossistemas embebidos crece cada vez ms, y una de las principalesrazones fue la llegada de los procesadores de una sola pastilla(microcontroladores single-chip), en los cuales una gran parte dela electrnica est incorporada y permite reducciones de tamao,menor consumo y facilidades de produccin.

    Descripcin de seales:

    AS: Seal de Address Strobe.R/W: Seal de Read/Write.E: Seal de Sincronizacin.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    11/532

    11

    CSROM: Chip Select de Memoria de programa.CSRAM: Chip Select de Memoria de datos.Data: Bus de Datos bidireccional.ADDR: Bus de Direcciones (AddrH: AddrL).Oscilador: Seal de reloj.Vdd: Alimentacin de voltaje.Vss: Referencia negativa de voltaje.CS1: Chip Select de puerto de Entrada.CS2: Chip Select de puerto de Salida.

    El sistema embebidosingle-chipcontiene en usa sola pastilla de silicio, todo el esquema de un sistemaexpandido convencional con su procesador en el centro, sistema de decodificacin, sistema demultiplexaje datos/direccin, memorias de almacenado (en la cual es ejecutado el programa), memoriaRAM, adems de las seales de sincronizacin que administran el acceso a las memorias y los ciclos delectura y escritura (R/W) (ver Grfico 1.2 y Grfico 1.3).

    1 Imagen cortesa de Freescale.

    1.2.1 Qu es un compilador? Qu es un interpretador?

    El programa editado es llevado a la mquina que lo ejecutar finalmente, en este caso un

    microcontrolador comnmente llamado target, de dos formas posibles:

    El programa es convertido a cdigo de mquina al 100% y luego se ejecuta.El programa es enviado al target tal cual fue editado, y ste toma lnea por lnea y lo vaconvirtiendo a cdigo de mquina a medida que va pasando por l.

    En el primer caso se dice que el cdigo es compilado, y en el segundo caso, que el cdigo esinterpretado.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    12/532

    12

    Un compiladores un programa de software que transforma uno ovarios archivos de cdigo fuente y genera un archivo en cdigo demquina llamado ejecutable; este nuevo archivo es enviado altarget para que lo ejecute.

    Un interpretadores un software que es instalado en el target, el

    cual est preparado para recibir un archivo fuente editado; una vezel target recibe la orden de ejecutar inicia el proceso de cambiarlnea por lnea de programa a su respectivo cdigo de mquina yejecutar este cdigo (ver Grfico 1.4).

    Ambos esquemas tienen ventajas. Para el caso de un compilador eltiempo requerido para convertir el cdigo que ejecutar la mquinase utiliza completamente antes de su ejecucin final, y en el casode compiladores cruzados, este cdigo lo convierte una mquinacon mayores recursos que el target, as el cdigo queda listopara ejecutarse ahorrando tiempo a la mquina final, la cual no se

    tiene que enterar de los pormenores del cdigo. Sin embargo, parahacer la conversin a cdigo de mquina, se deber conocer con anterioridad la mquina que va aejecutar el cdigo, y este cdigo quedar limitado a ejecutarse en dicha mquina.

    En el caso del interpretador, se tiene el cdigo fuente hasta el ltimo momento, cuando es ejecutado yel target se encarga de la conversin, de modo que el cdigo no queda limitado a ejecutarse endeterminada mquina, sino que quedar libre para que cualquier mquina lo tome, lo convierta y loejecute. La gran ventaja en este caso es su amplia portabilidad, lo que independiza el cdigo de lamquina que lo ejecuta; sin embargo, su gran desventaja radica en que la mquina tendr que invertirparte de su tiempo y recursos en tomar el cdigo y convertirlo a su respectivo cdigo de mquina paraluego hacer su ejecucin.

    Una vez que el programa est compilado las lneas del cdigo fuente dejan de tener sentido en laejecucin del programa. Cuando se usa un intrprete, el cdigo fuente debe estar presente cada vez quese quiere ejecutar el programa.

    Un archivocompilado se

    ejecuta directamente

    en el microcontroladorporque est convertidoa lenguaje mquina;

    en cambio, un archivointerpretado requiereun software incluido

    en el microcontroladorpara su traduccin.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    13/532

    13

    1.2.2 Estructura y pasadas de un compilador

    El compilador, como programa de software, seguir varios pasospara realizar la conversin del cdigo texto original .C y .H a sucdigo ejecutable, en este caso .S19 o .HEX, que ser el archivoque se enviar al sistema final target.

    Los archivos con extensin .C y .H que corresponden al proyecto,son inicialmente pasados por un subprograma llamado el pre-procesador, el cual se encarga de crear archivos intermedios conla solucin de todos los macros (conversin de texto en nmeros oequivalencias), solucionar la compilacin condicional (en caso deexistir), e incluir el cdigo que finalmente se compilar (verGrfico 1.5).

    Este archivo temporal se pasa a otro subprograma encargado del Anlisis Semntico, donde se analiza lnea a lnea el cdigo,verificando que todos los parntesis y/o corchetes abiertos seancerrados, que las palabras reservadas estn correctamente escritaso, lo que es lo mismo, que todas las palabras estn en el lxico delC.

    En unacompilacin el

    pre-procesador

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    14/532

    14

    Si este subprograma detecta algn error, suspender su entrega alsubprograma siguiente y dar como salida un archivo de errores(tpicamente de extensin .ERR), el cual es usado para mostrar enel ambiente del editor uno a uno los errores que el compiladorencuentra en este paso.

    Si por el contrario, no se tienen errores sintcticos, se enva elnuevo cdigo intermedio al Generador de Cdigo, el cual tendrcomo salida un cdigo en ensamblador (extensin .ASM),equivalente lnea a lnea al cdigo de entrada entregado.

    Este nuevo archivo en lenguaje de mquina .ASM, es pasado porotro subprograma denominado el Optimizador, este tomar elarchivo y realizar un anlisis global al cdigo y dependiendo delas optimizaciones sealadas por el programador, obviar algunaslneas de cdigo, modificando as el cdigo de mquina ygenerando un nuevo cdigo ms corto, ms rpido y con la misma

    funcionalidad del archivo original. Este Optimizador generar a suvez, adems del archivo .ASM optimizado, un archivo paralelo deextensin .LST que contiene la equivalencia entre el cdigo ASMy el Cdigo original.

    El nuevo archivo ensamblador .ASM pasar por el programaEnsamblador, el cual generar el cdigo objeto (extensin .OBJo .O), que es un cdigo en lenguaje de mquina codificado de losarchivos del proyecto.

    Este archivo es luego enlazado por medio del linkero Enlazador,

    el que agregar el contenido de las liberaras de C que seinvocaron en el proyecto, y de esta forma, generar un cdigoejecutable posicionado en las direcciones especficas que indica elproyecto, creando el archivo final .S19, .HEX (o ejecutable) yotros archivos adicionales de ayuda para la depuracin, sea entiempo de simulacin o en tiempo real.

    crea archivosintermedios, los cualespasan al subprogramade Anlisis Semnticoy de ah al Generador

    de Cdigo; luego,

    un Optimizador loanaliza y elimina laslneas innecesariaspara generar unarchivo .ASM enlenguaje mquina.

    Todo archivo.ASM optimizado

    debe pasar por

    el programaEnsamblador, elcual generar el

    cdigo objeto .OBJ,que ser vinculadoa las direcciones

    especficas indicadaspor el proyecto a

    travs del programaEnlazador, originando

    un archivo final .HEX o

    ejecutable.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    15/532

    15

    1.2.3 Tiempo de compilacin vs tiempo de ejecucin

    El tiempo de compilacin (tc en Grfico 1.6), es el tiempo quetarda el compilador instalado en el PC, para realizar la conversinde todas las lneas de cdigo y pasarlo a lenguaje de mquina; estaconversin incluye la solucin de todos los smbolos yoperaciones que son posibles resolver. Una vez ejecutado, estetiempo no requerir ser utilizado por el procesador final target.

    Para el caso de un interpretador, todo el cdigo deber ser

    Cuando secompila unarchivo el

    software debetraducir las lneas del

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    16/532

    16

    utilizado en tiempo de ejecucin, y el tiempo de compilacin sernulo; como sabemos, el cdigo tal como fue digitado es pasado alprocesador final para su completa ejecucin.

    Eltiempo de ejecucinteen Grfico 1.6es el tiempo que toma eltarget en realizar una operacin o resolver alguna expresin,

    previa evaluacin de cada una de las variables involucradas en elproceso.

    cdigo a lenguajemquina, lo que tarda

    dicha operacin seconoce como tiempo

    de compilacin.

    Es importante identificar en el programa cuales expresiones sern ejecutadas en tiempo de compilaciny cuales lo sern en tiempo de ejecucin o de procesamiento del

    target. Las primeras ayudan a dar

    claridad al programa sin sacrificar el procesamiento, todos los macros realizados mediante la directiva#define no adicionaran tiempo de ejecucin, igual pueden hacerse declaraciones que nunca se usen y elcompilador no generara cdigo para ellas.

    #define XTAL_EXTERNO 4000000 // [Hz] frecuencia del oscilador externo.

    #define FREC_BUS XTAL_EXTERNO/2 // [Hz] clculo de la frecuencia del bus interno delprocesador.

    #define PRESC_SCI 1 // Divisor de Prescaler

    #define BAUD_RATE_DIV 4 //Divisor de Baud Rate

    #define BAUD_RATE FREC_BUS/( 64*PRESC_SCI *BAUD_RATE_DIV)

    La anterior divisin en la definicin de FREC_BUSes resuelta en tiempo de compilacin, debido aque es posible definir el valor de la constante y no depende de la evaluacin de una variable.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    17/532

    17

    Con esto, en cualquier expresin que se haga referencia a FREC_BUS, no se remitir a la operacinpara obtener su valor, sino a su valor ya calculado por el compilador, pasndole al target laconstante ya evaluada.

    1.3 DE DNDE VIENE EL ANSI C?

    El lenguaje C fue diseado en 1972 por los ingenieros del Laboratorio Bell, entre ellos, DenisMacAlistair Ritchie. La razn principal fue reescribir el sistema operativo UNIX en una forma msportable, debido a que el UNIX fue escrito originalmente en lenguaje ensamblador y deba sercompletamente reescrito para cada nueva mquina. El lenguaje C fue basado en previos lenguajesllamado B y BCPL y por esta razn el llamarlo C denota su evolucin.

    EL lenguaje fue presentado por la publicacin The C Programming Language en 1978, cuyoAppendix A ha sido usado por muchos aos como estndar. Dado el crecimiento y popularidad delUNIX y la gran aceptacin del lenguaje C, muchas compaas empezaron a proveer compiladores de Cde forma alternativa al UNIX para un gran nmero de procesadores, microprocesadores e incluso, paramicrocontroladores.

    El xito del C en pequeos procesadores se debe al hecho que noes un lenguaje de tan alto nivel como lo es el PASCAL o el ADA,sino un macro ensamblador altamente portable, lo que permitetener la misma flexibilidad que el lenguaje ensambladorofreciendo casi el mismo nivel de eficiencia.

    El C fue finalmente normalizado entre 1983 y 1990 y es ahora unestandard ANSI/ISO (Por sus siglas en ingles: American NationalStandards Institute www.ansi.org1/ International Organizationor Standarizationwww.iso.org). Este estndar implementa varias

    extensiones adicionadas al lenguaje original en la dcada previa, yalgunas caractersticas extras, permitiendo mayor robustez.

    El estndar ANSI/ISO distingue dos ambientes diferentes:

    El ambiente hosted, que describe a los compiladores nativos(native compilers), en los cuales el procesador que ejecuta elcdigo usa un sistema operativo especfico con manejo dearchivos y diversos ambientes de ejecucin.

    El ambiente freestanding, que describe a los compiladores

    cruzados (cross compilers), en los cuales el procesador queejecuta es generalmente un microprocesador embebido o unmicrocontrolador sin los servicios de algn sistema operativo.

    En el sistema nativo (hosted), la misma mquina es usada paracrear, compilar y ejecutar el programa en C, mientras que en elsistema embebido, la aplicacin no tiene archivos, sistemaoperativo, ni editor, en su lugar otra mquina ha de ser usada paracrear y compilar la aplicacin. El resultado se enva a la mquina

    El lenguaje C fuedesarrollado en

    1972 por un grupode ingenieros de

    Laboratorios Bell,liderados por Denis

    MacAlistair Ritchie.

    El estndar ANSIllev luego a la

    normalizacin ISO/IEC 9899:19902, lacual garantiza que

    todas las aplicacionesdesarrolladas bajo

    esta norma funcionarn

    correctamente encualquier plataforma

    con una implementacinde C compatible.

    http://www.ansi.org/http://www.ansi.org/http://www.ansi.org/http://www.iso.org/http://www.iso.org/http://www.iso.org/http://www.iso.org/http://www.ansi.org/
  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    18/532

    18

    definitiva target para que lo ejecute.

    La mquina usada para compilar la aplicacin es llamada elsistema host, y la mquina que ejecuta la aplicacin es llamada elsistema target.

    ___________________________________________________________________________________2 Ver informacin de la especificacin enhttp://www.iso.org

    1.3.1 Forma general de un proyecto en C

    Un proyecto en C por lo general est dividido en varios archivos, cada uno de los cuales contiene unaparte del texto completo de la aplicacin. Algunas partes estn previamente escritas y son usadas comolibreras, otras pueden estar escritas en lenguaje ensamblador donde el C no sea lo suficientementeptimo, o no permita el acceso directo a los recursos del procesador.

    Un proyectodesarrollado

    en C comprende laslneas de cdigo,

    los comentarios delprogramador, losidentificadores, las

    palabras reservadas,las constantes y losoperadores y signos

    de puntuacin.

    Archivos en CCada uno de los archivos del proyecto deber ser compilado, elcompilador transforma el cdigo texto en un archivo llamadoobjeto relocalizable (aun sin direccin fija en la memoria delmicrocontrolador). Una vez los archivos son compilados, elprograma linker o enlazador, es usado para agrupar en un todolos archivos resultantes, incluyendo las libreras, para as producirel archivo ejecutable, el cual contiene un formato especfico parapoder ser transferido a la mquina que finalmente lo ejecutar.

    Lnea de CdigoCada texto en C contiene un conjunto de lneas y cada lneacontiene a su vez caracteres y es finalizada con una nueva lnea(un Line Feed y un Return). El compilador de C permite quevarias lneas sean concatenadas en una sola lnea, con unalongitud que no exceda los 511 caracteres para cumplirestrictamente con el estndar ANSI C.

    Comentarios

    Los comentarios son parte del texto y aunque no tienen ningn significado para el compilador sonimportantes porque brindan la posibilidad de entender el cdigo, lo que a su vez facilita sumodificacin.

    Un comentario inicia con la secuencia /*y finaliza con la secuencia*/. Un comentario puede cubrirvarias lneas; sin embargo, los comentarios anidados no son permitidos. Como una extensin delestndar ANSI C la mayora de los compiladores aceptan los comentarios en estilo C++, los cualesinician con la secuencia // y finalizan con una nueva lnea de cdigo.

    http://www.iso.org/http://www.iso.org/http://www.iso.org/http://www.iso.org/
  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    19/532

    19

    A = b; // este es un comentario

    C = d; /* este es otro tipo de comentario

    Que cubre varias lneas de C*/

    IdentificadoresUn identificador es usado para dar nombre a un objeto. Este empieza por una letra o el carcterunderscore _, seguido por una letra o un dgito. Los identificadores son sensibles a mayscula yminscula, de tal manera que vBle1 es diferente de vBLE1 e identifican objetos diferentes. Unidentificador puede contener hasta 255 caracteres aunque en la prctica no se recomiendanidentificadores de ms de 20 caracteres.

    Palabras reservadas

    Una palabra reservada es un identificador usado por el lenguaje de

    programacin para describir algo especial y propio de dicholenguaje. Es usado en declaraciones para describir el tipo bsicode un objeto, o dentro de una funcin para describir la ejecucinde una secuencia.

    Una palabra reservada no puede ser usada como nombre deobjeto. Todas las palabras reservadas se escriben en minsculas,de tal manera que la versin en mayscula esta disponible comonombre de objetos, aunque no es una buena prctica deprogramacin declarar estas palabras reservadas como nombres.

    Las palabras reservadas son:

    auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while

    En C unobjeto es un

    identificador denombre a un objeto

    para el programadory puede ser

    bautizado concualquier combinacin

    de caracteressiempre que no

    sean las palabrasreservadas.

    Constantes

    Una constante es usada para describir un valor numrico o una cadena de caracteres. Las constantesnumricas pueden ser expresadas como constantes reales, constantes enteras o de caracter. Lasconstantes enteras pueden ser expresadas en base decimal, binaria, octal o hexadecimal.

    Operadores y signos de puntuacin

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    20/532

    20

    Un operador es usado para describir una operacin aplicada a uno o varios objetos. Los operadores sonampliamente usados en muchas expresiones y en diversos tipos de declaraciones. El compilador tratarde solucionar las operaciones que le sean posibles en tiempo de compilacin, previniendo as que sea eltarget quien lo deba hacer.

    Los operadores consisten en una secuencia de caracteres no alfanumricos (uno en su mayora, a veces

    dos). Un signo de puntuacin se usa para separar o terminar una lista de elementos.

    Ntese que algunos de ellos son usados como operadores en algunos casos, y en otros como signo depuntuacin. Algunos de ellos son utilizados por pares, tal es el caso de( ), [ ], { }.

    1.4 PERIFRICOS MS COMUNES EN SISTEMAS EMBEBIDOS

    La gran mayora de los microcontroladores del mercado, y dependiendo del derivativo especfico y dela aplicacin, incluyen varios perifricos internos, los cuales facilitan la integracin de un sistema yhacen que la aplicacin final sea compacta, pequea, optimizada para bajo consumo de energa, depocos elementos externos y por consiguiente, de bajo costo.

    A continuacin se har una breve descripcin de los perifricos internos asociados a los procesadoresde 8 bits, el objetivo es conocer sus caractersticas generales y la informacin bsica para hacer uso deellos en una aplicacin real.

    1.4.1 Puertos de entrada/salida y Funcin KBI

    Este perifrico es la interfaz entre el bus de datos interno y lospines asignados a funciones de entrada y salida delmicrocontrolador. Al momento del resetlos pines bidireccionalesinician configurados como pines de entrada, para evitar que suestado de salida active los perifricos externos al microcontrolador

    El puertode entrada/

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    21/532

    21

    o genere choque de datos con los perifricos externos.

    Es tarea del diseador configurar el sentido, ya sea de entrada osalida de cada uno de los pines dependiendo del hardware

    asociado a cada uno de ellos, lo mismo el valor inicial que tomarel pin una vez se configure su sentido.

    Para el control y manejo de cada puerto existen principalmentedos registros:

    1. En el registro de DATO EN EL PUERTO (PTD) est el

    dato (bit a bit) del estado de cada uno de los pines en elexterior: si el pin es de salida, el bit correspondiente tendrel estado que el MCU escribe al pin en el exterior; si el pines de entrada, en el bit del puerto estar el estado que leedel exterior.

    2. El registro de DIRECCION DEL PUERTO (DDR) definebit a bit el sentido, ya sea entrada o salida de cada uno delos pines. Dependiendo de la tecnologa y marcaespecfica, algunos definen que un CERO en el bit defineel pin como salida, mientras que en otras (como es el caso

    de Freescale), define que un UNO en el bitcorrespondiente define que el pin ser de salida (verGrfico 1.7).

    salida es unode los principales

    perifricosinternos de todo

    microcontrolador.Permite intercambiar

    informacin entre elbus de datos internodel microcontroladory otros dispositivos.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    22/532

    22

    Existen algunos puertos que adicionalmente contienen un registro adicional para habilitar unaresistencia de pull-up en los pines de entrada/salida (PTPUE), estos permiten disminuir el hardwareexterno al MCU (ver Grfico 1.8).

    1.4.2 Conversor analgico a digital (ADC)

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    23/532

    23

    Consiste en un mdulo que permite al microcontrolador recibir una seal analgica del mundo exterior,cuyos lmites de voltaje oscilan entre 0 voltios hasta el nivel de alimentacin, y convertirla en un valordigital equivalente.

    El resultado estar disponible en un registro interno del microcontrolador, el cual puede leerse,procesarse o almacenarse para un anlisis posterior, permitiendo al software tomar decisiones de

    control dependiendo del comportamiento de la seal analgica.

    De acuerdo al derivativo varan segn su resolucin, pueden serde 8 bits, 10 bits (tpico) o 12 bits.

    La tcnica comnmente usada para la conversin es ladenominada aproximaciones sucesivas SAR, y puedeconfigurase para que realice conversiones sucesivas sobre la sealexterna o conversin nica, dependiendo de los requerimientos demuestreo de la seal.

    Este sistema interno de aproximacin, es un circuito secuencial,por lo que requiere una seal de sincronizacin (reloj) que seproporciona de forma interna. Su frecuencia es seleccionable parapermitir flexibilidad entre rapidez de conversin y consumo deenerga.

    Una vez se han generado los ciclos necesarios para terminar laconversin de una muestra analgica, la CPU es notificadamediante el cambio de un bit en el registro de estado del ADC (en1 indicar que la conversin est finalizada), y opcionalmentepuede generar una interrupcin de fin de conversin, que le

    permite al sistema central realizar labores alternas o permaneceren un modo de bajo consumo hasta que se realice la conversin.

    El conversoranalgico

    a digital (ADC)permite que el

    microcontroladorreciba una sealanloga externa (una

    temperatura) y lasconvierta en datosdigitales (un valor

    interno que representasu nivel).

    Tpicamente un microcontrolador contiene un solo sistema de ADC, lo que NO obliga a que solosoporte una seal analgica externa. La entrada del ADC es multiplexada con varios de los pinesexternos del microcontrolador denominados canales de ADC, con esta tcnica pueden conectarse variasseales al chip, las cuales comparten la arquitectura interna del ADC y registros (ver Grfico 1.9).

    La relacin entre el valor externo y la conversin es completamente lineal; la seal externa, cuyosvalores estarn entre 0 voltios y el voltaje de alimentacin, darn como resultado un valor entre 0x00 y0xFF para la resolucin de 8 bits, o entre 0x0000 y 0x03FF para el caso de 10 bits.

    Los registros que permiten hacer uso del ADC en los microcontroladores de Freescale son lossiguientes:

    ADSCR (1 byte). Registro de estado y configuracin de parmetros del reloj y del canal a convertir.

    ADICLK (1 byte). Registro de seleccin de frecuencia del reloj del ADC.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    24/532

    24

    ADRx (2 bytes). Registro donde es almacenado el resultado de la conversin del canal. x (x entre 0y el nmero mximo de canales-1 del ADC).

    1.4.3 Computador operando apropiadamente (COP)

    Tambin llamado perro guardin (watchdog). Es un mdulo de proteccin OPCIONAL contra erroresde bloqueo del software, ya sea por ruido o por alguna situacin de diseo del firmwareque lleve alprocesador a un ciclo infinito

    Consiste en un registro contador que al rebosarse produce un reset en la mquina recuperndola delestado desconocido, e indicando en un bit de un registro interno sta como la causa del reset.

    El software del usuario deber hacer el borrado del contador antes que rebose, para prevenir el resetdela mquina por este concepto.

    La rapidez con la que el contador realiza su rebosamiento esseleccionable por el programador, dependiendo de los tiemposmximos de ejecucin. En este caso es recomendable usar lafrecuencia ms lenta de conteo, para permitir al sistema mayor

    tiempo de recuperacin por vas normales (ver Grfico 1.10).

    El uso tpico de este mdulo es la proteccin de la aplicacin,aunque en algunas aplicaciones de muy bajo consumo de energase utiliza como contador de tiempo, ya que si el contador deproteccin no es borrado, se produce un resetde forma peridica.

    Al salir de reset el microcontrolador Freescale arranca con elCOP HABILITADO, con lo que el software del usuario deber

    El mdulo COPevita que el

    procesador lleguea un ciclo infinitoque deshabilite sufuncionalidad. En

    sntesis, es un registrocontador que produceun reset en la mquina

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    25/532

    25

    recordar el borrado del contador de rebosamiento peridicamente.

    El programador puede (si as lo desea), deshabilitar el sistemasimplemente cambiando el estado de un bit en el registro deconfiguracin del COP y con esto no ser necesario hacer elborrado del contador de rebosamiento, y se podr ahorrar un poco

    mas de energa y evitar resetsindeseados.

    antes de llegar adicha situacin.

    Es recomendable por orden de programacin, que el borrado del contador se realice en una sola lneadel cdigo y de preferencia hacerlo en el mdulo principal de aplicacin en la funcin main(){}; soloen algunos casos muy especiales o donde se pronostique que el software pueda demorarse, serecomienda hacerlo en rutinas particulares, pero nunca en rutinas de interrupcin, las cuales estncondicionadas a suceder bajo circunstancias muy especficas.

    Como se mencion, este mdulo es de proteccin, por lo que en la etapa de diseo se recomiendadeshabilitarlo para evitar el estar pendiente del borrado del contador de rebosamiento, facilitando laprogramacin, dando libertad al programador y facilitando la depuracin. Una vez el software tiene una

    versin final, se habilita el COP, proporcionando una proteccin adicional al sistema completo.

    Los registros tpicos que permiten la configuracin del COP son:

    COPCTL Registro de borrado del contador de rebosamiento.

    CONFIG1

    Registro que permite habilitar o deshabilitar el COP y el perodo de rebosamiento delcontador.

    SRSR Indica en el bit el COP como causa de reset.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    26/532

    26

    1.4.4 Detector de bajo nivel de voltaje (LV I)

    Este mdulo proporciona al sistema microcontrolador una proteccin, mediante la cual se evita que laCPU y los perifricos operen por debajo de los niveles de voltaje de alimentacin indicados por elfabricante.

    El mdulo LVIpreviene que

    el microcontroladoropere por debajo

    del voltaje mnimoindicado por el

    fabricante.

    Debido a que es un sistema de proteccin, este es opcionalmenteencendido y puede ser deshabilitado o habilitado enfuncionamiento normal mediante el bit LVIPWR; cuando serequiere ahorrar energa resulta de beneficio deshabilitar elmdulo o solicitarle que una vez la CPU ejecute la instruccinSTOP, sea apagado de forma automtica, control realizadomediante el bit LVISTOP.

    El LVI una vez habilitado, comparar el nivel del voltaje dealimentacin, si este nivel est por debajo del nivel permitido y elbit de LVIRSTD est habilitado, generar un reset en la CPU, y lo

    mantendr en este estado hasta que el voltaje de alimentacinregrese de nuevo a los niveles considerados como apropiados.

    En la mayora de los microcontroladores Freescale, el nivel de voltaje a detectar se puede seleccionarentre 2 valores: 3 5 voltios mediante el bit LVI5OR3, dependiendo del voltaje de alimentacin al cualeste trabajando el microcontrolador (ver Grfico 1.11).

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    27/532

    27

    1.4.5 Temporizador (TIMER)

    Es un mdulo que facilita manejar el tiempo. Puede configurarsepara generar interrupciones peridicas a una frecuenciaseleccionada, lo cual permite que el procesador pueda disponer deun reloj de tiempo real a bordo.

    La frecuencia a la que sucede cada interrupcin es seleccionabledependiendo de la resolucin que requiera el reloj de tiempo real.Bajo ciertas configuraciones permite continuar su labor deinterrupcin, aun si la CPU entra a algn modo de bajo consumo:STOP o WAIT.

    El temporizador, comnmente llamado timer, tiene asociadasvarias funciones adicionales para interactuar con el hardwareexterno, permitiendo realizar medidas de seales conectadas apines del microcontrolador o generacin de seales temporizadas.

    La funcin del timer est basada en un contador maestro de 16bits que esta permanentemente incrementndose, si llega a suvalor mximo pasa a cero y as repite el proceso nuevamente.

    El temporizador

    regula el manejodel tiempo en el

    microcontrolador.Lo hace por medio

    de un contadormaestro de 16 bitsque se incrementa

    contnuamente, y queal llegar a su mximo

    valor pasa a ceroy repite el proceso

    indefinidamente.

    Este sobreflujo tambin genera una interrupcin a la CPU para indicar este evento y no perder lanocin del tiempo y permitir as contabilizar tiempos mayores al rango de 16 bits. De forma opcionalpuede generar una accin sobre un pin externo, cambiando su estado e indicando que el temporizadorha sido reiniciado, esta funcin resulta til en aplicaciones de PWM3que se vern a continuacin.

    Funciones asociadas al temporizador

    Entrada de captura: Input Capture

    Esta funcin es usada para que de forma automtica se tenga en un registro de 16 bits, la marca detiempo exacta en la que sucedi un evento en un pin externo, ya sea cambiar de nivel lgico 1 a 0(flanco de bajada) o pasar de nivel lgico 0 a 1 (flanco de subida).

    La funcin de entrada de captura es muy til para medir de forma exacta la frecuencia externa de unaseal digital, ya que al medir 2 flancos seguidos obtendremos el perodo de la seal, y con unaoperacin matemtica su frecuencia, o igual para medir el ciclo til (Duty Cycle) de una seal externa,conociendo el perodo y la duracin entre un flanco de subida y uno de bajada (ver Grfico 1.12).

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    28/532

    28

    El registro de captura de 16 bits contiene la marca de tiempo exacta en la que estaba el Contadormaestro cuando se present el flanco seleccionado. Luego la CPU puede acceder a este valor yguardarlo en su memoria RAM, de esta forma el Registro de Captura queda preparado para el siguienteevento ver Grfico 1.13).

    En algunos casos tambin es utilizada para generar una interrupcin a la CPU y avisar sobre un sucesoexterno.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    29/532

    29

    Salida por comparacin: Output Compare

    Esta funcin permite actuar sobre un pin externo del microcontrolador en tiempos previamentedefinidos en un registro, denominado el Registro de Valor de Comparacin (ver Grfico 1.14).

    Permite la generacin de seales digitales que son enviadas al exterior a travs de uno de los pines

    definidos para esta funcin.Mediante registros internos se puede decidir la accin que se ejecutar sobre el pin externo una vez secumpla un tiempo programado, ya sea cambiar el pin de nivel lgico 1 a 0 (flanco de bajada),cambiarlo de 0 a 1 (flanco de subida), o cambiarle de estado actual ( toggle)4.

    Modulacin de ancho de pulso: PWM

    El mdulo de temporizacin puede ser configurado de tal forma que genere en uno o varios pines unaseal cuadrada con las caractersticas de un PWM (Modulacin por Ancho de Pulso), la cual esdefinida como una seal cuadrada que contiene un perodo fijo y dentro de este un tiempo en estadoactivo, denominado Duty Cycle o tiempo de ciclo til (ver Grfico 1.15).

    Esta funcin ampla las posibilidades de uso de los microcontroladores, dentro de las cuales se incluyencargadores de batera, conversores digital analgico, controles de intensidad (dimmers), controlindustrial y robtica entre otros.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    30/532

    30

    Para generar una seal como la del Grfico 1.15 se considera queel tiempo de ciclo til se programa en el contador de comparacin,configurando que el pin pase a cero (flanco de bajada) una vez sed la comparacin, y para la generacin del perodo se programacomo tiempo de desborde del temporizador, con cambio en elvalor del pin externo TOVO (Toggle on Overflow). De esta formasolo se generarn interrupciones 2 veces por perodo, una cuandotermina el ciclo til y otra cuando empieza un nuevo perodo. En

    esta situacin la CPU interviene poco y permite la generacin deuna onda muy precisa debido a su independencia de la CPUcuando la seal debe realizar su cambio.

    Se deben tener consideraciones especiales, como que el ciclo tilnunca ha de ser mayor que el perodo y tambin tener precaucinde no cambiar de forma brusca el ciclo til, de lo contrario sepuede tener un ciclo invlido que se ajusta en el siguiente perodo.La mayora de procesadores con este mdulo, ofrecen la opcinbuffereada, la cual permite que esta situacin no se presente entrecambio de perodo y el cambio de ciclos til ocurre de forma

    suave. Si requiere de mayor informacin sobre esta, puede serconsultada en el manual de cada procesador en particular en laseccin PWM.

    La modulacinde ancho de

    pulso (PWM),permite obteneruna onda con un

    perodo muy preciso,la cual puede ser

    usada como controlde intensidad

    en aplicacionesindustriales, pero

    tambin en otras deuso cotidiano, como

    los cargadores debateras.

    ___________________________________________________________________________________

    3 Pulse Width modulation (Modulacin por ancho de pulso).

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    31/532

    31

    4 Toggle: cambiar de estado, invertir el estado actual.

    1.4.6 Comunicacin serial asincrnica (SCI)

    El mdulo SCI es un subsistema independiente de la CPU que permite, de modo estndar, comunicarsede forma serial con gran cantidad de perifricos externos.

    Desde el punto de vista del microcontrolador tiene dos (2) lneas de comunicacin, una usada comolnea de recepcin (RxD) y otra como lnea de transmisin (TxD), permitiendo establecer unacomunicacin Full Duplex, es decir, se tiene la capacidad de transmitir y recibir datos de formasimultnea (ver Grfico 1.16).

    El SCI usa el estndar NRZ (No Retorno a Cero), que consiste en un bit de arranque (start), 8 9 bitsde datos y un bit de parada (stop). El subsistema contiene un generador programable de velocidades decomunicacin (Baud Rate Generator), en el cual el programador puede elegir entre 32 velocidades

    estndar, habilitacin independiente del mdulo transmisor y receptor, seleccin de polaridad de losbits y un buffer que evita que en secuencias rpidas se pierda algn dato y un sistema de interrupcionesque informa a la CPU sobre los siguientes eventos bsicos:

    Tx: El buffer del mdulo transmisor esta vaco.Tx: La transmisin de la palabra se finaliz.Rx: Lleg un dato por la lnea de recepcin.Err: Error de ruido en la lnea de recepcin.Err: Error de overrun en recepcin.Err: Error de trama (framing error).

    Err: Error de paridad.

    El subsistema SCI permite interfaz con una gran cantidad de mdulos perifricos al microcontrolador,donde se incluyen otros microcontroladores, mdulos de RF, sistemas de posicionamiento global(GPS), mdems celulares, entre otros.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    32/532

    32

    1.4.7 Comunicacin serial sincrnica (SPI)

    Este mdulo permite la comunicacin serial entre variosdispositivos en un esquema maestro-esclavo. El mdulo es til enaplicaciones donde se requiere optimizar el uso de entradas/salidas, debido a que tiene la bondad de poder interconectar variosdispositivos a travs de las mismas lneas de comunicacin.

    El sistema SPI permite operar bajo control de software en variosmodos segn la topologa seleccionada:

    Un MCU maestro y varios MCUs esclavos.Varios MCUs interconectados en un sistema multimaestro.

    Un maestro MCU y uno o varios perifricos esclavos.

    Sin embargo, la gran mayora de las aplicaciones usan un MCUcomo maestro y este inicia el control de la transferencia de datos alos esclavos.

    La Comunicacinserial sincrnicatrabaja bajo el

    esquema maestroesclavoy facilita la

    comunicacin condispositivos externoscomo LCD, teclados,

    conversores de seales

    analgicas a digital ymemorias de interfazserial, entro otros.

    Para la comunicacin se utilizan 4 lneas (ver Grfico 1.17):

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    33/532

    33

    1. Seal de Seleccin de dispositivo SS (Slave Select): en el maestro es una salida y en losesclavos es una entrada, que habilita mediante un nivel bajo (0 lgico) el dispositivo con cualse desea establecer comunicacin.

    2. Seal de Datos del Maestro MOSI (Master Output Slave I nput): es una lnea de datos que saledel maestro y entra a la lnea de datos de los esclavos. Es la lnea mediante la cual el maestroenva datos al esclavo seleccionado mediante la lnea SS.

    3.

    Seal de Datos del Esclavo MISO (Master I nput Slave Output): es una lnea de salida en losesclavos y entrada en el maestro, mediante esta lnea el esclavo seleccionado enva datos almaestro.

    4. Seal de Sincronizacin SCLK (Serial Clock): seal de salida en el maestro usada para realizarel muestreo de cada uno de los bits trasmitidos desde y hacia el maestro por las lneas MOSI yMISO (ver Grfico 1.18).

    En el Grfico 1.18 se puede observar el diagrama bsico del mdulo SPI.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    34/532

    34

    El SPI permite realizar transmisiones Full duplex, de hecho siempre que sale un dato del maestro, serecibe tambin un nuevo dato en su buffer proveniente del esclavo, vale anotar que si el dato no esesperado este deber ser ignorado.

    La rata de transferencia determinada por la velocidad de la seal SCLK, es configurable por el usuariodel mdulo, el cual, mediante registros, puede variar lo mismo que la polaridad (CPOL), o flancos enlos cuales sern validados los datos, permitiendo flexibilidad al momento de elegir el dispositivoesclavo.

    El sistema permite configurar notificacin sobre los eventos en este mdulo mediante interrupciones ala CPU y de esta forma facilitar el manejo y desempeo del sistema.

    Los eventos bsicos son:

    Registro de recepcin del SPI lleno.Registro de transmisin del SPI vaco.

    Este mdulo permite y facilita la comunicacin con dispositivos externos como son LCD, teclados,conversores de seales analgicas a digital, memorias de interfaz serial, entro otros dispositivos.

    1.4.8 Comunicacin serial I2C

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    35/532

    35

    El bus I2C (Inter-Integrated Circuit) fue desarrollado a principiosde 1980 por la compaa Philips. Su propsito original fue proveeruna forma sencilla de conectar un microcontrolador a chipsperifricos en un televisor.

    El I2C fue adoptado luego por varios fabricantes como un

    protocolo estndar de comunicacin serial que permitetransferencia de datos entre el microcontrolador y un dispositivoexterno, el cual puede ser, entre otros, una memoria de datosseriales, un LCD, un sensor de temperatura, un conversoranalgico a digital o un expansor de entradas y salidas. Estainterfaz est diseada para operar mximo a 100 kbps y trabaja deforma similar al SPI en topologa maestro-esclavos, con la ventajade requerir menos lneas para la comunicacin.

    Para la implementacin de esta comunicacin se usan 2 pinesdenominados SDA (lnea de datos bidireccional) y el SCL (lnea

    de sincronizacin); todos los dispositivos conectados a estas lneasdeben tener salidas de conexin open drain o de colector abiertoque permiten al sistema el manejo de datos en ambos sentidos y laconectividad de varios dispositivos al bus. Las lneas deben contener externamente resistencias de pull-up, cuyo valor depende de las velocidades y de los dispositivos conectados.

    El protocolo est conformado por 4 partes:

    1. Seal de START.

    2. Seleccin de dispositivo esclavo.

    3.

    Transferencia de datos.

    4. Seal de STOP.

    La seal de START est definida como una transicin de nivel alto a bajo de la lnea SDA mientras elpin de SCL est en nivel lgico alto, esta seal denota el comienzo de una nueva transferencia de datos(cada transferencia puede contener varios bytes de datos) (ver Grfico 1.19).

    El siguiente byte despus de la seal de START corresponde a la direccin del esclavo seleccionadopor el maestro, conteniendo en el ltimo bit la accin deseada sobre el esclavo:

    1 Lectura: configuracin para que el esclavo trasmita datos al maestro

    0 Escritura: configuracin para que el maestro transmita datos al esclavo

    Despus de este byte, slo el esclavo seleccionado responder con una seal de reconocimiento(acknowledge), que lo hace enviando un nivel lgico cero por el pin SDA en el noveno bit de seleccindel esclavo.

    El bus I2C permiteuna Comunicacinserial sincrnica,

    la cual consisteen el intercambiode datos entre un

    microcontrolador y undispositivo externo,como un sensor, una

    memoria de datosseriales o un conversoranalgico entre otros

    muchos.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    36/532

    36

    Despus de esta asignacin, es iniciada la trama de datos byte por byte en el sentido especificado por elbit correspondiente de R/W. El cambio de cada bit solo puede ser generado mientras la lnea de SCLest en bajo y deber permanecer estable mientras la lnea de SCL est en alto, como se muestra en elGrfico 1.19. Existe un pulso en la lnea SCL por cada uno de los bits de datos, y el MSB estransmitido primero. Cada byte de datos es seguido por un 9obit de reconocimiento (acknowledge), elcual es enviado por el dispositivo receptor de los datos.

    Una vez enviada la secuencia de datos, el maestro termina la comunicacin enviando una seal deSTOP para liberar el bus de comunicacin.

    La comunicacin est brevemente descrita en la siguiente figura:

    El mdulo I2C puede adems notificar a la CPU sobre la ocurrencia de varios eventos que permiten elmanejo del envo de tramas de forma ms sencilla y eficiente para el procesador.

    1.5 Interrupciones en Sistemas Embebidos Microcontrolados

    1.5.1 El Concepto de Interrupcin

    Una interrupcin es un evento que notifica a la CPU sobre la ocurrencia de una situacin excepcionalde uno de sus perifricos. Tal como se sabe, la CPU est ejecutando instrucciones que corresponden ala labor normal de la aplicacin o bien podra estar en algn modo de bajo consumo, mediante lasinstrucciones STOP o WAIT.

    Para ilustrar el concepto de interrupcin se utiliza tal cual el concepto de la vida real:

    Imagine una oficina, conformada por un directory varios empleadosque trabajan en cubculos a sualrededor, cada uno realizando una funcin especfica que debe llevar a cabo durante el da.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    37/532

    37

    Para el caso del directorla tarea consiste en revisar una estrategia mensual: programacin de tareasa cada uno de sus empleados, para lo cual usa un libro de apuntesdonde va listando por empleadocada una de las tareas asignadas.

    El trabajo del director se lleva a cabo de forma normal, pero de repente un empleadogolpea a lapuerta:

    toc toc.

    El director que est escribiendo en su li bro de apuntes, termina de escribir la frase que habaempezado, y a continuacin lanza la siguiente pregunta:

    Quin toca a la puerta?

    El empleado responde:

    Soy Juan Carlos y es urgente.

    Al ver esta situacin el director accede a recibirlo, no sin antes tomar nota en una hoj a de apuntesvarios la tarea que esta realizando, esto para evitar que una vez retome su trabajo luego de lainterrupcin olvide en cul empleado estaba trabajando y la tarea que le estaba asignando.

    El director abre la puerta para atender a Juan Carlos, pero tambin, y para evitar que otro empleado

    llegue a interrumpirlos, se asegura de colocar un aviso en la puerta que dice con claridad: NoInterrumpir Temporalmente.

    Juan Carlos entonces entr a la oficina y el director le pregunta:

    En qu puedo ayudar? Trata de ser breve porque se puede atrasar mitrabajo.Juan Carlos le pide al director que por favor pase por el depsito para que verifique que la mercanca

    que lleg es la correcta. El director se dirige al depsito, realiza la verificacin y regresa nuevamente

    a la oficina a continuar con las tareas normales. Al entrar a la oficina remueve el letrero de NoInterrumpir Temporalmente, ya que considera que la labor que le pidi Juan Carlos la realiz a

    cabalidad, y de esta forma los dems empleados sabrn que el director est ocupado pero

    eventualmente puede ser interrumpido de forma breve.

    Es de anotar que el director en determinadas ocasiones puede poner el letrero de No Interrumpir

    Temporalmente sin necesidad de una interrupcin; por ejemplo, cuando se encuentra realizando una

    labor muy crtica que requiere ser terminada con urgencia.Tambin es importante anotar que si estando en la reunin con Juan Carlos, los dems empleados

    pueden requerir alguna atencin, para esto y dado que en la puerta se indica No InterrumpirTemporalmente ellos pueden dejarle una nota que ingresan debajo de la puerta, indicando por

    ejemplo: Director: necesito hablar con usted urgente. Attn: Mario. De tal forma que una vez el

    director llegue a la oficina lea el recado y pueda tomar la decisin de atender al Mario.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    38/532

    38

    Considere tambin que si las interrupciones ocurren con mucha frecuencia y si sumados los tiempos de

    las mismas resultan apreciables, las labores propias del director se atrasarn o pueden incluso no

    llegarse a realizar. Otro esquema que el director puede adoptar es no colocar el aviso de NoInterrumpir Temporalmente, de modo que otros empleados podran solicitar atencin mientras el

    director est atendiendo a otro empleado, lo que adems de confundirlo, lo llevara a entretenerse en

    otras labores e incluso olvidar su labor principal, la cual podra no llevarse a cabo.

    Tambin es importante considerar que si el director est con Juan Carlos, pero de repente recibe una

    llamada que identifica como de su esposa, le podra decir a Juan Carlos que lo disculpe y tomar lallamada por considerarla de prioridad, al recordar que en la maana ella llev a su hijo Federico al

    mdico y espera muy ansioso el resultado.

    Para el esquema anterior el directorhace el papel de CPU, Juan Carlosy Marioel de interrupcionesenmascarables, y la esposa del director hace de interrupcin no enmascarable (SWI) o deprioridad. El libro de apuntesdel director es la tarea principal, y la hoja de apuntes varios equivaleal stack.

    Ahora s podemos ver la manera en que el procesador acta ante una interrupcin.1.5.2 Cmo trabaja el procesador ante una interrupcin?

    El procesador inicializa cada uno de los perifricos y ejecuta la funcin EnableInterrupts() que enensamblador es la instruccin CLI, a continuacin el procesador pasa a ejecutar su labor dentro delprograma principal main()o una de sus funciones, y si uno de los perifricos genera una interrupcin,la CPU termina la instruccin de ensamblador que esta ejecutando, en seguida realiza elReconocimientode la interrupcin (Grfico 1.20), el cual consiste en suspender la tarea principal y nocontinuar con la siguiente instruccin del programa principal.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    39/532

    39

    Luego contina con la Arbitracin, en la cual se determina la fuente de la excepcin y su prioridad (elResetse considera de mayor prioridad sobre cualquier interrupcin y no requiere arbitracin).

    Si una o ms interrupciones estn pendientes, la interrupcin de mayor prioridad ser atendida primeroy una vez sea tomada no existir posibilidad que otra sea atendida, incluso si es de mayor prioridad.Este esquema NO permite las interrupciones anidadas.

    En el guardado de registros en la pila (Stacking) se pone la bandera de I (Interrupcin) en el CCR en 1,y se procede a enviar el modelo de programacin del microcontrolador a la pila (stack) en el siguienteorden: PCL, PCH, X, AccA, CCR (ver Grfico 1.21).

    Ntese que el registro H no es puesto en el stack, la arquitectura HC(S)08 lo hace de esta forma paratener compatibilidad con su familia antecesora HC05, la cual no contena registro H; sin embargo, esteaspecto solo debe ser tenido en cuenta en programacin en lenguaje ensamblador, porque en el

    compilador de Codewarrior y la mayora de los compiladores del mercado, el stackingdel registro Hse hace de forma automtica una vez que la funcin es declarada de tipo interrupcin (palabrareservada interrupt).

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    40/532

    40

    Pasar luego a la Determinacin del Vectora partir de la tabla deinterrupcin (Tabla 1.2), en la cual decidi la fuente de lainterrupcin, y este valor (Funcion_ISR) lo Transfiere al PCdela CPU, donde continua con la ejecucin de la rutina deinterrupcin que solicit su atencin.

    Cuando ocurreuna interrupcin

    el procesador atiendeen primer lugarla interrupcin demayor prioridad,y atendida sta no

    existe la posibilidadque otra sea tomada,

    incluso si es de mayorprioridad.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    41/532

    41

    Funcion_ISR

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    42/532

    42

    Retorno de interrupcin a la aplicacin principal:

    Una vez en la rutina de interrupcin el control de la aplicacin escompleto de la funcin, al terminar su labor, el proceso de retornodeber recuperar el registro H, mediante la instruccin PULH(Grfico 1.22), y regresar al programa principal mediante lainstruccin RTI (Return From Interrupt). Estas dos instruccioneslas adiciona el compilador de C una vez el programador ha creadola funcin como rutina de interrupcin.

    La instruccin RTI (Grfico 1.23), hace que se recupere elcontexto anterior y el programa contina en el lugar en el cual fueinterrumpido.

    Una vezatendida la

    interrupcin, lainstruccin RTI permite

    volver al contextoanterior, es decir, alprograma principal.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    43/532

    43

    1.6 CAMBIO DE CONTEXTO

    Una interrupcin

    tambin permiteque el procesador seocupe de un nuevo

    proceso, dejando elanterior en estadosuspendido en la

    RAM; dicha accin seconoce como Cambiode contexto y es unelemento clave en el

    desarrollo de sistemas

    operativos.

    Se denomina cambio de contexto (context switching) al procesode suspender la ejecucin normal de un programa, guardar elestado del modelo de programacin en RAM y ejecutar otroproceso para iniciarlo o continuarlo.

    Un ejemplo de cambio de contexto se da a causa de unainterrupcin al procesador central CPU, en la cual se requiere quela CPU y el modelo de programacin ejecuten un procedimientoespecial denominado funcin de interrupcin.

    Se presenta un nuevo cambio de contexto al terminar la rutina deinterrupcin (con la instruccin RTI), en la cual el modelo deprogramacin es recuperado delstacky se contina el proceso quefue suspendido.

    El cambio de contexto es la base de los sistemas operativos detiempo real, el cual consiste en ejecutar diferentes tareas de formaperidica, lo que hace que cada tarea realice su funcin (verGrfico 1.24).

    1.7 LATENCIA DE INTERRUPCIN

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    44/532

    44

    Debido a que las interrupciones son una forma de mejorar larespuesta de un sistema, y la rapidez a esta respuesta esimportante, una pregunta lgica es: Qu tan rpido respondeel sistema ante una solicitud de interrupcin?, en realidaddepende de varios aspectos:

    1.

    El mximo tiempo que permanecen las interrupcionesdeshabilitadas.

    2. El tiempo de ejecucin que toma la rutina deinterrupcin o interrupciones de mayor prioridad que lainterrupcin en cuestin.

    3. El tiempo que le toma al procesador terminar lainstruccin que est ejecutando, realizar el stackinge iniciar laejecucin de la primera instruccin de la interrupcin.

    Se denomina Latencia de Interrupcin (in terrupt latency) altiempo que le toma a un sistema responder al llamado de unainterrupcin.

    El factor 3 depende bsicamente del fabricante de procesador,y no est bajo el control del programador; sin embargo, se

    pueden controlar los factores 1 y 2, haciendo las rutinas de interrupcin lo mas cortas y eficientesposible. Adicionalmente, en el programa general se debe procurar deshabilitar las interrupciones porlapsos cortos de tiempo y solo cuando sea exclusivamente necesario.

    Cada vez queel procesador

    recibe un llamado de

    interrupcin, ha detomar un tiempo enresponder a l; estelapso es la Latenciade interrupcin, ylo ideal es que elprogramador las

    desarrolle en rutinascortas y eficientes.Esto aumentar la

    velocidad del sistema

    para responder anuevas interrupciones.

    1.8 ZONAS CRTICAS DE SOFTWARE

    Hay momentos en queel programa principal

    est desarrollandoun proceso crtico

    que no puedeser interrumpido.En esos casos, el

    programador dejarzonas del cdigo con

    las interrupcionesdeshabilitadas,llamadas Zonas

    crticas de software.

    Existen zonas dentro del programa principal en las cuales debenser deshabilitadas algunas, o todas las interrupciones, esto con elfin de evitar que la aparicin de una interrupcin perturbe unprocedimiento de datos o de hardware que el procesador esteejecutando en el programa principal. La seccin de cdigo en lacual las interrupciones estn deshabilitadas por no poder ocurrir,se denomina una zona crti ca de softwar e.

    Son ejemplos de zona crtica el manejo de tiempo por polling opor ciclos de reloj, el manejo de estructuras y listas de datoscompartidos que sean modificadas dentro y fuera deinterrupciones, cdigos de programa que deban ejecutarse deforma atmica, ejecuciones crticas del software que debancumplir con un tiempo determinado en ejecucin.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    45/532

    45

    DISABLE_INTERUPTS ;

    .

    Zona Critica de Software

    .

    ENABLE_INTERUPTS ;

    1.9 Herramientas para Diseo Embebido en el mercado

    1.9.1 Herramientas para Microchip

    PICSTART Plus

    Es una herramienta que permite la programacin de los microcontroladoresde Microchip en empaque DIP, se conecta va serial al PC con el software

    integrado de desarrollo MPLAB IDE incluido en el costo del programador.

    El sistema incluye una copia libre del compilador PICC Lite por un costo deUSD 200.00 (precio FOB2EE.UU.) bajo el nmero de parte DV003001.

    Se puede descargar una versin libre del compilador C30 de Microchip de la pgina:http://www.microchip.com/c30

    http://www.microchip.com/c30http://www.microchip.com/c30http://www.microchip.com/c30
  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    46/532

    46

    MPLAB PM3

    Es un programador universal de fcil operacin que permite laprogramacin en serie o en produccin, ya sea conectada a un PC o enmodo independiente (standalone), sin la necesidad de un computador.

    Soporta la programacin de la familia PICs, dsPICR

    DSC (Digital SignalController). El sistema se puede actualizar para que soporte nuevosdispositivos. Su costo en el mercado es de USD 895.00 (precio FOBEE.UU.) bajo el nmero de parte DV007004.

    MPLAB ICD 2

    Es una herramienta de bajo costo, soporta programacin y depuracin entiempo real de los microcontroladores PIC, de los dsPICRDSC.

    Los programas son enviados a la herramienta, por medio de funciones del

    MPBLAB ICE, permite la visualizacin de variables, poner puntos deruptura (breakpoints) de programas desarrollados en C o en cdigoensamblador.

    El costo de la herramienta es de USD 160.00 (precio FOB EE.UU.) bajo el nmero de parteDV164005.

    MPLAB REAL ICE

    Es un sistema emulador de ltima generacin para los procesadores DSC yMCUs de Microchip, realiza depuracin y programacin de forma rpida,de fcil manejo y en un ambiente grfico muy amigable.

    La conexin al PC es va USB 2.0 de alta velocidad y se conecta altarget ya sea con conector RJ11 o con el conector especializado pararuido LVDS (low voltage differential signal).

    Es igualmente actualizable con las versiones posteriores del MPLAB IDE, nuevos dispositivos ynuevas caractersticas.

    Es el sistema de desarrollo ms recomendado por Microchip en trminos de inversin y de

    caractersticas. Su precio es de USD 499.00 (precio FOB EE.UU.), bajo el nmero de parte DV244005.

    ICD-U40

    Esta interfaz de hardware se conecta entre el PC a travs del puerto USB yla aplicacin que contiene el microcontrolador PIC, usando 2 de sus pines.Permite la programacin y la depuracin en circuito, sin remover elmicrocontrolador de la aplicacin, brinda de forma opcional brindaralimentacin al microcontrolador y a la aplicacin.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    47/532

    47

    Esta herramienta es la sugerida cuando el compilador usado sea el de la misma compaa CCS, porqueintegra de forma robusta el manejo de los ambientes de programacin PCW, PCWH, PCDHD yPCDIDE, mas no es soportada por el popular ambiente MPLABIDE.

    La herramienta fue desarrollada por la compaa CCS y se consigue bajo el nmero de parte ICD-U40a un precio de USD 75 (precio FOB EE.UU.).

    MPLAB ICE 2000

    Es un sistema emulador de muy alta velocidad (30 MHz) que soporta bajovoltaje de operacin 65,535 puntos de ruptura, anlisis de trazas complejas(trace) para la gran mayora de los MCUs de Microchip; sus diferentesadaptadores intercambiables permiten al sistema configurarlo para soportardiferentes procesadores.

    Permite la captura en tiempo real de valores en registros, en RAM y en perifricos, sin necesidad de

    detener la ejecucin del procesador.

    Su costo en el mercado es de USD 1,000.00 (precio FOB EE.UU.) bajo el nmero de parte ICE2000.

    ___________________________________________________________________________________

    2 FOB (Free on Board): es el precio de venta de los bienes embarcados a otros pases, puestos en elmedio de transporte sin incluir valor de los seguros y fletes.

    1.9.2 Herramientas para Renesas

    H8/Tiny Starter Kit Plus

    El SKP es un sistema completo de evaluacin para la serie H8/300HuTINY de los microcontroladores de la compaa Renesas. El kitcontiene una tarjeta de evaluacin y un emulador. El software dedesarrollo es llamado el HEW (High-performance EmbeddedWorkshop) que permite desarrollo y depuracin en lenguaje C con unacapacidad de hasta 64K de cdigo compilado. El producto es ordenadobajo el nmero de parte SKPH8TINY con un costo de USD 119.00(precio FOB EE.UU.).

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    48/532

    48

    1.9.3 Herramientas para Texas Instruments

    eZ430-RF2500

    Consiste en una herramienta pequea y de bajo costo que se conecta vaUSB al PC. Provee el software y hardware para evaluar los

    microcontroladores MSP430F2274 y adems el transceiver CC2500 de2.4 GHz. Para la serie MSP430F2013 se cuenta con una herramientasimilar con nmero de parte eZ430-F2013.

    Para el software utiliza el IDEIAREmbedded Workbenchque permite escribir, bajar el cdigo al microy depurarlo, as como tener la aplicacin ejecutndose a velocidad completa con varios puntos deruptura. Su costo en el mercado es de USD 49.00 (FOB EE.UU.).

    1.9.4 Herramientas para Freescale

    Spyder

    Es una pequea y sencilla herramienta de programacin y depuracinva BDM (Background Debug Mode), del tamao de una memoria USB.Fue desarrollada por la compaa SofTec Microsystems y es soportadapor Freescale.

    Spyder soporta los procesadores de la subfamilia MC9S08QG,RS08KA y MC9S08QD.

    La herramienta viene con un CD el cual incluye la ltima versin de Codewarrior para HC(S)08, elmanual de usuario y toda la documentacin necesaria para instalacin y puesta en marcha.

    El precio en el mercado esta alrededor de USD 29.00 (precio FOB EE.UU.) y est bajo el nmero departe: USBSPYDER08

    Multilink

    Este es un interfaz USB a BDM de bajo costo y fcil implementacinque soporta todos los microcontroladores miembros de los cores

    HCS08, HC12, HCS12 y ColdFire V1 de Freescale. Con lo quedesarrollar desde 8 bits hasta 32 bits resulta transparente para elprogramador debido a que se usa el mismo conector de 6 pines BDM, yel software para todos, integrado Codewarrior 6.0 o superior.

    El programador puede hacer depuracin en tiempo real, borrar y programar la flash, ya sea una tarjetade evaluacin o en el sistema final de aplicacin, lo cual permite que a una aplicacin se le puedaactualizar su firmware, solo conectando el Multilink y realizando la descarga del software.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    49/532

    49

    Resulta bastante prctica ya que permite hacer depuracin en la aplicacin permitiendo poner puntos deruptura (breakpoints), que facilitan conocer el trayecto y operacin del software.

    Contiene adems varios niveles de disparo de depuracin basados en la ejecucin del programa y/oeventos que permite tener un historial sobre la ejecucin antes de llegar al punto ruptura, que da alprogramador informacin ms detallada sobre el funcionamiento del software.

    El costo en el mercado es de USD 99.00 (precio FOB EE.UU.) y puede ser ordenada bajo el nmero departe USBMULTILINKBDME.

    CyclonePro

    Este sistema permite, adems de las funcionalidades del Multilink, laposibilidad de trabajar independiente de un PC, lo que le otorga msversatilidad cuando se est en campo o en programacin masiva deirmware, ya que solo requiere que el software sea enviado una nica

    vez desde el PC, y luego, este puede fcilmente reproducirlo en los

    procesadores finales.

    Soporta todos los procesadores que se programan va MON08, es decir HC08, y tambin va BDM, esdecir HCS08, HC12, HCS12 y ColdFire V1.

    Contiene una serie de botones y leds y en algunos casos un display de cristal lquido el cual permitecontrolar la operacin independiente standalone de programacin.

    Los leds indican al usuario si las opciones elegidas de borrado, programacin, verificacin resultaronexitosas o si requieren ser revisadas.

    El sistema puede adems proveer la alimentacin al procesador a partir de su fuente interna y demanera inteligente si el procesador trabaja a 5 voltios o a 3 voltios.

    La conexin al PC puede ser va USB o va Ethernet.

    Tiene la opcin de ser usada como interfaz para hacer depuracin, programacin de los procesadoressoportados, aunque su orientacin es ms para programacin en masa en una lnea de produccin opara programacin y actualizacin defirmwareen el campo, con lo que no se requiere de un PC y unmanejo experto de software. El precio de la herramienta en el mercado es de USD 499.00 (precio FOBEE.UU.).

    DemoQE128

    Es una herramienta de bajo costo diseada para demostrar, evaluar yhacer depuracin principalmente de los procesadores MC9S08QE128 yMCF51QE128 de Freescale. Dentro de esta herramienta est incluidotodo el circuito del Multilink el cual permite tener el mismo manejo quese tiene con dicha herramienta. Cuenta con 4 entradas, 8 salidasdigitales, 1 entrada analgica y la inclusin de un acelermetro, con loque el programador puede realizar prototipos, demostraciones y

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    50/532

    50

    evaluacin de cdigo, el cual es programado directamente en elprocesador.

    Contiene adems acceso a todos los pines del procesador en los que se puede realizar conexin deperifricos externos, y acople de seales que vienen o van a la aplicacin final.

    La herramienta puede usarse tambin para programar las familias de microcontroladores HCS08,HC(S)12 y ColdFire V1 a travs del conector BDM disponible para tal fin.

    El costo en el mercado es de USD 99.00 (precio FOB EE.UU.) y puede ser ordenada bajo el nmero departe DEMOQE128.

    1.9.5 Herramientas utilizadas en los ejemplos

    AP-Link Freescale APX

    Este sistema de evaluacin fue creado exclusivamente para ilustrar

    todos los ejemplos de este libro, permite que los programascompilados puedan ser programados en un microcontroladorFreescale y ejecutados de forma remota usando el depurador deCodewarrior, o bien de forma independiente usando solo una fuentede alimentacin estndar.

    La evaluacin de los ejemplos es opcional lo mismo que el ensamble de la tarjeta AP-Link, de talforma que el lector puede realizar su aprendizaje sin necesidad de la tarjeta o realizar depuracin conella, dado que lo puede hacer en modo simulacin completa con PC o Full Chip Simulation entodos los casos. Sin embargo, resulta bastante til para las prcticas relacionadas con hardware externoal microcontrolador, refuerza bastante el entendimiento del lenguaje y su relacin con el hardware ensistemas embebidos.

    Si el lector solo esta interesado en aprender la parte terica del ANSI C y solo considera hacer laspracticas en modo simulacin, podr pasar directamente al Captulo 2, si por el contrario, deseaafianzar mejor sus conocimientos, el ensamble y prueba de la tarjeta es lo mas recomendado.

    Montaje del Sistema AP-Link

    El montaje del sistema de evaluacin incorpora varios pasos y elementos, los cuales estn descritosa continuacin:

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    51/532

    51

    Listado de Partes del Sistema de Evaluacin AP-Link

    Las partes requeridas para el ensamble del sistema de evaluacin pueden adquirirse fcilmente en elmercado local de partes electrnicas. A continuacin se encuentra el listado de partes con descripcin ynmero de parte de uno de los proveedores de partes al detal mundial DIGIKEY www.digikey.com,con el cual el diseador podr ordenar las partes para el ensamble.

    http://www.digikey.com/http://www.digikey.com/http://www.digikey.com/
  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    52/532

    52

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    53/532

    53

    Capa de Screen:

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    54/532

    54

    Capa de Componentes:

    En esta capa se muestra la posicin de los puentes corto circuitosdescritos en la lista de partes:

    E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17, E18.

    La limpieza esfundamental

    al momento de

    ensamblar el sistemade evaluacin. Sepuede limpiar el

    impreso (ya armado),con algn limpiacontacto

    como elalcohol isoproplico.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    55/532

    55

    Capa de Soldaduras:

    Ensamble del Sistema AP-Link

    Para el ensamble del sistema de evaluacin se debe tener en cuenta que el PCB es de una sola capa yexisten 18 conexiones (E1E18) en la capa de componentes (Grfico 1.27), los cuales deben serensamblados usando primero lospuente corto circuito. Se recomienda luego continuar con el ensamblede las resistencias y condensadores por ser los componentes ms bajos, luego el regulador de voltaje yla base del microcontrolador AP y por ltimo los conectores.

    Es importante limpiar el impreso ya armado con algn limpia-contactos, se recomienda usar alcoholisoproplico para este proceso.

    Una vez ensamblada la tarjeta se requiere remover el microcontrolador APdel sistema, y proporcionaralimentacin a la tarjeta con el adaptador de voltaje.

    Realizar las siguientes medidas con un voltmetro con referencia GND en pin 1 de TP:

    Con Jumper en Modo Run, y punta positiva enPin 4 de SCI-1 (+5V), la medida deber ser de 5 voltiosDC +- 5%. El Led DL1 deber estar encendido, y el Led DL2 apagado.

    Pin 3 de TP (+12V), la medida deber ser entre +9 y +11 voltios.

    Poner Jumper en modo RUN, el Led DL2 deber encender. Medir el voltaje en pin 9de la base de U1(MCU), deber ser de +5 voltios.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    56/532

    56

    Pin 1de U1 (MCU), deber ser de +5 voltios, al presionar PB3 (INPUT-2), la medida deber ser de 0voltios.

    Pin 2de U1 (MCU), deber ser de +5 voltios, al presionar PB2 (INPUT-1), la medida deber ser de 0voltios.

    Pin 10 de U1 (MCU), deber ser alrededor de +2.2 voltios. De lo contrario revisar conexin deloscilador.

    Pin 16de U1 (MCU), deber ser alrededor de +5 volts, al presionar PB1 el voltaje deber ser de 0voltios.

    Pin 19de U1 (MCU), deber ser de +5 voltios.

    Pin 32de U1 (MCU), deber ser de +5 voltios.

    Pin 33de U1 (MCU), deber ser de +5 voltios.

    Pin 35de U1 (MCU), deber ser de +5 voltios.

    Pin 42 de U1 (MCU), deber ser de +5 voltios.

    Posicionar la referencia GND del voltmetro en el pin 4 de SCI-1 (+5V) y realizar las siguientesmedidas:

    Pin 12de U1 (MCU), deber ser de5 voltios.

    Pin 31de U1 (MCU), deber ser de5 voltios.

    Pin 34de U1 (MCU), deber ser de5 voltios.

    Pin 41de U1 (MCU), deber ser de5 voltios.

    La prueba final de la tarjeta se realiza pasando el Jumper a DEBUG, insertando el microcontrolador APen la base U1 y ejecutando la depuracin de el ejemplo 1 en el captulo 2 o El Primer Programa enANSI C que se ver en el Captulo 3.

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    57/532

    57

    Pic-Link Microchip 16F8XX

    Esta herramienta fue diseada para usarse como interfaz al PC con el uso del ICD-U40...

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    58/532

    58

    QTYIDENTIFICADOR SCREEN PIC-Link

    DESCRIPCIN Y VALOR DIGIKEY P/N

    1 BUZZ Buzzer 5 Voltios Redondo 458-1061-ND

    4 C1,C2,C3,C4Condensador Aluminio 10uF 50Vradial

    P5567-ND

    1 C5Condensador Aluminio 1uF 50Vradial

    P5563-ND

    2 C6,C13 Condensador Cermico monoltico 399-4329-ND

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    59/532

    59

    0.1uF50V radial

    1 C7Condensador Aluminio 470uF 25Vradial

    P5574-ND

    2 C10,C11 Condensador Cermico 22pF 50V 490-3708-ND

    1 D1 Diodo 1N4004 1N4004DICT-ND

    2 DL1,DL2 Diodo LED 3MM Rojo 516-1291-ND

    1 DL3 Diodo LED 3MM Verde 516-1293-ND

    18E1,E2,E5,E6,E8,E9,E10,E11,E12,E13,E14,E15,E16,E17,E18

    Puente Corto Circuito NA

    1 FTEAdaptador de voltaje AC/DC9VDC0.66

    T980-P5P-ND

    1 GND Punta de prueba negro 5001K-ND

    1 P1Plug Fuente para PCB pin internopequeo

    CP-202A-ND

    1 P2Conector DB9 para PCB ngulode 90grados

    A35107-ND

    1 P3 Conector Blanco 4 Pines WM4202-ND

    2 P4,P6 Conector Blanco 6 Pines WM4204-ND

    1 P5 Conector Blanco 5 Pines WM4203-ND2 P7,P8 Conector 7 pines macho WM2705-ND

    3 PB1,PB2,PB3 Pulsador 4 pines para PCB 6mm P12192S-ND

    4 PP1,PP2,PP3,PP4 Soportes plsticos NA

    2 R6,R11 Resistencia 10K Ohm @ 1/4W 10KQBK-ND

    1 R2 Resistencia 100 Ohm @1/4W 100QBK-ND

    1 R7 Resistencia 10M Ohm @ 1/4W 10MQBK-ND

    1 R8 Resistencia 1K Ohm @ 1/4W 1.0KQBK-ND2 R10,R13 Resistencia 3.3K Ohm @ 1/4W 3.3KQBK-ND

    1 R9Resistencia 330K Ohm @1/4W(paraX1=20MHz R9 debe ser un corto)

    330KQBK-ND

    1 R4 Resistencia 47K Ohm @ 1/4W 47KQBK-ND

    6 TP1 Puntas de prueba para PCB 5000K-ND

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    60/532

    60

    1 TORN1Tornillo 1/8 , 8 mm de largo conarandela y tuerca

    NA

    1 U1 Base de 40 pines TH, DIP 0.600 ED22426-ND

    1 U1 Microcontrolador PIC16F877APIC16F877A-I/PND

    1 U2Integrado MAX232 16 pines DIP,R2232Transceiver

    MAX232ACPE-ND

    1 U4Regulador de Voltaje LM7805TTO-220

    LM7805ECT-ND

    1 X1 Oscilador 2 pines 20 MHz CTX062-ND

    1 P9 Conector telefnico NA

    Capa de Screen:

    Capa de Componentes:

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    61/532

    61

    Capa de soldaduras:

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    62/532

    62

    RESUMEN DEL CAPTULO

    Un compiladores un programa que convierte un grupo de archivos texto en cdigo de mquina de unprocesador, a diferencia del interpretadorcuyo cdigo origen se enva a la mquina final (target) y vaconvirtindose en cdigo de mquina en la medida en que se va ejecutando.

    La programacin en este texto est orientada a l a compilacin del cdigo fuente por lo que gran partedel tiempo invertido en conversin de tiempo de solucin de expresiones ser resuelto en tiempo decompilacin. El compilador tiene varias etapas para generar el cdigo final, solucionando paso a pasotodas las equivalencias, expresiones y anlisis semntico, generando cdigo intermedio que luego seunir a las libreras que el programador invoca.

    Las interrupciones en sistemas microcontrolados son eventos que suceden e interrumpen la mquina(CPU) en cualquier instante. Por esta razn, el cdigo deber ser diseado de forma robusta, para queestas excepciones se manejen de forma adecuada y sin proveer errores al cdigo elaborado, elprocesador por su lado manejar sus prioridades, vectores y cambio de contexto, pero es elprogramador quien tendr la responsabilidad final de su correcto funcionamiento.

    La depuracin en bajo nivel ayudar a identificar algunas causas por las cuales un programa en altonivel no funcione adecuadamente, visualizando de cerca el comportamiento del PC (Contador dePrograma), el SP (Apuntador al stack), variables en RAM y dems registros internos de la mquina.

    Los buenos programadores en C para sistemas embebidos conocen muy bien la mquina y suarquitectura interna para la cual el compilador generar el cdigo, tienen muy buen criterio y resuelvensiempre los problemas por la va ms rpida y eficiente, sea por el lado del alto nivel C, o bienaccediendo directamente a la mquina, sus pines, sus perifricos usando lenguaje ensamblador.

    Existen en el mercado gran cantidad de herramientas disponibles, tanto de hardware como de software,que permiten al programador en alto y bajo nivel elegir lo que ms se acomode a su presupuesto yrequerimiento particular en tecnologa, marca y desempeo.

    Se recomienda elegir alguna que pueda cubrir varias familias de procesadores, con el fin tenerflexibilidad a la hora de disear, de migrar o de expandir un sistema original. Es de gran utilidad unaherramienta que permita realizar depuracin en tiempo real (aunque sea con limitaciones), la cualpermitir la conexin entre el software desarrollado y la ejecucin del mismo en el hardware embebido.

    La fabricacin de una herramienta propia con poca inversin AP-Link o Pic-Link permitirejecutar el cdigo escrito en C y realizar depuracin en tiempo real. As como la ejecucin real detodos los ejemplos desarrollados en el texto de forma prctica, conectando al programador con elmundo real, fortalecindolo en la ubicacin de soluciones a los problemas que pueda encontrar en eldesarrollo de sus proyectos.

    El ensayo y error de los ejemplos, le convertir en programador en C de alto desempeo, de muy buenconocimiento y manejo de una mquina particular (AP16A o PIC 16F877A) que ser el camino parapoder enfrentar a cualquier otro procesador que decida usar en los proyectos futuros: enrealidad noimpor ta en que mar ca o modelo de vehcul o se aprenda a conducir , pero tendr que ser en alguno enpar ti cular . Una vez que se aprende en ste, se podr manejar el car ro o camin que quiera

  • 5/21/2018 SISTEMAS EMBEBIDOS en C.pdf

    63/532

    63

    PREGUNTAS DEL CAPTULO

    Mencione al menos 5 ejemplos de sistemas embebidos de la vida cotidiana.Qu limitacin tiene el hecho de usar interpretadores en lugar de compiladores en sistemas

    embebidos?Puede el cdigo objeto (.OBJ) compartirse con usuarios de procesadores d