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