Está en la página 1de 24

CodeWarriorV10.

TutorialparaIniciacindeunproyectoenCodeWarriorv10.6
AliniciarlasesinconelCodeWarriorloprimeroquenospideelIDEesquecreemoso
elijamosun"workspace"(unespaciodetrabajo)paratrabajar.Creamosunworkspaceen
unacarpetaaeleccinutilizandoelbotn"Browse"paraelegirlaubicacindelmismo.

Se abre el espacio de trabajo en el cual debemos crear nuestro propio proyecto, para
procedervamosacerrarlaventana"Wellcome"quemeguiaraenlospasosparacrearun

1
1Parte

CodeWarriorV10.6

nuevo proyecto ya que procederemos a hacerlo paso a paso desde la perspectiva del
editor,comocorresponde.
Abrimoselmen"File">solapa"New">solapa"BareBoardProject"

Sedespliegalaventanaquesemuestraenlacapturadepantalladeabajoyenelcampo
correspondienteescribimosunnombredeproyecto,enestecaso"Blinking",presionamos
"Next".Notequedestildandolaopcin"Usedefaultlocation"(utilicelaubicacinpor

2
1Parte

CodeWarriorV10.6

defecto), podemos elegir, si lo deseamos, una ubicacin diferente de la del workspace


para el proyecto que estamos creando. Normalmente y por razones de orden solemos
elegirlaubicacinpordefectoqueesprecisamenteladelworcspace.
A continuacin se despliega la ventana "Devices" (Dispositivos) donde seleccionamos el
MCU que vamos a utilizar. En este caso, seleccionamos en el campo correspondiente la
opcin "S08" > "HCS08SH Family" > "MC9S08SH8" que corresponde al MCU que
utilizaremos en nuestro proyecto. Dejamos tildada la opcin "Application" en "Project
Type / Output", puesto que deseamos crear una aplicacin para grabar en el MCU
escogido.Presionamos"Next".

Sedespliegaentonceselmen"Conections",deseleccionamoslaopcinquevienetildada
pordefectoquecorrespondeaunadelasplacasdedesarrolloutilizadascomnmentey
seleccionamos la opcin "Open Source BDM" con la cual determinamos el tipo de
programador que vamos a utilizar (EBDM); tambin seleccionamos la opcin "P&E Full
Chip Simulator",estame permitir realizar la simulacin del proyecto sin necesidad de
tenerconectadalaplacadedebuggeryprogramacin.Presionamos"Next"

3
1Parte

CodeWarriorV10.6

Sedespliegaacontinuacinlaventana"Languajes"yconservamosseleccionadalaopcin

"C",yaquevamosaprogramarutilizandoellenguajeC.Notequeparautilizarlaopcin
"Absolute Assembly" debemos des tildar las tres opciones anteriores ya que no son
compatibles con esta ltima. Presionamos "Next". Se despliega entonces la ventana
"RapidApplicationDevelopment"(DesarrolloRpidodeAplicacionesabreviadoRAD),

4
1Parte

CodeWarriorV10.6

en este punto seleccionamos la opcin "Processor Expert" que me habilitar una


aplicacin,queespropiadelIDECodeWarrior,quemefacilitalatereadeconfigurarlos

mdulos que necesite utilizar del MCU. Tambin debo seleccionar la opcin "Hardware
configuration" que me permitir inicializar dichos los mdulos y utilizar las funciones
asociadas aestos directamente utilizandolaaplicacinProcessorExpert.Luegopresiono
"Next".Seabreentonceslaventana"C/C++Opciones"ydejolasopcionespordefecto.

5
1Parte

CodeWarriorV10.6

En estaventana tenemoslaposibilidaddeelegir lamanerade optimizarnuestrocdigo


seleccionandodistintasopcionesdentrodetresposibilidadesasaber:
La primera me permite elegir el modelo de memoria que vamos a utilizar, en la cual
tenemosdosopciones:TinyySmall.
ElmodeloTinyserecomiendaparaeldesarrollodeaplicacionesenlasquelavelocidades
unfactorcrtico,eneste,losdatosylapilasemapeanenlaPaginaCero,queestubicada
al principio del mapa de memoria del sistema y se caracteriza por ser de acceso muy
rpido.Ladesventajadeestemodeloesqueelespaciodisponibleparaalojarlosdatosdel
programaydelapilaselimitaa255posiciones,queeseltamaodelaPaginaCero.
ElmodeloSmallen cambio,utilizatodo elespaciodememoria disponibleparaalojarel
cdigoylosdatospermitiendoestolautilizacindeunamayorcantidaddevariables.
Aclarado esto, a continuacin presionamos "Finish" y comienza la creacin del proyecto
conlasopcionesconfiguradascomosemuestraenlasiguientecapturadepantalla.

Elprogramacreaelproyectoymedevuelveelcontrolenlasiguientepantalla:
Elencapsuladopordefecto,quesemuestraenlapantalla,nosecorrespondeconelque
vamosautilizarennuestroproyecto,queeselencapsuladoPDIPde20pines.
Paracambiarel encapsulado,presionamos elbotn "SelectPackageForTheProcessor"
queseveresaltadoenlacapturadepantalla.

6
1Parte

CodeWarriorV10.6

Se despliega la siguiente ventana en la cual se listan todas las opciones de encapsulado


disponiblesparaelMCUseleccionado.ElegimosdelalistalaopcinMC9S08SH8MPJ20
pinsPDIP,queeslaquenecesitamos.Presionamos"OK".

Se reconfigura el proyecto y se despliega una ventana en la que me pregunta si deseo


cambiar las areas de RAM/ROM a valores por defecto correspondientes a la nueva

7
1Parte

CodeWarriorV10.6

variantedeCPUseleccionada.Estapreguntasedebeaquealefectuarestecambio,nose
preservanlasconfiguracionesutilizadasanteriormenteparaRAM/ROM.estosolotendria

relevanciasidecidiramoscambiarelencapsuladocuandoyaelproyectollevaunestado
avanzado de desarrollo, cosa que en nuestro caso no es lo que sucede, por tal motivo
presionamoselbotn"YES"aceptandoesto.

Se ve en la nueva pantalla el encapsulado PDIP de 20 pines que seleccionamos para


nuestro proyecto. Note en esta captura de pantalla que est seleccionado el botn
8
1Parte

CodeWarriorV10.6

"Hardware" en la posicin superior derecha; esto me indica que estamos viendo la


perspectiva en la se muestra toda la informacin disponible acerca del hardware que
estamos utilizando. El CodeWarrior utiliza una serie de perspectivas, que estn
conformadas por un conjunto de ventanas, que se despliegan en una misma pantalla, y
que contienen la informacin necesaria para desarrollar diferentes actividades.
Bsicamente estn disponibles por defecto tres perspectivas: la recin mencionada
"Hardware",yadescripta,laperspectiva"C/C++"queagrupaventanasconlainformacin
necesaria para el desarrollo del proyecto; esta perspectiva es conocida como la
Perspectiva del Editor, y la perspectiva "Debugger", que agrupa ventanas con la
informacin y los comandos necesarios para realizar la depuracin y/o simulacin del
proyecto. Esta ultima perspectiva se activar ms adelante una vez que hayamos
"construido"elproyectoycuandocreamoslosarchivosnecesariosparaladepuracin.
A continuacin cambiamos a la "perspectiva del editor" presionando el botn "C/C++"
ubicadoenelespaciosuperiorderechoyalaizquierdadelbotn"Hardware".Lavistade
la"perspectivadeleditor"semuestraenlacapturadepantallasiguiente.

DesarrollodeunProyectoenCodeWarriorV10.6
A continuacin vamos a preparar las ventanas que necesitamos para el desarrollo de
nuestroproyectoqueconsistirenunaaplicacinqueharparpadearunledconectadoa
un pin determinado de un puerto del MCU; los tiempos de parpadeo, es decir su
frecuencia,secontrolaranmediantelautilizacindeuntimer.
Cerramos la ventana "Commander" ya que no vamos a utilizarla. Luego, en el men
"Window"seleccionamos"ShowView">"Other...".
9
1Parte

CodeWarriorV10.6

Sedespliegalaventana"ShowView"enlacualdesplegamoselmencorrespondienteal
"ProcessorExpert"enelcualseleccionamos"ComponentLibrary".Presionamos"OK"

De esta manera habilitamos la ventana que muestra la librera de componentes


disponibles en el MCU seleccionado. Esto me permitir seleccionar los mdulos que
vamos a utilizar en nuestro proyecto. En este momento debemos esperar a que el
codewarrior despliegue la informacin necesaria en la nueva ventana llamada
"ComponentsLibrary",unavezterminadoelprocesosevelaventanacomosemuestra
enlacapturadepantalladeabajo.
10
1Parte

CodeWarriorV10.6

A continuacin desplegamos el men "Window" y seleccionamos "Show View" >


"Componenets".

Estodesplegaralaventana"ComponenetsBlinking"quesemuestraenelespacioinferior
izquierdoenlacapturadepantalladeabajo.Enestaventanapodremosverlosmduloso
componentesquevamosagregandoanuestroproyectoparasuposteriorconfiguraciny
utilizacin.

11
1Parte

CodeWarriorV10.6

Paraeldesarrollode nuestro proyectonecesitaremosutilizardos mdulos:ElPuertode


Entrada/Salida,paraencenderyapagarelled,yelTimer,paracontrolarlafrecuenciade
parpadeo,esdecireltiempodeencendidoyapagado.
Paraagregarestosmdulosalproyectolosbuscoenlaventana"ComponenetsLibrary"
Desplegamoselmen"CPUInternalPeripherals">"PortI/O".Lacapturadepantallaha
sidomodificadaparaqueseaprecienlosmenuesdesplegados.

Dentrodelmen"PortI/O"seobservanvarioscomponentes.Vamosaelegirelprimero
("BitIO")yaquesoloutilizaremosunbitdepuerto.Sinecesitamosutilizarmsdeunbit
12
1Parte

CodeWarriorV10.6

depuertoounbytecompletodepuerto,podremosseleccionarotrodeloscomponentes
listadosdentrodeestemen.Seleccionamos,entonces,elcomponente"BitIO",hacemos
clickderechoyseleccionamos"Addtoproject"paraagregarestecomponentealproyecto
queestamosdesarrollando.

Elnuevocomponenteapareceenlapantalla"ComponenetsBlonking"comoseaprecia
enlacapturadepantalladeabajo.

13
1Parte

CodeWarriorV10.6

Luegorepetimoselprocedimientodesplegandoelmen"Timer",delcualseleccionamos
en componente "TimerInt"; este componente me permite programar interrupciones a
intervalosdetiempoconfigurables(Interrupcionesperidicas).

Agregamos este nuevo componente al proyecto y este aparecer en la ventana


"ComponenetsBlinking"comopuedeapreciarseabajo.

14
1Parte

CodeWarriorV10.6

A continuacin procederemos a configurar los mdulos que vamos a usar en nuestro


proyecto.

Haciendo doble click izquierdo sobres el componente "BitIO" en la ventana


"Componentes blinking", se despliega la ventana "Component Inspector" como se
observa abajo. Esta ventana nos permitir configurar el puerto de acuerdo a nuestras
necesidadesparaesteproyecto.

vamosaseleccionarinpindepuertodeterminado,clickeandosobreelcampo"Value"de
laopcin"PinforI/O".ElegimoselPin"PTC2".comosemuestraabajo.
15
1Parte

CodeWarriorV10.6

En el campo "Value" de la opcin "Direction" selecciono "Output", configuro de esta


maneraalpinseleccionadocomopindesalida.

En el campo "Value" de la opcin "Slew rate control for PTC2" selecciono "Yes" paca
configurar el control de velocidad de cambio del pin para reducir la emisiones electro
magnticaspropiasdelosprocesosdeconmutacinenlospinesdepuerto.
Deestemodoelpinqueseconectaralledencuestinseconfigurcomopindesalida
porPTC2concontroldeslewrateycapacidaddemanejodealtacorriente(DriveStrength
forPTC2=Hight).LaconfiguracindelpinPTC2puedeobservarseabajo.
16
1Parte

CodeWarriorV10.6

Para configurar el componente "TimerInt" hacemos doble click izquierdo sobre dicho
componente en la ventana "Componenets blinking". Se observa en la captura de
pantalla que la opcin "Interrupt period" aparece resaltada en rojo. Esta indicacin de
errorsedebeaqueesnecesarioconfigurarelperiododeinterrupcindelcomponente

esdecireltiempoquepasarentrecadainterrupcin.Estoseconfiguraseleccionandoel
campo "Value". Se despliega entonces una ventana en laque puedoseleccionarde una
lista,eltiempodeseadoentrecadainterrupcindeltimer.enestecasoseleccionamosel
valor"262,144ms".
17
1Parte

CodeWarriorV10.6

Enlacapturadeabajoseobservalaconfiguracindelcomponente"TimerInt".

El componente "TimerInt" que configurado para generar una interrupcin cada 262,144
ms.
Desplegandoelmendelcomponente"TimerInt",seobservanlasfuncionesdisponibles
paraestecomponente.Comopuedeobservarseenlacapturadeabajo,lasfuncionesque
tieneuna"x"enrojosobresuicono,sonlasquenoseencuentranhabilitadas,porloque
elProcessorExpertnopodrgenerarelcdigocorrespondienteparautilizarlas.Eselcaso
delafuncin"Enable"
18
1Parte

CodeWarriorV10.6

Para habilitar la generacin del cdigo correspondiente para la utilizacin de la funcin


"Enable",desplegamoslasolapa"Methods"enlaventana"ComponenetInspector"yen
elcampo"Valuen"seleccionamos"Generatecode".Luegopodemosobservarquela"x"
enrojodesaparecedeliconodelafuncin"Enable".

Acontinuacindesplegamoselmendelcomponente"BitIO"enlaventana"Components
Blinking" y observamos las funciones disponibles para este componente. De estas
funcionesdisponiblesvamosautilizarlasfunciones"SetVal"y"NegVal"quesirvenpara,
19
1Parte

CodeWarriorV10.6

respectivamente, sacar un uno lgico por el pin seleccionado y para invertir (negar) el
estadolgicoactualdelpin.Comolafuncin"NegVal"noesthabilitada,procedemosa
habilitarlarepitiendolospasoquehicimosparalafuncin"Enable"deltimer.

Estoseobservaenlacapturadeabajo.

Unavezhabilitadaslasfuncionesquenecesitamos,procedemosagenerarelcdigoque
configurarlosmdulosautilizarenelproyecto.Estecdigologeneraautomticamente
elProcessorExpert.Paragenerarelcdigodeconfiguracindelosmdulospresionamos
elbotn"GenerateProcessorExpertcode"comoseobservaenlacapturadeabajo.
20
1Parte

CodeWarriorV10.6

Segeneraaselcdigodeconfiguracindelosmdulosseleccionados.

En la ventana "CodeWarrior Projects" desplegamos la carpeta "Blinking: FLASH" >


"Source"yaccedemosasalarchivo"main.c"enelcualseescribeelcdigoprincipalde
todoprogramadesarrolladoenlenguajeC.Puedeobservarseenlacapturadepantallade
abajo, la nueva ventana que muestra el contenido del archivo "main.c". En este punto
estamoslistosparacomenzaraescribirnuestrocodigo.

21
1Parte

CodeWarriorV10.6

Enestemomentopodemosrealizarlaprimera"construccin"denuestroproyecto.Para
construir nuestro proyecto desplegamos elmenu "Project" > "BuildAll". Este comando
efectala"construccin"detodoslosarchivosquecomponenelproyecto.

Elprocesode"construccin"deunproyectopuedellevaruntiempo.

22
1Parte

CodeWarriorV10.6

En este momento podemos cerrar el CodeWarrior y continuar en otro momento sin


perdertodolohechohastaahora.

23
1Parte

CodeWarriorV10.6

24
1Parte