Вы находитесь на странице: 1из 26

ANEXO D SOFTWARE DE DESARROLLO CODEWARRIOR DEVELOPMENT STUDIO

Este documento posibilitar al estudiante comprender y utilizar el ambiente de desarrollo CodeWarrior IDE para la creacin, depuracin y descarga de programas de los sistemas basadas en microcontroladores Freescale, y particularmente permitir: Entender las partes que componen a CodeWarrior. tilizar el simulador para probar un programa. Comprobar las opciones que o!rece el Depurador incluido en CodeWarrior. tilizar las di!erentes opciones para programar un "rc#i$o.

Introduccin.
E%isten en el mercado $arias opciones para poder compilar es decir con$ertir del lengua&e C al lengua&e maquina los programas que son desarrollados por los dise'adores de !irm(are, pero sin embargo las opciones que cada uno de estos paquetes nos o!recen son limitadas y no siempre apro$ec#an las $enta&as que o!rece la arquitectura del microcontrolador o del microprocesador utilizado y siempre son de un costo ele$ado, es por esto que es altamente recomendable utilizar el paquete de desarrollo que cada empresa que crea los microcontroladores nos propone. En el caso de Freescale )emiconductor, se o!rece CodeWarrior De$elopment )tudio, este IDE permite a los usuarios pasar a tra$*s de todas las etapas de desarrollo desde el mane&o concepto #asta programar la memoria del microcontrolador.

Fig. +.+ "mbiente de Desarrollo CodeWarrior. Creado por Freescale.

"lgunas de las $enta&as que nos pro$ee CodeWarrior son: tiliza un sistema basado en ,royectos que nos #ace !acil el mane&o de multiples arc#i$os. Creacin automatica de -emplates para iniciar el proyecto, arc#i$os de encabezado tambien llamados #eader !iles para cada uno de los productos de Freescale. Dos e%celentes #erramientas para disminuir la cur$a de aprendiza&e de los peri!ericos como son: o De$ice Initialization -ool, o ,rocessor E%pert. Cuenta con Editor y compilador para lengua&e C, C.., y lengua&e ensamblador. /in0er entre el Compilador y el sistema de Descarga. )imulador, con $arias #erramientas para ayudar a la depuracion del sistema sin necesidad de contar con el microcontrolador !isicamente. El Editor cuenta con #erramientas que permiten la comparacin entre arc#i$os, !cil cambio entre componentes 1llamados targets2. ,ermite el mane&o de Control de 3ersiones con programas como C3), o )ub$ersion Fcil inter!ace con otros programas com 4atlab.

Creacin de /ibrerias. 4ane&o de )istemas 5perati$os embebidos.

Com i!"dor.
Como se menciono en el punto anterior los compiladores por lo regular son caros y es un costo que el desarrollador del producto debe absorber sin embargo el ambiente de Desarrollo CodeWarrior e%isten dos $ersiones una es gratuita CodeWarrior IDE (it# ,ro&ect Wizard con la cual se puede realizar lo siguiente: 6 6 6 6 6 6 6 6 4ane&o de ,royectos con #asta 78 arc#i$os. )e puede compilar cdigo ensamblador en !orma ilimitada. Compilador de C con 9: opciones de optimizacin. Es posible compilar #asta +;<bytes de cdigo en C o C.. para dispositi$os de las !amilias =C:> y =C1)2:>?@):>. Descarga rpida del programa a 4emoria Flas# con dos opciones: 6 =C:>: 3ia 45A:> 6 =C1)2:>?@):>: 3ia BD4 )imulador completo para todo el c#ip. AI) De$ice Initialization tool para generar cdigo de inicializacin tanto para el C, como para los peri!icos de las !amilias =C:>, =C1)2:>?@):>. AI) ,rocessor E%pertC con componentes para las !amilias =C:>, =C1)2:>.

Arc#i$o PRM.
Como se menciono en el capitulo 7 el lugar donde queden almacenadas las $ariables y constantes es siempre una prioridad CodeWarrior utiliza un arc#i$o que es mane&ado por el /in0er para ubicar las zonas de memoria de nuestro microcontrolador. Este arc#i$o es llamado "rc#i$o ,@4. El arc#i$o ,@4 como se muestra en la !igura siguiente cuenta con dos zonas principales en la primera llamada )ED4EA-) y la segunda llamada ,/"CE4EA-. En la zona de )ED4EA-) se de!inen las distintas zonas del mapa de memoria del componente eligiendo el tipo de memoria sea @"4 o @54 esto le permite al programa que descarga y #ace el programado de las distintas memorias donde es @"4 y donde es @54. Ejemplo. En el siguiente e&emplo se $e como se de!ine un segmento de @"4 y y de @54 para el ):>ED>. /a memoria que se etiqueto como @54 utiliza el espacio desde :%E::: y #asta la direccin :%FF"D, y la memoria @"4 se elige de la :%::;: #asta la :%::FF.

Solucin SEGMENTS ROM RAM END = READ_ONLY 0xE000 = READ_WRITE 0x0060 to to 0xFFAD; 0x00FF;

Este arc#i$o es generado automticamente por CodeWarrior una $ez que se utiliza el ,ro&ect Wizard para crear el espacio de traba&o en base a uno de los microcontroladores. ,ero nos !alta la segunda zona la zona de ,/"CE4EA- en esta parte el lin0er in!orma al compilador y al programa de descarga donde $a el cdigo, donde $an las $ariables y donde $an las constantes dentro del mapa que se creo en la parte de )ED4EA-. Ejemplo. )e desea que de manera automtica las $ariables se coloquen en @"4 y el cdigo y constantes se guarden en @54 . Solucion. PLACEMENT DEFAULT_RAM DEFAULT_ROM END INTO INTO RAM; ROM;

Fig. +.8 Imagen de un arc#i$o F.,@4 para el ):>ED>

DIRECTIVAS PRA%MA /as directi$as ,@"D4" nos permiten in!ormar al compilador de acciones que tiene que tomar durante el proceso de compilacin, en este caso, solo nos $amos en!ocar en como podemos elegir donde ubicar una $ariable o constante en di!erentes zonas de memoria de!inidas por el arc#i$o ,@4 que anteriormente $imos. /as directi$as ,@"D4" que nos permiten esto son: D"-"G)ED. Indica el segmento para guardar una $ariable o dato. Este segmento debe estar declarado en el arc#i$o ,@4. /as constantes tambi*n pueden indicarse el lugar donde sern guardadas con esta directi$a. C5DEG)ED. Indica el segmento para el siguiente cdigo. H por lo tanto se debe tratar como tal. C5A)-G)ED. Indica que el dato siguiente es reser$ado y debe mantenerse constante. " continuacin se muestran e&emplos sobre el uso de las directi$as, Ejemplo. En el siguiente e&emplo las !unciones ! y # son de!inidas en di!erentes segmentos utilizando Ipragma C5DEG)ED. )e puede obser$ar que tanto la de!inicin de la !unciona asJ como el cdigo de la !uncin se deben de de!inir con la directi$a. -ambien debe #acerse notar que tanto C5DID5+ como C5DID58 son segmentos que estan de!inidos en el arc#i$o ,@4. /* Def ! " #! $e %&' F(!" o!e' */ )*+&,-& CODE_SEG CODIGO. exte+! /o $ f0/o $1; )*+&,-& CODE_SEG CODIGO2 exte+! /o $ 30/o $1; )*+&,-& CODE_SEG DEFAULT /* Co$ ,o $e %&' F(!" o!e' */ )*+&,-& CODE_SEG CODIGO. /o $ f0/o $14 /* - e!t+&' 5(e f e't& e! CODIGO. 301; /* 3 e't& e! e% Se,-e!to CODIGO2*/ 6 )*+&,-& CODE_SEG MY_CODIGO2 /o $ 30/o $14 f01; 6

)*+&,-& CODE_SEG DEFAULT Ejemplo. En el siguiente e&emplo las $ariables a y b son de!inidas en di!erentes segmentos utilizando Ipragma D"-"G)ED. 5bser$e que despu*s de elegir el segmento para cada una de las $ariables se regresa al segmento DEF" /- . /* Def ! " #! $e )*+&,-& DATA_SEG !t 8; )*+&,-& DATA_SEG !t :; )*+&,-& DATA_SEG 7&+ &8%e' */ S9ORT_MEMORY CUSTOM_MEMORY DEFAULT

COMPILACION CONDICIONAL. En muc#as ocasionas deseamos #acer un cdigo lo su!icientemente robusto que nos permita que sea reutilizado para nue$os dise'os o simplemente una actualizacin del producto que estamos lanzando, y mas por los cambios tan rpidos que nuestro mundo globalizado nos demanda. na alternati$a para poder de alguna manera controlar que una parte de cdigo sea compilada para ciertos casos y en casos distintos no, son las directi$as para compilacin condicional. Estas directi$as son: ) f ) f$ef ) f!$ef )e% f )e%'e )e!$ f; Estas directi$as se basan en el !uncionamiento tal cual de una sentencia IFKE/)E de cdigo con la di!erencia que su uso es solo por el compilador y no por el cdigo que se esta e&ecutando. Ejemplo. En el siguiente e&emplo se desea utilizar el mismo cdigo generado tanto para el 4CL):>ED> como para el 4CL):>EDM aunque son de la misma !amilia e%isten algunos registros que no se encuentran en la misma direccin por tanto usando la siguiente compilacin condicional se puede elegir entre la librerJa del ED> y la librerJa del EDM. El de!ine es la condicion del IFDEF por tanto en este caso se selecciona ED>

Solucin.

)$ef !e <G= ) f$ef <G=

/*A5(> 'e e% ,e %& % 8+e+>& */

) !"%($e ?MC@S0=<G=;3A )e%'e ) !"%($e ?MC@S0=<GB;3A )e!$ f

/* L 8+e+ & *&+& e% <G= /* L 8+e+ & *&+& e% <GB

MACROS. )u uso elimina la realizacin de tareas repetiti$as, automatizndolas. Bsicamente, se trata de un grupo de comandos de una aplicacin, organizados segNn un determinado &uego de instrucciones y cuya e&ecucin puede ser pedida de una sola $ez para realizar la !uncin que se desea. /a directi$a DEFIAE nos sir$e para poder crearlas, ba&o la siguiente sinta%is. )$ef !e ?ETI<UETA $e %& MACROA ?ACCIONES DE LA MACROA

Ejemplo. En este e&emplo se crean las macros /EDGEACEADID5 y /EDGBIC5/5@ en la primera nos permite apagar o prender el /ED que esta conectado al bit 9 del puerto B. H #aciendo uso de la macro /EDGBIC5/5@ podemos de una manera muy simple y automazida cambiar el color del /EDGBIC5/5@ obser$a que se e&ecutan dos lineas de cdigo y en el programa principal solo lo mandas llamar como si !uera una !uncin. )$ef )$ef )$ef )$ef !e OFF 0 !e ON . !e LED_ENCENDIDO0't&t('1 !e LED_CICOLOR0"o!t+o%1

PTC_PTCD = 't&t('; PTC_PTC6 =E"o!t+o%; PTC_PTC6="o!t+o%;

/o $ -& ! 0/o $1 4 PTC_PTCD=0xff; LED_ENCENDIDO0ON1; LED_CICOLOR0OFF1; fo+0;;1; 6

ESTRUCTURA DE ARC&IVOS. El orden es uno de los elementos que al programar se $uel$e necesario es por esta razn entre otras que se requiere organizar el cdigo que #acemos en di!erentes arc#i$os, CodeWarrior al utilizar su ,royect Wizard para empezar un proyecto genera como se muestra en la !igura siguiente, una estructura de arc#i$os bsica. Esta estructura contiene las siguientes carpetas )5 @CE) en la cual se deben agregar todos los arc#i$os con e%tensin F.C es decir todos los que contienen el cdigo !uente de todas y cada una de las !unciones dise'adas para el programa. IAC/ DE) en esta carpeta deben a'adirse los arc#i$os F.= que contienen las de!iniciones de las $ariables asi como los prototipos de las !unciones de los arc#i$os F.C ,@5OEC- )E--IAD). Esta carpeta contiene las propiedades del proyecto completo. Dentro de esta carpeta se encuentra : o )-"@- ,GC5DE. Eue nos da el cdigo de inicializacin del )-"C< y otras partes del C, para e&ecutar codigo "A)I C. o /IA<E@ FI/E). Dentro de esta carpeta se encuentra el arc#i$o ,@4 con las de!iniciones necesarias para el lin0er. o "rc#i$o B @AE@.BB/. Contiene de!iniciones que seran utilizadas por el =IW"@E 1programa de Descarga2 para la programacin de la memoria F/")= y EE,@54. o "rc#i$o F.4",. Contiene in!ormacin generada despu*s de la compilacin, nos indica el tama'o de cada una de las !unciones, el tama'o y posicin donde estan almacenadas las $ariables, etc.

Fig. 9.7 Estructura de un ,rograma Denerado por el ,ro&ect Wizard para el ):>ED>.

D'(c"r)".
/a etapa intermedia una $ez que el programa #a sido compilado es descargarlo a la memoria del 4icrocontrolador para poder #acer depuracin del mismo. ,ara esto cabe aclarar que por cone%iones se denomina en CodeWarrior a las distintas !ormas que e%isten para conectarnos con el 4C para tanto programar la memoria como para poder #acer depuracin. En el caso del microcontrolador que #emos estado usando el 4CL):>ED> este microcontrolador pertenece a la !amila =C1)2:> de Freescale el cual utiliza el modulo de BD4 para poder #acer estas !unciones, /a tar&eta que DE45ED> tiene entonces un BD4 desarrollado por la empresa ,PE. ,or lo cual utiliza una cone%in , ,PE 4ultilin0 ? Cyclone ,ro, en la siguiente !igura se muestran las opciones disponibles en CodeWarrior.

Fig. 9.M Cone%iones Disponibles en CodeWarrior.

,ara poder entonces descargar el programa debemos realizar una cone%in entre nuestro -"@DE- 1 tar&eta o microcontrolador2 y nuestra ,C, en la !ig 9.9 se muestra la $entana que aparece una $ez que se #a eligido y en la cual se elige la inter!ase de cone%in, misma que se utilizo durante la e%plicacin en el capitulo 8.

Fig. 9.9 3entana de ,rogramacin del Dispositi$o.

D' ur"cin.
na de las #erramientas que mas nos sir$en para poder corregir errores de programacin 1bugs2 son las #erramientas de depuracin en CodeWarrior es crear B@E"<,5IA-) y W"-C=,5IA-) a continuacin se da una e%plicacin de cada uno de ellos. En la !igura 9.; )e muestra una imagen de la #erramienta de Depuracin =IW"3E que $iene dentro del "mbiente de Desarrollo de CodeWarrior.

Fig. 9.; Imagen de la =erramienta de Depuracin =i(a$e. B@E"<,5IA-. Es un comando que permite detener la e&ecucin del programa en una lJnea de cdigo indicada. ,ara !i&ar un B@E"<,5IA- basta con solo dar clic derec#o sobre la lJnea de cdigo donde se desea !i&ar el B@E"<,5IA-. Como se muestra en la !igura 9.Q la !lec#a con color ro&o indica que se #a !i&ado un B@E"<,5IA- de manera que al correr el programa en !orma continua al encontrar la !lec#a ro&a el programa de depuracin dentiene la e&ecucin en esa lJnea y se puede obser$ar el resultado que #asta ese momento se lle$a.

Fig. 9.Q 3entana de Cdigo con un B@E"<,5IA-.

W"-C=,5IA-. Es un B@E"<,5IA- en una localidad de memoria especJ!ica. Como se $e en la !ig. 9.> )e agrega un W"-C=,5IA- al registro )CID del puerto serial, para obser$ar en que momento cambia y es modi!icado. "l igual que un B@E"<,5IA#aciendo clic con botn derec#o aparece el menN donde se puede elegir agregar W"-C=,5IA-.

Fig. 9.> 3entana de Datos donde se agrego un W"-C=,5IA-.

Funcion'( E( 'ci"!'(
" continuacin en listamos tres !unciones e%tras con las que cuenta el ambiente de Desarrollo de CodeWarrior:

Funcin d' Actu"!i*"cin Cod'W"rrior U d"t'r.


Con esta #erramienta es posible mantener su ambiente de desarrollo con las Nltimas actualizaciones que Freescale o!rece, algo importante es que actualiza tanto al compilador con las nue$as librerJas disponibles tanto para los microcontroladores actuales como para los pr%imos lanzamientos que $an e%istir. /a !ig. 9.L 4uestra las pantallas del CodeWarrior pdater.

Fig. 9.L 3entanas del CodeWarrior pdater

Funcin d' Com r'(in d'! Pro+'cto P"c, "nd %O .


Con esta opcin es posible crear un arc#i$o RI, de todo el proyecto que actualmente se este desarrollando. Es muy Ntil ya que guarda por completo las rutas del proyecto. 5 se puede seleccionar que solo se guarde el cdigo !uente, de&ando los dems arc#i$os no disponibles.

Fig. 9.+: 3entanas de la !uncin ,"C< and D5

&'rr"mi'nt"( d' D' ur"cin.

E%isten algunas #erramientas que o!recen compa'Jas socias de Freescale para poder #acer Depuracin en /Jnea o en $i$o, entre estas se encuentran el ,PE 4ultilin0 BD4 que es la !igura 9.++ y en la !igura 9.+8 se obser$a un ,PE Cyclone ,ro que permite programar 5FF/IAE asJ como 5A/IAE.

Fig. 9.++ 4ultilin0 BD4

Fig. 9.+8 Cyclone ,@5

Iniciando el uso del CodeWarrior


El CodeWarrior es una #erramienta integrada de desarrollo para los microcontroladores, la cual nos permite desde editar los arc#i$os de los programas, compilar en C, programar y depurar los programas creados para el microcontrolador. En la siguiente seccin se $era como empezar un nue$o proyecto en CodeWarrior y #acer el programa para el prendido y apagado de los /ED de la tar&eta DE45L):>ED>. Estamos considerando que pre$iamente #a sido instalado en la computadora el CodeWarrior.

Cmo crear un proyecto en el CodeWarrior ?


o Iniciando un proyecto Aue$o o Del menu nue$o proyecto SFileKTAe( pro&ectU )elecciona la !amilia de microcontroladores =C):> )elecciona la !amilia =C):>E Familia )elecciona el microcontrolador 4CL):>ED> )elecciona la cone%in ,PE 4ultilin0?

Como se muestra en la siguiente !igura

Establece el nombre del proyecto En el cuadro de te%to SProject Name:U y la ruta donde se guardar la in!ormacin del proyecto en el cuadro de te%to Location: )eleccionamos el /engua&e a utilizar, para este e&emplo solo marcamos la casilla de C, y #acemos clic en el botn terminar Finish

Un vistazo sobre el proyecto generado

"l !inalizar el proceso de creacin del proyecto aparece la $entana del proyecto como se muestra na $ista mas detallada a la $entana del proyecto

En esta $entana se muestra el nombre del proyecto en el tJtulo: ,rcticaG/ED+.mcp

Botones de Herramientas del proyecto:


/os botones de #erramientas que se $a a utilizar durante los e&ercicios de este libro se encuentran agrupados a un lado de la persiana de cone%in

&"c'r '! ro+'cto .Com i!"r + 'n!"*"r/. M",'.

Esta #erramienta realiza el proceso de compilacin de nuestro programa en SCU y de enlace el cual genera el arc#i$o de salida y los mapas necesarios para despu*s programar y depurar nuestra aplicacin.

D' ur"cin. D'1u).

Esta #erramienta integra la !uncin de compilar y enlazar S4a0eU si es que no se #a compilado nuestro cdigo y e&ecuta el programa de depuracin, el cual a su $ez graba el programa en nuestro microcontrolador y permite la depuracin del cdigo.

Archivo main().c
En este arc#i$o es donde escribiremos nuestro cdigo, e incluye la !uncin main12 la cual llamada despu*s de un proceso de inicializacin denominado startup12, encargado de inicializar las $ariables como es requerido por el estndar "A)I de C.

void MCU_init(void); /* Device initialization function declaration */ void main(void) { /* Uncomment this function call after using Device Initialization to use the generated code */ /* MCU_init(); */ EnableInterrupts; /* enable interrupts */ /* include your code here */

for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave this function */ }

Archivos de Encabezado (archivos.h)


En los programas en lengua&e SCU estos arc#i$os de encabezado se utilizan para de!inir constantes, establecer el prototipo de las !unciones, se $er mas detalle de las !unciones en el capJtulo 7. En el caso del arc#i$o generado por el CodeWarrior se incluyen las siguientes re!erencias a los arc#i$os.# Iinclude V#ide!.#T ?F !or EnableInterrupts macro F? Iinclude Wderi$ati$e.#W ?F incluye las declaraciones de los peri!*ricos F? Iinclude V4CL):>ED>.#T ?F De!inicion de los registros y bits del microcontrolador F? En el siguiente recuadro se muestra una parte del arc#i$o 4CL):>ED>.#
/*** PTBD - Port B Data Register; 0x00000002 ***/ typedef union { byte Byte; struct { byte PTBD0 :1; Register Bit 0 */ byte PTBD1 :1; Register Bit 1 */ byte PTBD2 :1; Register Bit 2 */ byte PTBD3 :1; Register Bit 3 */ byte PTBD4 :1; Register Bit 4 */ byte PTBD5 :1; Register Bit 5 */ byte PTBD6 :1; Register Bit 6 */ byte PTBD7 :1; Register Bit 7 */ } Bits; } PTBDSTR; extern volatile PTBDSTR _PTBD @0x00000002; #define PTBD _PTBD.Byte

/* Port B Data /* Port B Data /* Port B Data /* Port B Data /* Port B Data /* Port B Data /* Port B Data /* Port B Data

Ejercicio r!ctico Control de encendido y apagado de un "E#


En esta prctica se realizar todo el proceso de cmo modi!icar el proyecto generado por el CodeWarrior para #acer uso de los puertos de entrada y salida del microcontrolador realizando con ello un control de encendido y apagado de los /EDs e%istentes en la tar&eta DE45L):>ED>. /os pasos a seguir son: +.K Crear un nue$o proyecto con el CodeWarrior con el nombre: practicaGled.c y abrir el arc#i$o main.c 8.K Inicializar el puerto B bit ; y bit Q como salidas, de acuerdo con la -abla +. /os /EDs estn conectados en el puerto B ,-B; y ,-BQ. esto se #ace escribiendo un uno en el registro de direccin del puerto B ,-BDD. 7.K En el lazo principal del programa encender y apagar los /ED Esto es realizado escribiendo en el registro de datos del ,uerto B. ,-BD. E&emplo del cdigo
void main() { /*inicializacin del puerto */ EnableInterrupts; /* enable interrupts */ /*include your code here */ PTBDD_PTBDD6 = 1;/*Puerto PTB6 como salida*/ PTBDD_PTBDD7 = 1;/*Puerto PTB7 como salida*/ for(;;) { PTBD_PTBD6 = 1; /* Apaga el LED en PTB6 */ PTBD_PTBD7 = 1; /* Apaga el LED en PTB7 */ PTBD_PTBD6 = 0; /* Enciende el LED en PTB6 */ PTBD_PTBD7 = 0; /* Enciende el LED en PTB7 */ __RESET_WATCHDOG(); /* feeds the dog */ } }

M.K Compilar el programa "l terminar tu cdigo en C #az clic en el botn S4"<EU, con lo cual se inicializar el proceso de compilacin en cual tomo el cdigo en C y $eri!icar que no #aya errores de escritura en el cdigo, o nos ad$ertir sobre ciertas !unciones que e!ectu el compilador, si el cdigo no tiene errores de sinta%is este ser traducido a un lengua&e para que pueda ser programado y entendido por el microcontrolador.

9.K ,rogramar el microcontrolador "ntes de proceder con esto $eri!ica que la tar&eta DE45L):>ED> este conectada a la computadora con el cable )B. /os led de )B ,W@ y ,W@G5 - deben estar encendidos, asJ como el led $erde 3DD. )ino no esta encendido el led $erde 3DD $eri!ica que los &umpers ,W@G)E/ este colocado en la posicin 3B. /a programacin se realiza mediante la #erramienta Debug y lo #ace en !orma automtica cuando damos clic en el botn DEB D. Durante este proceso se indican el estado de programacin de la memoria del microcontrolador 1memoria Flas#2 /as operaciones que realiza el Debugger son: Borra la memoria. )e ba&a el cdigo a la memoria F/")= 1 se programa el microcontrolador2 )e $eri!ica el programa )e e&ecuta el programa y para automticamente en la !uncin main12. "l terminar el proceso de programacin del microcontrolador tenemos la siguiente pantalla:

;.K Correr paso a paso la aplicacin ,ara correr la aplicacin paso a paso o instruccin por instruccin, se utiliza el botn ;.+.K 5bser$ar como se modi!ica la memoria del microcontrolador ;.8.K 5bser$ar el encendido y apagado de los /ED

Q.K ,ara e&ecutar el programa se utiliza el botn Aota. )i se e&ecuta el programa los /ED aparecern que estn todo el tiempo encendidos, debido a que apagan y prenden muy rpidamente.

Puertos de Entrada Utilizando los botones de la tarjeta


5b&eti$o: ,ara $eri!icar que los botones son leJdos adecuadamente, se #ar que cuando se presione el boton + 1)W+2 uno encienda el /ED+ y cuando se presione el botn 81)W82 encienda el /ED8 De acuerdo con la tabla de &umpers y con!iguracin de la tar&eta DE45L):>ED>, los botones estn conectados a los pines ,-"8 y ,-"7 del microcontrolador y cada $ez que son presionados leen un cero. /a practica consiste en base al programa anterior agregar la parte de leer los botones /os pasos a seguir son. +.K con!igurar el puerto como entrada ,-"8, y ,-"7 ,-"DDG,-"DD8X:Y ,-"DDG,-"DD7X:Y 8.K #abilitar las resitencias de pullKenable para ,-"8 y ,-"7 ,-",EG,-",E8X +Y ,-",EG,-",E7X +Y 7.K "ctuar sobre los /ED si el botn en presionado En este caso el $alor del led toma directamente el $alor del botn correspondiente ,-BDG,-BD; X ,-"DG,-"D8Y ,-BDG,-BDQ X ,-"DG,-"D7Y E&emplo del cdigo
void main() { /*inicializacin del puerto */ EnableInterrupts; /* enable interrupts */ /*include your code here */ PTBDD_PTBDD6 = 1;/*Puerto PTB6 como salida*/ PTBDD_PTBDD7 = 1;/*Puerto PTB7 como salida*/ PTADD_PTADD2=0; PTADD_PTADD3=0; PTAPE_PTAPE2=1; PTAPE_PTAPE3=1; /*Puerto PTA2 como entrada*/ /*Puerto PTA3 como entrada*/ /*Puerto PTA2 como resistencia de Pull-up habilitada*/ /*Puerto PTA3 como resistencia de Pull-up habilitada*/

for(;;) { PTBD_PTBD6 = PTBD_PTBD7 =

PTAD_PTAD2; /*El LED1 toma el valor del SW1*/ PTAD_PTAD2; /*El LED2 toma el valor del SW2*/

__RESET_WATCHDOG(); /* feeds the dog */ } }

M.K Compila el programa

Ejecuta tu programa $ corre tu programa sin estar conectado a la Computadora.


na $ez programado el microcontrolador, el programa queda en !orma permanente en la memoria F/")=. ,or lo que para correr la aplicacin ser solamente necesario conectar la !uente de alimentacin. A5-" el C5,. El microcontrolador se con!igura despu*s de reset para que opere el C5,, por lo que si tu aplicacin no esta preparada para utilizar esta !uncin debes des#abilitarlo como se muestra en el siguiente cdigo. )5,-+GC5,E X :Y ?FDes#abilita la !uncin de C5,F?
void main() { /*inicializacin del puerto */
OPT1_COPE = 0; /*Deshabilita la funci n de COP*/

EnableInterrupts; /* enable interrupts */ /*include your code here */ PTBDD_PTBDD6 = 1;/*Puerto PTB6 como salida*/ PTBDD_PTBDD7 = 1;/*Puerto PTB7 como salida*/ for(;;) { PTBD_PTBD6 = 1; /* Apaga el LED en PTB6 */ PTBD_PTBD7 = 1; /* Apaga el LED en PTB7 */ PTBD_PTBD6 = 0; /* Enciende el LED en PTB6 */ PTBD_PTBD7 = 0; /* Enciende el LED en PTB7 */ __RESET_WATCHDOG(); /* feeds the dog */ }

M.K Compilar el programa

"l terminar tu cdigo en C #az clic en el botn S4"<EU, con lo cual se inicializar el proceso de compilacin en cual tomo el cdigo en C y $eri!icar que no #aya errores de escritura en el cdigo, o nos ad$ertir sobre ciertas !unciones que e!ectu el compilador, si el cdigo no tiene errores de sinta%is este ser traducido a un lengua&e para que pueda ser programado y entendido por el microcontrolador.

9.K ,rogramar el microcontrolador ;.K E&ecutar el programa .

/os /EDs estaran apagados #asta que sea presionado alguno de los botones.