Está en la página 1de 12

Diseo con microcontroladores PIC en lenguajes MikroBasic y MikroC uocente: lng.

8oger Cuachalla narvez


xoroger[yahoo.es
kAC1ICA02: rogramadores Serlales: lCS - !uM y Mlkro8ootloader
1. 0b]etivos:
A. Conocer los 3 requlsltos para que un proyecto con mlcrocontrolador lunclone correctamente
8. Conocer y Lntender la alabra de Conllguracln del lC16l877A
C. Conocer el protocolo de grabacln serlal lCS
u. Conocer la programacln medlante el gestor de arranque serlal Mlkro8ootloader
L. Armar y probar en protoboard los grabadores Serlal lCS - !uM y Mlkro8ootloader para grabar en la
memorla llash 8CM del lC16l877A
11. 1eoria:
A. kequ|s|tos para que un proyecto con m|crocontro|ador func|one correctamente
Se deben cump||r 3 requ|s|tos para que un proyecto con mlcrocontrolador lunclone adecuadamente:
a) L| hardware debe estar armado correctamente.
Se recomlenda:
1omar en cuenta que los paquetes de dlseno de ulagramas Lsquemtlcos como el roteus, generalmente
no muestran los plnes de conexln a allmentacln: v
CC
, Cnd o v
uu
y v
SS
. un error comun es omltlr estas
conexlones en el protoboard.
Sl leemos un pln 'al alre' en tecnologlas como 11L, esto equlvale a un '1 lglco'. Sln embargo los
mlcrocontroladores usan tecnologlas CMCS donde un pln 'al alre' se puede leer como 1 o 0, es declr no
est dellnldo. ara asegurar lecturas correctas de valores lglcos, se debe asegurar valores lglcos 1 o 0 a
traves de reslstenclas conectadas a v
CC
y Cnd.
Slempre colocar los capacltores de 13 a 33 pl entre los termlnales del crlstal y tlerra para asegurar una
buena oscllacln del relo[.
ara la conexln en protoboard, no utlllzar cables exceslvamente cortos (lormando ngulos de 90
o
en los
extremos) porque arrlesgamos una ra[adura del cable que provocar conexlones lntermltentes en el
clrculto. 1ampoco usar cables exceslvamente largos porque provocan ruldo y desorden. usar una longltud
de cable lntermedla que permlta un leve 'arco' entre puntos de conexln.
rocurar no tener cables pelados o termlnales de componentes (8, C, etc.) muy largos para mlnlmlzar
rlesgos de un corto clrculto.
Ll uso de cables de color 8o[o para conexlones a v
CC
y cables de color negro para conexlones a Cnd.
Ln la vlsuallzacln en protoboard, respetar el orden del peso poslclonal de los blts (b7, b6, b3, b4, b3, b2,
b1, b0) para la conexln llslca de leds y mlcro lnterruptores (swltches).
8evlsar medlante contlnuldad, sl no exlste un corto clrculto en el protoboard.
Ser pulcro y ordenado en el armado del clrculto en el protoboard.
b) L| software debe estar rea||zado correctamente.
Se recomlenda:
Slempre crear un nuevo lolder (o carpeta) lndependlente para cada nuevo proyecto (o una varlacln de
este) que se reallce. un error comun es utlllzar un mlsmo lolder para varlos proyectos o varlaclones de
estos. Ll soltware (Mlkro8aslc, MlkroC, roteus) se conlundlr entre los dlstlntos archlvos generados.
Ll nombre del fo|der de| proyecto debe lnclulr toda la lnlormacln necesarla para su posterlor uso:
8reve y resumlda descrlpcln del proyecto
Lengua[e usado para la creacln del proyecto
Mlcrocontrolador usado
lecha de creacln
Como e[emplo, para un proyecto de un Contador de Leds en 8lnarlo, reallzado en Mlkro8aslcro lor lC
usado el mlcrocontrolador lC16l877A en lecha 2 de novlembre de 2012, un nombre completo serla:
led8nCont Mk8as1C 16I877^ 02 uov 2012
Al mane[ar el wlzard para nuevos proyectos, utlllzar nombres slgnlllcatlvos para el Nombre de royecto.
relerlblemente usar el mlsmo nombre descrlptlvo del lolder del proyecto. ara el e[emplo del punto
anterlor, el nombre del proyector serla: led8nCont
Sl se desea anadlr separacln entre palabras, no usar el Lspaclo, slno el carcter de subrayado. Ls declr:
Contador_de_leds_en_8naro
nC usar nombres generlcos como 'x' que no lndlcan nada. 1amblen evltar el uso de vocales acentuadas
(, e, etc.), las letras 'n' o 'R', o caracteres luera de los prlmeros 127 cdlgos ASCll estndar.
usar nombres de var|ab|es slgnlllcatlvos (L[. velocldad, Sensor, etc.) y no nombres generlcos que adems
de no lndlcar nada, pueden ser usados como reglstros lnternos del mlcrocontrolador (L[. La varlable 'A' se
reserva para el acumulador)
Los complladores Mlkro8aslc y MlkroC detectan automtlcamente los Lrrores de S|ntax|s, es declr
aquellos que tlenen que ver con laltas a las reglas del lengua[e. or e[emplo, sl queremos hallar la
multlpllcacln de dos varlables y almacenarla en una tercera, el slgulente cdlgo genera un error de
slntaxls:
Sa1da = * var1 var2 'Lc ccrrectc seric 5cLJc=vcr1'vcr2
Sln embargo los Lrrores de Semnt|ca, es declr aquellos que tlenen que ver con lallas del slgnlllcado o
concepto, no son detectados. or e[emplo, sl queremos hallar el promedlo de dos varlables y almacenarlo
en una tercera, el slgulente cdlgo nC genera un error a pesar de contener un error de semntlca:
romedo=var1+var2,2 'Lc ccrrectc seric lrcmeJc={vcr1+vcr2)/2
Cuando se tlenen dudas del uso acerca de una luncln o palabra reservada del lengua[e Mlkro8aslc o
MlkroC, lo ms senclllo y rpldo es utlllzar es slstema de Ayuda que proveen dlchos lengua[es. 8asta con
poslclonar el cursor dentro de la palabra o luncln que se qulere conocer y preslonar la tecla I1.
Crabar el clrculto esquemtlco de roteus en el mlsmo lolder de proyecto donde se encuentran el cdlgo
luente y los dems archlvos generados por Mlkro8aslc o MlkroC.
ara reallzar una depuracln de errores de programacln, utlllzar el archlvo .C0i que permlte correr un
programa paso a paso con la poslbllldad de observar y camblar los valores de los reglstros y varlables del
programa
1omar en cuenta que el soltware roteus lSlS reallza la slmulacln sln tomar en cuenta la alabra de
Conllguracln del mlcrocontrolador. Asl mlsmo, aunque no se conecte el relo[ de crlstal, el clrculto 8eset y
otros dlsposltlvos que son obllgatorlamente necesarlos en hardware, roteus reallzar la slmulacln de
todas maneras. or ser roteus una herramlenta 100 soltware, su[eta a errores de programacln,
exlsten varlos eventos que no son slmulados o peor aun que se slmulan mal. or esta razn, la S|mu|ac|n
en roteus es un paso Necesar|o ms NC Suf|c|ente para asegurar el lunclonamlento real en hardware.
c) La a|abra de Conf|gurac|n de| m|crocontro|ador debe estar conf|gurado correctamente.
Ls obllgatorlo que:
no se omlta este paso, pues aunque los lnclsos a) y b) esten correctos, una mala conllguracln no
permltlr el correcto lunclonamlento del proyecto en hardware.
Ll soltware de slmulacln 8C1LuS, no toma en cuenta la conllguracln del mlcrocontrolador y por ende
muchas veces los proyectos lunclonarn" en este soltware.
8. a|abra de Conf|gurac|n de| m|crocontro|ador IC16I877A
bt 12 C {Code rotect) 8t de proteccon de 1a memora Il^Su de rograma
1 = Codgo u0 protegdo
0 = 1oda 1a memora de programa protegda
bt 11 05806 8t de Modo de 1n-Crcut 0ebugger 1C0 {0epuracon Ln Crcuto)
1 = 1n-Crcut 0ebugger deshab1tada, 886 y 887 son pnes de 1,0 de proposto genera1
0 = 1n-Crcut 0ebugger hab1tado, 886 y 887 son usados por e1 depurador 1C0 {emu1ador)
bt 10-9 Wk11:Wk10 8ts de hab1tacon de escrtura de 1a memora de rograma Il^Su
00 = 0reccones 0000h a 0IIIh protegdas
01 = 0reccones 0000h a 07IIh protegdas
10 = 0reccones 0000h a 00IIh protegdas
11 = roteccon de Lscrtura deshab1tada,toda 1a memora de programa puede ser escrta
bt 8 C0 {Code rotect 0ata) 8t de proteccon de 1a memora LL80M de 0atos
1 = Memora LL80M de 0atos u0 protegda
0 = Memora LL80M de 0atos rotegda
bt 7 Lv {low vo1tage rogrammng) 8t de hab1tacon de 1CS{1n-Crcut Sera1 rogrammng)
medante 8ao vo1tae {v00=+Sv) L1 va1or de 1abrca por de1ecto es lv=1
1 = lv hab1tado {882,6M tene 1a 1uncon 6M)
0 = lv deshab1tado {882 se puede usar como 1,0 dgta1), uv {ugh vo1tage = +12 vo1t)
debe ser usado en MCl8
bt 6 80k5N {8rown-out 8eset Lnab1e) 8t de hab1tacon de1 8eset por cada de vo1tae
{vo1tae de ^1mentacon v
00
< 4.2S vo1t)
1 = 808 uab1tado
0 = 808 0eshab1tado
bt 2 Wk15N {ower-up 1mer Lnab1e) 8t de hab1tacon de1 1emporzador a1 Lncenddo {72ms)
1 = W81 0eshab1tado
0 = W81 uab1tado
bt 2 W015N {Watchdog 1mer Lnab1e) 8t de hab1tacon de1 1emporzador erro 6uardan
1 = W01 uab1tado
0 = W01 0eshab1tado
bt 1-0 i0SC1:i0SC0 8ts de Se1eccon de tpo de 0sc1ador
00 = 0sc1ador l {low ower Crysta1) Crsta1 de 8aa otenca {1<=200kuz)
01 = 0sc1ador x1 {Crysta1) Crsta1,8esonador {200kuz>1>=4Muz)
10 = 0sc1ador uS {ugh Speed) Crsta1,8esonador de ^1ta ve1ocdad {4Muz>1>=20Muz)
11 = 0sc1ador 8C {8esstenca, Capactor)
a|abra de Conf|gurac|n de| IC16I877A en M|kro8as|c y M|kroC
Se accede a la alabra de Conllguracln del lC16l877A en Mlkro8aslc y MlkroC a traves del menu
'ro[ect - Ldlt ro[ect'
Los valores recomendados de la alabra de Conllguracln del lC16l877A para las prctlcas de
laboratorlo se muestran en la slgulente grllca:
C. rotoco|o ICS (In-C|rcu|t Ser|a| rogramm|ng)
Cuando se desarrollan slstemas mlcrocontrolados resulta muy lnellclente tener que sacar el lC de su clrculto
para reprogramarlo, una y otra vez, y otra vez. Sl el proyecto es relatlvamente largo, esto no solamente
consume un tlempo conslderable, slno que tamblen dlsmlnuye la vlda utll del lC (los plnes podrlan doblarse y
romperse.
Ll lCS es el slstema utlllzado en los dlsposltlvos lC de Mlcrochlp para programarlos. Ls vllda para todos los
lC de la gama ba[a lC12, los de la gama medla lC16l e lncluso para las lamlllas de gama alta lC18, lC24 y
dslC.
Lste protocolo poslblllta la programacln lC sln que sea necesarla la extraccln de estos de su clrculto de
apllcacln. Lsta caracterlstlca es extremadamente utll no solamente en la etapa de desarrollo debldo a que
ahorra tlempo y traba[o, slno que su utllldad se extlende a la etapa de mantenlmlento y actuallzacln de los
slstemas, dando la poslbllldad de reprogramar los mlsmos "en el campo" en sus respectlvas placas ya
soldadas.
Lste metodo de programacln (lectura, escrltura y verlllcacln) no es excluslvo de los mlcrocontroladores
Mlcrochlp, ya que otras marcas como Atmel, arallax y otros usan tamblen metodos slmllares conocldos de
manera generlca como lS (ln System rogrammlng) y en la arqultectura de rocesadores A8M se utlllza un
metodo slmllar conocldo como !1AC.
Las senales lCS provlstas al lC para programarlos son las slgulentes:
v: volta[e de rogramacln apllcado al pln MCL8/v del lC (+12 volt)
vuu volta[e de Allmentacln provlsto al lC (+3 volt)
Cnu (Cround): Conexln a tlerra
CC (rogram Clock): Senal de relo[ provlsta al lC para slncronla
Cu (rogram uata): Llnea serlal de datos para escrltura, lectura y verlllcacln de la 8CM llash
Ll slgulente dlagrama de clrculto muestra un metodo muy usual para la lmplementacln de lCS:
D. rogramador ser|a| IDM con e| software W|np|c800
Ll computador C requlere tener un puerto serlal CCM1 y tener lnstalado el soltware Wlnlc800.
Ll programador no requlere luente de allmentacln externa y dlspone de un scalo lCS que permlte programar a los
mlcrocontroladores lC
D.1 D|agrama Lsquemt|co:
D.2 L|sta de Componentes:
c4N1lu4u: klkNcl4 u5cklPclN
1 c1 100ul 16v
1 c2 100ul 16v
4 u1,u4,u6,u7 1N4148
1 uJ 2eoet 5v1
1 u5 2eoet 6v2
1 u2 lu
2 O1,O2 8c548
1 k1 1k5 Obm
1 k2 10k Obm
1 u89-n cooectot 5et|ol u89 bembto
D.3 Conex|n Sca|o ICS a| IC18I4S0:
Cable Serlal Crabador !uM en placa Conexln lCS al lC18l330
D.4 Software W|nIC800 con e| programador IDM rogrammer:
lnstalar el soltware WlnlC800, eleglr el ldloma Lspanol
Conllgurar el soltware WlnlC800 para traba[ar con el programador !uM:
Acceder a la conllguracln del grabador a traves del menu 'Conllguracln - Pardware'.
Selecclonar '!uM rogrammer y el puerto serlal CCM1
Pacer cllck en 'Conllrmar camblos'
Conllgurar el soltware WlnlC800 para traba[ar con el lC16l877A:
Selecclonar la lamllla lC16l
Selecclonar el dlsposltlvo lC16l877A
verlllcar sl el WlnlC800 [untamente con el programador !uM detectan al lC16l877A:
Conectar un extremo del cable serlal al puerto serle del computador C y el otro extremo
al grabador !uM
Ln el soltware preslonar el lcono de chlp con slgno de lnterrogacln 'uetectar ulsposltlvo'
Sl todo est correcto, la ventana lndlcar que el lC16l877A ha sldo detectado
L. Gestor de Arranque ser|a| m|kro8oot|oader
L.1 ju es un gestor de arranque 8ootLoader?
un 8ootloader es un pequeno programa resldente en la memorla llash de un mlcrocontrolador que se e[ecuta despues
de cada relnlclo y que a su vez escucha por el puerto uA81 para la recepcln de bytes de cdlgo de programa mandados
tlplcamente desde una C. Sl el bootloader detecta la recepcln de un nuevo programa, reclbe estos bytes y los
almacena en la memorla de programa de usuarlo en el mlcrocontrolador, de otro modo, resclnde el uso del procesador y
pasa el control a un otro programa que haya sldo grabado con anterlorldad
L.2 Venta[as de ut|||zar un 8ootLoader
Los 8ootLoaders llevan ya tlempo utlllzndose en el mundo de los Mlcrocontroladores y su uso ha sldo lundamental en
el exlto de muchos proyectos populares como: Ardulno, lngulno, netdulno, etc. Lstos proyectos basan su exlto en
lacllltar al usuarlo una platalorma econmlca con la que empezar a programar los Mlcrocontroladores y para ello es
lundamental el abaratar costes, como el no tener que utlllzar un programador externo para cargar las apllcaclones de
usuarlo. Lstas placas de desarrollo vlenen ya con el 8ootloader cargado en la memorla llash del lC, por lo que no se
neceslta de nlngun Pardware adlclonal para empezar a programar el Mlcrocontrolador lnsertado en la placa de
desarrollo.
ero esta no es la unlca venta[a de utlllzar un 8ootLoader, otra venta[a la tenemos en que podemos actuallzar el
programa de usuarlo cargado en el Mlcrocontrolador de manera lcll y sln necesldad de sacar el Mlcro luera de la placa
donde este montado.
L.3 Inconven|entes
Ll lnconvenlente prlnclpal e lnevltable de utlllzar un 8ootLoader es el gasto de memorla 8CM que lmpllca el tenerlo
cargado en la memorla del lC de lorma permanente. Adems la conllguracln del lC16l877A no se puede modlllcar.
L.4 D|agrama Lsquemt|co de| 8oot|oader Ser|a|
L.S Grabac|n INICIAL de| software 8oot|oader en e| IC16I877A usando un grabador ICkI12
1. lngrese al lolder de e[emplos donde se lnstal el Mlkro8aslc lor lC:
C:\^rchvos de rograma\Mkroe1ektronka\mkro8asc 80 1or 1C\Lxamp1es\0ther\8oot1oader\16\16I887
2. Con dos cllcks sobre el lcono, abra el proyecto: boot_loader_887.mbppl
3. lngrese al menu: ro[ect - Ldlt ro[ect y camble el procesador a lC16l877A, la lrecuencla a 4 MPz y el
valor de la palabra de conllguracln a 0x2l01.
4. Complle el proyecto haclendo cllck en el lcono '8ulld' o preslonando 'Ctrl+l9'
S. Crabe el archlvo .hex del proyecto en el lC16l877A usando un grabador convenclonal como !uM
5.6 0so del mikro8ootloader con el 1C16i877A pre-grabado con el bootloader
1. usando el menu '1ools - mlkro8ootloader' abra el soltware arrancador
2. Camble el tlpo de procesador a lC16
3. Paga cllck en 'Change Settlng', conllgure el CCM1 con una velocldad de 9600 baud y haga cllck en 'Ck'
4. Conecte el clrculto hardware del 8ootloader Serlal al CCM1 (uerto Serlal) del computador y enclenda la
luente de allmentacln de +3volt
S. Paga cllck en el botn 'Connect' y luego preslone el pulsador '8eset' en el clrculto hardware del
8ootloader Serlal. La ventana lndlcar que se ha reallzado la conexln ('Connected')
6. Paga cllck en el botn '8rowse lor PLx' y selecclone el archlvo .hex que desea grabar en el
mlcrocontrolador. La ventana lndlcar que se ha cargado el archlvo .hex
7. Paga cllck en el botn '8egln uploadlng' y se lnlclar la grabacln en el mlcrocontrolador. osterlormente
aparecer una ventana lndlcando el exlto de la grabacln ( 'Success') . reslone el pulsador '8eset' en el
clrculto hardware del 8ootloader Serlal. Lspere algunos segundos y el programa empezar a lunclonar.
111. rocedimiento 5xperimental en Laboratorio
Primero lirmo:
Armar en protoboard el programador serlal !uM
verlllcar su deteccln por el Wlnlc800
usando el programador !uM, grabar en el lC16l877A la conf|gurac|n y el cd|go del lnclso que
se reallz en la prctlca l01. Opetoc|ooes coo puettos A5M
Armar el clrculto en protoboard y demostrar el lunclonamlento en hardware del programa
5equndo lirmo:
Armar en protoboard el gestor de arranque Mlkro8ootloader
Crabar en el lC16l877A el cdlgo del bootloader
usando el Mlkrobootloader, grabar en el lC16l877A el cd|go del lnclso que se reallz en la
prctlca l02. 8ucles y tomo Je Jec|s|ooes A5M
Armar el clrculto en protoboard y demostrar el lunclonamlento en hardware del programa
1v. 1n1orme de laboratorio
l. llrmas en la Cartula (0, 1 o 2) que avalen los procedlmlentos reallzados en Laboratorlo
ll. 18A8A!C uL lnvLS1lCAClCn : 'rogramac|n ICS en |os m|crocontro|adores IC'
Lxpllcar en detalle:
Algorltmo de programacln lCS
Secuencla de pasos requerldos
ulagrama de 1lempos de las senales lnvolucradas
l ttobojo Je |ovest|qoc|o Jebe |oclu|t.
kesumeo esct|to o mooo (Je uo mlo|mo Je 4 pq|oos)
lueotes Je lofotmoc|o (J|tecc|ooes web, b|bl|oqtoflo)
cop|os |mptesos Je lo |ofotmoc|o oJu|t|Jo o ttovs Je los fueotes
lll. Concluslones

También podría gustarte