Sei sulla pagina 1di 329
Lenguajesde = programacion Introduccion Pasos a seguir para a ONT aD) elaborar un proyecto Colombia: $ 5.500 el a Re US Te eg NOUS TCE Cara's) Curso practico sobre UE EL Scan Programacion, ech Brees A Percocet ner completos El Curso practico sobre MICROCONTROLADORES cle CEKITS. A. se publica ‘en forma de 40 fasciculos de aparicion semanal, encuaclernables en 3 voltimenes ‘Cada fasciculo consta de 4 paginas de cubiertas y 20 paginas de contenido a todo color. De e: imas, 8 estan dedicadas a la seccion de 4a PROGRAMACION y 8 la secciGn de PROYECTOS, Las paginas de cada secci6n son encuademables por separado, Por esta raz6n, al ar los volumenes, debe cuidarse de desprender previamente, de todos los iculos, las 8 paginas centrales de PROYECTOS, las 4 dle PROGRAMA y por tltimo las 8 paginas de Durante la publicaciGn de los fasciculos se pondrin a la venta ks tapas de los 3 voltimenes de la obra para su encuademnacion, CEKIT'S.A. garantiza la publicaciGn de la totalidad de la obra, el suministro de la tapas necesarias para su encuaclemaci6n y el servicio de ntimeros atrasados hasta un, ano después de terminada la circulaciGn del tikimo fasciculo, También garantiza la Fidelidad de la informacion tecxico-practica suministaca y el comecto funcionamiento de los programas includes como exemplos de la obra Motorola, Microchip, PIC, Intel, Aunel, Parallax, Zilog, Philips, son marcas registradas de lasclferertes empress ens Estados Unidos yen otras paises. Ouos productos y nombres de mencionackasen est obra pueden ser marcasregisrachs de sus propietarios. Ese cuno hastdocabondo segtindl plan del edtory de sis autores, y bap suresponsadd, porlossiguirte integrates del ‘departamentotonico de CEKIT'SA Distribucién internacional Argentina: importador: torial Conosur S.A. Av, Belgrano 355 10% Tel 4342:9029 Fax: 4312-9025, ‘email gconosur@speedy.com.ar Dist. Capital VACCARO SANCHES Y CIA, - Moreno 794, 97092) Buenos Aites. Dist Interior: DISTRIBUIDORA BERTRAN S.A. - Av. Vélez Sarsield 195001285) Buenos Aires, - Bolivia: AGENCIA MODERNA LTDA. - Chile: DISTRIBUIDORA ALFA S.A, ~ Colombia: DISTRIBLIDORAS UNIDAS. - Venezuela: DISTRIBUIDORA CONT NENTAL: México: CONSORCIO SAVROLS - Ecuador: DISTRIBUIDORA ANDES. - Panamé: PANAMEX S.A. - Pert: DISTRIBUIDORA BOLIVARIANA S.A. Paraguay: SELECCIONES S.A. Unuguay‘DISTRIBUIDORA CAREAGA, Suscripciones (no validas en Argentina), ntimeros atrasados y consultas técnicas en Colombia CEKIT S.A. Calle 22 N° 8 - 22, Piso 2, A.A. 194 Percira(Colombia) © a nuestro correo electrénico: ecekit@col2.telecom.com.co ISBN (Fasciculo §)958-657-510-1 ISBN (Volumen 1):958-657-198-9 ISBN (Obra completa): 958.657- Tes. Capacitamos para vivir major Calle 22 NPS - 22, Piso 2, Teens (© 3348179. 3348187. 3548189 - 3348193, Fax: (6) 3348020 Pereira Colombia, Carrera 13 N° 38-43, Piso L Telefonos: 2573086. 2573420 - 2577318 Boge - Colombia, email: ecekit@col2telecom.comco hitp://www.cekit.com.co GererteGenerab Jonge Hemin Alvarez Marcelo ARs Director Eitri Manuel Felipe Gonzlez G, a es Humberto Real Blanco. Autores JUAN ANDRES CASTANO W. MANUEL FELIPE GONZALEZ. G. ‘GILBERTO VARGAS C. JUAN DIEGO HERNANDEZ F. Proyectos JOHN JAIME ROBBY G. Disefo cardtula: Luz Angela Plata B. Dison Gloria Marcela GémezG. OCEKITS.A. 2001 Pereina-Colombla Tako derechos ead Pi pis crt del EDICION CONO SUR Inemacional Graphies& Printing Co. 2600 Douglas Road, Suite 400 Coral Gables, Flora 33134, USA Impreso y encuadernado por: RR Donnelley ‘América Latina Ruta Panamericana Kim. 38.700 Buenos Aires Argentina Impreso en Ang Jhmto 2002 fee] cou Macr ieee econ ed Estudie, con el método de CEKIT de “Aprender haciendo”, la tecnolo- ga de los Microcontroladores, una de las que més han cambiado el mundo en los tiltimos aos y gane milcho dinero. Estos pequefios cerebros clectrénicos se encuentran en todas partes: au- Wméviles,/éomphtadoras, electrodomésticos alarmas, jueBos de huces, instrumentos, equipos de cofmunicaciones, etc. 1n este curso incluimos los principios teéri cos, los fundamentos de su programacién, tua gran cantidad de actividades précticas y proyectos completos para chsamblar. Los mieroconttoladores son los elementos bi- sicos y fundamentales de una nueva revollicién, _ lninterconexién de todo con.todorentuna red mundial. de ae control. Esto"per- CR ee eT TU ier Seco re mitird la comunicacién de hechos y datos entre personas y objetos formando la red del conoci- miento, base de la economia del nuevo milenio Capacitese y forme parte activa de la nue- va economia. Las personas con buenos conocimientos de esta tecnologia, tendrén muchas oportunida- des laborales 0 podrin fabricar sus propios aparatos en forma industrial, lo que puede ser la base para una empresa muy rentable. Cont eSta estructurado el curso El Curso practico sobre Microcontoladores de CEKIT S.A. se publicaré en 40 fasciculos con tres secciones cada uno, y al final, se agrupard en tres to- mos de pasta dura con cada uno de los temas princi- pales, Para su f ciones tiene un color diferente. La distribucién de los tomos es la siguiente: cil identificacién, cada una de las se Tomo 2: Programacién 160 paginas (1 a 160) Tomo 8: Proyectos 320 paginas (1 a 320) Seccion te Teoria componentes. Sc empieza con un repaso sobre el tema de los microprocesadores, los cuales dieron origen a los microcontroladores, y se desarrollan durante las lecciones, los diferentes aspectos técnicos de esta tecnologia. Ws. Capacttamon para vive major En la seccién de teorfa, se estudian los fundamentos tedricos y funcionales de los microcontroladores. Esto se refiere a la estructura o arquitectura interna de los mismos, asi como a la funcién de cada uno de los terminales © pines de los diferentes dispositivos tratados en el curso cuyo conocimiento es ne- cesario para disefiar circuitos con estos Arquit La CPU y la ALU Los Organizacién de la memoria La EPROM de datos Las interrupciones Los puertos de entrada/salida (UO) Los temporizadores (Timers) Las opciones Comparacién/Captura/PWM El puerto serial sincrono SSP, bssp La USART Las referencias de voltaje Los comparadores Los conversores A/D Modos de bajo consumo (sleep y watchdog) Bits de configuracion Programacién en el citcuito (in circuit) El conjunto (ser) de instrucciones Las comunicaciones seriales Otros microcontroladores Parallax (Basic Stamp) Intel Atmel ‘Todo aparato o proyecto con microcontroladores i cuitos, uno 0 varios programas que se deben encri tipo de microcontrolador utilizado. Este curso le pr iar sarios para que adquiera la habilidad de programarlos. Los principales temas tratados son: Neccion te proyectos Indicador binario de 4 bits Alarma para el hogar y el auromévil Reloj digital y calendario Secuenciador de luces programable Cerradura codificada Activacién de aparatos via telefénica ‘Temporizador universal Aviso luminoso con diodes LED Luces ritmicas ‘Convertidor paralelo-serial Punta logica Temporizador miniatura Frecuencimetro Generador de sefiales Progeamador de memorias Adquisicion de datos en 16 bits Minirobot con microcontrolador_ on de + Programacién de un microcontrolador El ciclo de desarrollo de un programa Herramientas de software Programacién en modo inmediato Programacién orientada a registros Control de flujo de un programa Puertos de entrada/salida Subrutinas Interrupciones Programacién en lenguaje estructurado Temporizadores Programacién serial Programando los conversores A/D y D/A. Programacién en lenguaje C ‘Tépicos avanzados de programacién ineaiiwial pat pis or aneie En esta importante seccién del curso, se entrega una amplia informacién con la cual el alumno podré ensamblar una buena cantidad de proyec- tos. Para cada uno de ellos se incluye la teoria de funcionamiento, el diagrama esquematico, la lis- ta de materiales, las instrucciones para el ensam- blaje y el listado del programa. ‘ie eneme Teor hmm A quienes va dirigido el curso El tema de los microcontroladores es de gran utilidad para un grupo muy amplio de perso- nas que requiieran conocer esta tecnologia por su gran cantidad de aplicaciones. a Los principales grupos de usuarios son: Estudiantes y profesionales de Ingenierfa y Tecnologias: + Electréni * Electrica * Mecénica * Sistemas * Bioingenierfa * Mecatrénica * Automatizacién Técnicos en: Electrdnica industrial * Automatizacién * Electrénicos en general + Alumnos de los cursos de CEKIT S.A. * Estudiantes y profesionales en FISICA, para sus necesidades de instrumentacién Autodidactas o aficionados con conocimientos en: * Electrénica Digital * Microprocesadores : eet Certificado mane oot code onal Una vez terminado el curso y aprobada la evaluacién que se publi- card al finalizar la obra, el alumno recibird un Certificado de Apti tud Ocupacional otorgado por CEKIT S.A. y aprobado por las respectivas autoridades educativas. Este certificado ler permitira acceder a puestos calificados de trabajo. Int em ic: || Es muy placentero y satisfactorio para CEKIT S.A. presentar a todos nuestros lectores y amigos, estudiantes, profesores, aficionados, técnicos, profesionales y en general ala comunidad técnica internacional, una nueva obra didéctica en el campo de la electré- nica con el estilo propio y la metodologfa de “Aprender haciendo” que nos ha caracteriza- do por tantos afios. Se trata del Curso prdctico sobre MICROCONTROLADOKES, el cual tiene como objetivo principal dar a conocer y enseftar, de una manera ficil y agradable, esta maravillosa tecnologia. Los microcontroladores, que pueden considerarse como una microcomputadora en un sélo empaque, han permitido un avance sin par en los iltimos afios en el disefio ya fabricacién de todo tipo de aparatos y aplicaciones clectrdnicas. Haciendo un s{mil con el ser humano, podemos decir que un microcontrolador es un pequefio cerebro electrénico formado por muchos transistores interconectados entre si tal como las neu- ronas y que tiene vatias zonas con funciones especializadas como la memoria, uno 0 varios circuitos para recibir informacién de teclados, interruptores y sensores, entre otros, y secciones para activar elementos externos como motores, relés, indicadores sonoros, pantallas, etc.; todo esto coordinado por medio de un programa o conjunto de instrucciones. Nunca antes, en la historia de la electrdnica, un componente habia permitido tanta creatividad y desarrollo de productos de una forma tan ficil, en tan corto tiempo ya costos tan reducidos. Con los microcontroladores es posible disefiar y fabricar casi cualquier aparato que se nos ocurra; el limite est4 dado sélo por la imaginacién y nuestra capacidad de hacerlo. ‘Aunque el tema parece dificil y complejo, realmente no lo es y para demostrar lo contrario, lo iremos explicando paso a paso en un lenguaje simple acompafiado de muchas figuras, diagramas ¢ ilustraciones de tal forma que los lectores lo puedan ir asimilando a su propio ritmo de aprendizaje sin mayores dificultades. Para entender y aplicar esta tecnologia, se requieren conocimientos de Electr6nica Digital, de los siste- mas de numeracién, especialmente del sistema binario y hexadecimal, y nociones bési- cas sobre los microprocesadores. Sin embargo, durante el curso repasaremos algunos de los conceptos fundamentales de estos temas con el fin de que los lectores que no los conozean, puedan comprender mejor cada una de las lecciones. La mayoria de los aparatos electrdnicos modernos incluyen uno o varios micro- controladores y de ahi la importancia y necesidad de este curso en este mundo tecnolé- gico en el cual nos encontramos. Un reloj digital de pulsera lo utiliza para contabilizar el tiempo, mostrarlo en una pequefia pantalla y recibir las érdenes en los botones para ejecutar diferentes funciones, Una videogeabadora lo utiliza para coordinar sus princi- pales funciones como el encendido y el apagado, el cambio de los canales, el avance y retroceso de la cinta, las funciones del control remoto, etc. En un horno microondas el microcontrolador se encarga de recibir las 6rdenes que le damos en el teclado, mostrarlas cn la pantalla y accionar el elemento que produce el calor en los alimentos. ‘curs prictico sobre Merocontoladores AREA: Cede Pero sin restarle importancia a este tipo de aplicaciones, es en otro campo a donde queremos oriencar este curso. Se trata de la utilizacidn de los microcontroladores en siste- mas de control y en el disefio de aparatos aparentemente sencillos pero con una gran cantidad de usos en la vida diaria ya sea en el hogar, en la industria, en la oficina, en el campo o a nivel experimental y sobre todo para ensefiarles a nuestros lectores cémo desa- rrollar su propia aplicacién partiendo de sus necesidades particulares. Para enseftar y explicar mejor esta tecnologia, hemos dividido este curso en varia secciones asi + Una seccién de Teoria en donde se presentan los conceptos bisicos de los microcon- troladores iniciando con su origen basado en los microprocesadores, su estructura 0 arquitectura interna, su funcionamiento eléctrico y I6gico, la operacién de sus blo- ques internos, etc. En fin, toda la informacién necesaria para poder configurar un Circuito con un microcontrolador y entender su funcionamiento. + Una seccidn de Programacién en donde se explicard qué ¢s un programa de micro- controlador, los diferentes lenguajes que se utilizan, las técnicas adecuadas para cla- borar programas eficientes, c6mo se leva al interior del microcontrolador y las prin- cipales herramientas de software y hardware para elaborarlos. Esta es una seccidn de mucha importancia dentro del curso ya que la programacién es donde radica la mayor dificultad de muchas personas para acceder a esta tecnologia y por ello, dedi- caremos un gran esfuerzo didctico para que todos nuestros alumnos puedan escribir sus propios programas de una forma correcta. + Y para completar la estructura del curso, de acuerdo a la metodologia de CEKIT S.A., hay una secccién de Proyectos y actividades practicas en donde se presentan ejemplos compleros con aplicaciones de diferentes tipos de esta seccién también se incluirdn los diagramas de pines y las caracteristicas de los microcontroladores més representativos de las principales marcas o fabricantes y una explicacién de los componentes y circuitos que los acompafian, desde un simple LED, hasta pantallas de cristal liquido (LCD), sensores, conversores A/D, acondi- cionadores de sefal, etc. rocontroladores. En Aunque existen en el mercado una buena cantidad de fabricantes de micro- controladores, cada uno con una gran variedad de modelos, hemos seleccionado ‘como ejemplos para este curso principalmente los de Motorola y Microchip (PIC) por ser los de mayor difusién y aplicacién actualmente; con un menor cubri- miento, los de INTEL, ATMEL, PARALLAX y otros, los cuales esperamos tra- tar en un prdximo curso, Felipe Gonzalez G. Editor General RICIT: cwrs0 13000 s0r Merocontatres INTRODUCCION A LOS MICROCONTROLADORES Un microcontrolador (microcontroller, en inglés) es un circuito integrado que contiene toda la estructura de una mi- crocomputadora, 0 sea, CPU (Unidad Central de Proceso), memoria RAM , memoria ROM, circuitos de entrada- salida (I/O) y otros médulos con apli- caciones especiales. Su nombre nos in- dica sus principales caracteristicas: mi- cto por lo pequefio y controlador por- que se utiliza principalmente para con- trolar otros circuitos 0 dispos tricos, mecénicos, etc ivos eléc- Curso préctic sobre Mcrocontroladres ARCH T: & Latte bE ROS Ole met ots Este maravilloso componente resume, en un solo circuito integrado, més de cuarenta afios de tecnolo- gia electrdnica. Es dificil encontrar en la actualidad tun aparato o una aplicacién que no lo utiice © no pueda utilizarlo para optimizar su operacién. Se ha mencionado y confirmado muchas veces que la electrénica es la tecnologia de los componentes. El desarrollo de cada nuevo dis- positivo de estado sélido trae consigo técnicas de disefio diferentes, por lo general, mds sir En los afios sesenta, para construir un reloj digi- tal, era necesario acoplar un buen ntimero de cit- cegrados légicos. Al mismo tiempo, el diseftador debfa poser conocimientos muy ca- ros sobre cada uno de los elementos, para reali- zar, con éxito, la integracién, cuitos i A partir de 1970, el panorama de la electr6- nica y especialmente el de la electrénica digital, cambié radicalmente cuando aparecié en el mer- cado un nuevo supercomponente: el micropro- cesador. Esto introdujo un concepto novedoso que en la actualidad se conserva y refuerza cada vex més, el de la ldgica programada. Antes de los microprocesadores, los circuitos electrdnicos se disefiaban para una funcién espe- cifica la cual no podfa modificarse sin cambiar fisicamente las co- Figura 1.1. Ejmplo de un circuit con Kica cableada @ eer: curso préctico sobre Mlcrocontroladores nexiones, el ntimero y la cantidad de los diferen- tes elementos que los formaban a lo cual se le llamé La légica cableada, figura 1.1 Con los microprocesadores y ahora con los circuitos légicos programables (FPGA), los mi- crocontroladores y los circuitos de DSP (Proce- samiento Digital de seffales), entre otros, es posi- ble modificar cuantas veces se requiera el progra ‘ma, atin en forma remota por la internet, y el Circuito 0 aparato en el cual estan instalados, tra- bajard de una forma completamente diferente sin modificar fisicamente una sola conexidn. De esta forma, el limite de los disefios solo lo establece la imaginacién de los programadores y la capaci- dad de los dispositivos que lancen al mercado los. fabricantes especializados en estas tecnologias Consolidadas las técnicas digicales de los afios sesenta, se creé entonces la necesidad de profundizar en el estudio y desarrollo de las aplicaciones para los microprocesadores y la programacién en lenguaje de mquina o assembler. Fué la época de oro del 8080, el 8086, cl Z-80, el 6809, el 6502, el 68000 y otros micropro- cesadores, utilizados como circuitos centrales en las aplicaciones de control. En 1980, aproximadamente, los fabri- cantes de circuitos integrados iniciaron la difusién de un nuevo circuito con aplica- ciones para control, medicién e inserumen- tacién, al que llamaron “microcomputa- dor en un slo chip” 0, de manera més exacta y concisa: microcontrolador. Para entender mejor a estructura interna, el fu- cionamiento y los origenes de los micro- controladores, repasaremos primero el tema de los microprocesadores. Los microprocesadores: Desde el punto de vista funcional, un mi- croprocesador¢s un circuito integrado, fi gura 1.2, que incorpora en su interior una uunidad central de proceso (CPU) y todo tun conjunto de clementos ligicos que per- ‘Figura 1.2. Microprocesdor 8085 miten enlazar otros dispositivos como memorias y puertos de entrada o de salida (I/O), formando tun sistema completo para cumplir con tuna aplicacién especifica dentro del mundo real. Para que el sistema pueda realizar su labor debe ejecutar paso a paso un programa que consiste en una secuencia de mimeros binarios o ins- trucciones, almacenadas en uno o més elementos de memoria, generalmente externos al mismo. La aplicacién més _— importante de los microprocesadores y que cambié totalmente la forma de tra- bajar, ha sido la computadora personal © microcomputadora Curso préctico sobre Microcontroladores LG Suitolto) barrett geasy El microprocesador, corazén de las computadoras Una computadora digital es un equipo especiali- zado en el procesamiento de informacién, cuyo principio de funcionamiento es relativamente sencillo, si lo vemos desde el punto de vista de Jos bloques que lo conforman. Cada uno de esos bloques esté formado por varios circuitos inte- grados ficiles de entender, la parte compleja la encontramos cuando estudiamos el interior de dichos circuitos, pero esto en realidad no es de mucho interés para el usuario comin, Una computadora digital se compone de tres bloques fundamentales, figura 2.1: una unidad de entradas y salidas, una CPU y una memoria. Asu ver, la unidad de entradas y salidas se divide en un bloque de entrada y otto de salida, Del mismo modo, la CPU se divide en una unidad aritmético-Iégica (ALU), y una unidad de con- trol yel bloque de memoria en memoria RAM y memoria ROM, obteniéndose seis bloques 0 uni- dades con funciones muy especificas, figura 2.2, cuyas funciones describiremos a continuacién. La unidad de entrada es quien recibe infor- macién del mundo exterior, ya sea de un opera- dor humano o un fenémeno fisico; esta unidad permite Hevar esa informacién hacia la unidad cde memoria para poder procesarla posteriormen- te; dispositivos de entrada son, por ejemplo, los teclados y el ratén. La unidad de salida entrega los resultados del procesamiento al mundo exte- ‘Figura 2.1. Bloques principales de una computacora ogital Unidad de Entrada/Salida 0 CPU et) Unidad eo de Cr Co) Rs Ce de ar Figura 2.2 Estructura general de una computadora oil rior. Esta informacién se lleva desde la unidad central de proceso 0 CPU, hacia circuitos o apa- ratos externos llamados periféricos que se encuen- tran fuera de la computadora, por ejemplo mo- nitores, impresoras o parlantes. La unidad de memoria se encarga de alma- cenar los datos y los programas que operan sobre esos datos y es una de las mas importantes de una computadora. Se distinguen dos sistemas diferentes de memoria: la de almacenamiento primario y la de almacenamiento secundario. La ‘memoria de almacenamiento primario se refiere alos circuitos que guardan los programas que se van a ejecutar y los datos que se necesitan duran- te la ejecucién de estos programas, y la memoria de almacenamiento secundario, se utiliza para almacenar grandes cantidades de datos que no se requieran con frecuencia para la operacién de la computadora. Sistemas de este tipo son los dis- os duros y los discos de 3.5”. Dentro de la memoria de almacenamiento secundario se distinguen tres categorfas: la ROM (Read Only Memory) 0 memoria de solo lectura, donde se almacenan cierto tipo de programas como el del sistema de arranque de una compu- tadora (BIOS); la RAM (Random Access Memory) ‘o memoria de lectura y escritura, donde se alma- > Leber e, conviction cenan los datos que los programas van generan- doyla cache que es una memoria RAM con tiem- po de acceso muy rapido donde se mantienen Jos datos mas utilizados durante la ejecucién de un programa Launidad central de proceso (CPU: Central Processing Unit) retine la unidad de control y la unidad aritmético-Iégica en un solo bloque. Esta tiltima también se conoce como ALU (Arithme- tic Logic Unit). En la practica, la unidad central ‘© CPU se encuentra en forma de un circuito in- tegrado llamado microprocesador. Dentro de esta CPU, la unidad de control se encarga de la interpretacién y ejecucién de las instrucciones del programa. También controla todos los componentes de una computadora por medio de lineas de conexién llamadas buses. La ALU se encarga de realizar las operaciones logi- cas y aritméticas. Las principales funciones arit- méticas realizadas en la ALU incluyen la AND, la OR, la EXOR y la comparacién. Como he- mos visto, el microprocesador es quien lleva a cabo las principales funciones de un sistema de cémputo, y quien integra a los demés compo- nentes y ejecuta las instrucciones. Es por eso el principal componente de una computadora. Funcionamiento del microprocesador Desde un punto de vista conceptual, un micro- procesador ideal es un dispositivo digital que acepta o lee datos aplicados a un cierto niimero imiepcssatr a 5 isto ren oe na Tomas oats yur ova Figura 2.3 | mlcroprocesador ideal Alc) de Iineas de entrada (N); los procesa de acuerdo a las inserucciones secuenciales de un programa almacenado en su memoria, y suministra o eseri- be los resultados del proceso en un cierto niime- ro de lineas de salida (M), figura 2.3 Los datos de entrada pueden provenir de inte- ruptores, sensores, convertidores A/D, teclados, etc. Los datos de salida pueden estar dirigidos a actua- dores, indicadores o displays, pantallas, convertido- res D/A, alarmas, impresoras, ec. El programa al- macenado determina como deben ser procesados los datos de entrada y, en consecuencia, que infor- macién debe enviarse alas lineas de salida. El soporte fisico de las instrucciones del pro- grama es la memoria, la cual almacena los datos para que sean procesados. En un momento dado, los niveles légicos (unos y ceros) de las lineas de salida de un microprocesador, dependen no sola- mente del programa en s{ sino también de la his- toria de las sefiales de entrada hasta ese momento, Mientras queen un microprocesador ideal no exis- ten restricciones respecto al mimero de entradas y salidas, los microprocesadores reales sélo pueden acomodar un niimero limitado de terminales 0 pines para estas funciones. Como veremos mas adelante, pata simplificar el ntimero de pines, la mayoria de microprocesadores utlizan las mismas lineas para la entrada y salida de datos. De otro lado, mientras que un microprocesa- dor ideal tiene, teéricamente, una memoria inter- na ilimitada, los microprocesadores reales solo dis- ponen de una cantidad limitada para almacenar Repistro de ‘Bits Registro de 16 bts Figura 2.4 Registros de un microprocesador curso prio sotre Merocontolaioes AGREE: ® OS microprocesadores datos ¢ instrucciones. Por esta razén, un micro procesador debe tener la posibilidad de comuni- carse con una memoria externa. Para lograrlo, ne- cesita disponer también de un conjunto de lineas de seleccién o direccionamiento adicionales. Finalmente, para sincronizar su operacién con la de los componentes externos conectados al mismo y tener un control global de los buses de datos y direcciones, un microprocesador ne- cesita disponer también de un conjunto de It neas de control. Por tanto, un microprocesador pres me mm A ast 55 rot78 us| x our Dee requiere de un bus de datos, un bus de direccio- nes y un bus de control para comunicarse con los demas componentes. Naturalmente, el microprocesador ideal (un dispositive con sélo entradas y salidas y un programa almacenado en él) no existe. Sin embargo, la tendencia de los nuevos disefios es incluir cada vez mds funciones en una mis- ‘ma pastilla, incluyendo unidades de memoria ¢ interfaces entrada/salida como en el caso de los microcontroladores. sp sp coe Cae oT aba ese oot mn ‘Figura 2.5 Arquitactura interna de un microprocesador 8085 de Intel @ Gexrr: (oreo prictca sobre Micrecontroladerea ‘Organizacién interna de un microprocesador La organizacién interna de un microprocesador, es decir, su arquitectura, varia notablemente de un dispositive a otro. Por esta raz6n, es dificil definir tun modelo de microprocesador que represente to- das las alternativas posibles puesto que cada uno tiene una ldgica de funcionamiento propia. La ar- quitectura, y especialmente el tipo, niimero y orga- nizacién de los registros internos, es una considera- cin importante a la hora de elegir un microproce- sador para una aplicacién determinada. Un registro es una posicién de memoria co- nectada a la CPU donde se pueden retener cifras binarias. Esté formado por elementos légicos (compuertas, flip-flops, et.) que, al ser tomados cen conjunto, pueden almacenar ntimeros binarios de 4,8, 16 6 més bits, figura 2.4, Se utilizan esen- Gialmente para almacenamiento temporal, en el que el contenido cambia continuamente. Esto no implica que se deba conocer con de- ‘masiado detalle, emo funciona internamente un microprocesador para poder utilizarlo. Existen partes y funciones que normalmente deben estar presentes: un reloj, una ALU, varios registros, un contador de programa, etc, En la figura 2.5 se muestra un ejemplo de la arquitectura interna de un microprocesador simple, el 8085 de Intel. Por ejemplo, el reloj o circuito de oscilacién puede estar 0 no incorporado en el microproce- sador, pero es absolutamente necesario puesto que tiene la misién de sincronizar todas las operacio- nes de debe realizar el dispositivo. Del mismo modo, para ejecutar un programa, un micropro- cesador debe tener en su interior registros que le permitan almacenar informacién, realizar lectu- ras, modificaciones a los datos, etc. Operacién basica de un microprocesador Analizando un sistema de cémputo, nos da- mos cuenta que el microprocesador 0 CPU es la parte del sistema encargada de leer, inter- pretar y ejecutar las instrucciones del progra- ma almacenado en la memoria. Desde un punto de vista conceptual, la ac- cidn de leer c interpretar las instrucciones la rea- liza una parte del microprocesador denominada unidad de instruccién y su ejecucién corre a car- {g0 de otro circuito especializado dentro del mis- mo denominado unidad de ejecucién, figura 2.6 Unidad central de procesamiento (CPU) 0 ‘microprocesador od Caen pro Coot cy ed Figura 2.8: Unidades de instuccion yejecuctn Launidad de ejecucién, a su vee, contiene una unidad aritmético-logica o ALU y un conjunto de registros auniliares. La ALU se encarga de realizar tuna gran variedad de operaciones aritméticas y Is- gicas, y los registros de almacenar temporalmente informacién, Las distintas funciones realizadas por el microprocesador quedan especificadas por su conjunto de instrucciones. Curso prcto sotre Merocontoadoes CARCI @ Los microprocesador La unidad de instruecién lleva la cuenta de las posiciones © direcciones de memoria donde se encuentran las nstrucciones que el microprocesador necesita en cada instante. Normalmen- te, las instrucciones se leen y ejecuran cen el mismo orden en que fueron alma- cenadas en la memoria. Sin embargo, la presencia de instrucciones de control de programa puede altera la secuencia de ejecucién de estas instrucciones. Para Ilevar Ia cuenta de las di- recciones de las instrucciones, la unidad de instruccién incorpora un registro especial llamado contador de programa 0 PC (Program Coun- ter). Cada ver que se lee una ins- truccién, el contador de programa se incrementa automdticamente para suministrar la direccién de la posicién de memoria donde se en- cuentra la siguiente instruccién 0 dato del programa. Cada ver que un microprocesador recibe una instruccién, a almacena en un registro interno del mismo llamado registro de ins- trucciones con el fin de proceder a su deco- dificacidn o interpretacién y buscar en la memoria ROM el conjunto de microinstruc- ciones necesarios para su ejecucién. Esta fun- cién la realiza un circuito denominado de- codificador de instrucciones. Ademés del contador de programa y el registro de instrucciones, un microprocesa- dor contiene usualmente otros registros para facilitar el acceso a las instrucciones y a los datos. Algunos de estos registros son progra- mables en el sentido de que su contenido puede ser alterado por software (instruccio- nes) mientras que otros son inaccesibles des- de el punto de vista de programacién y su contenido sélo lo puede determinar y con- sultar el microprocesador. Registro de status ‘condicion de estado} ‘Acumutador (Contador del programa temo td Registr intermedi Bus de decriones Bus de control Bus dl sistema hacia a memoria principal ¥ dispostves de E'S Figura 2.7. Arqitectura de ui microprocesadr genérico La mayorfa de los microprocesadores, por ejemplo, incluyen un registro especial llamado acumulador (Registro A) que es utilizado por muchas instrucciones como fuente o destino de datos. También es muy comiin la presencia de tun registro de estado que suministra informa- cidn relativa a la ejecucién de ciertas instruc- ciones como sobreflujo, paridad, generacién de acarteo, resultado negativo 0 cero, etc Muchos microprocesadores poseen también tun conjunto de registros de propésito general que pueden ser utilizados para almacenar direccio- nes de memoria, datos, resultados intermedios y otros propésitos. El nimero y tipos de registros que posee un microprocesador, es una parte muy importante de su arquitectura y programacisn, En la figura 2.7 se muestra un modelo ge- nético de microprocesador que ilustea los con- cepts anteriores. & ICI: C100 pricic sore Miroconroladeres Estructura de buses de un microprocesador En la figura 2.8 se muestra la estructura de buses generalizada de un microprocesador. Externamente, el dispositivo cuenta con un bus de datos, un bus de direcciones y un bus de control. En las siguientes secciones decribiremos la funcién y las caracteristicas de cada uno, Ademds de estos tres buses principales, tun microprocesador debe disponer también de un bus de alimentacién, el cual hace llegar la corriente de la fuente a sus distintos componentes internes. : Bs sas el at 32 ws ven = 4 Figura 2.8 Estructura de buses goneralizeda Las lineas de los buses de un microprocesador transportan voltajes que representan niimeros bina- rios (1's y 09). El microprocesador, los puertos de centrada/salia y la memoria, responden tinicamente a «<0s mtimeros binarios codificados electnicamente. El bus de datos. Lineas bidireccionales EI bus de datos lleva datos ¢ instrucciones hacia y desde el microprocesador. Las instrucciones pro- Data OUT Data sid @ 0) alg) ceden siempre de la memoria mientras que los datos que procesa u obtiene el programa de ins- trucciones, puede provenir de o ir hacia la memo- tia 0 los médulos de entrada/salida, Generalmente, el ntimero de lineas de en- trada es igual al nvimero de lineas de salida. Este niimero define la longitud de la palabra de da- tos del microprocesador. Son comunes longitu- des de palabra de 4, 8, 16, 32 y 64 bits. En la figura 2.4, por ejemplo, se muestra un micto- procesador de 8 bits. En este caso, tanto el bus de datos de entrada como el bus de datos de salida con de un byte, es decir de ocho (8) bits. El imero total de pines asignado en el cicuito integrado del bus de datos puede reductse prictica- mente en un 50% si se utilizan los mismos puntos de conexién tanto para los datos de entrada como ppara los datos de salida, pero no para ambos simulté- rneamente. El bus de datos ai constituido es bidiree- cional en el sentido de que a informacién puede circu- Jar entrando o saliendo del microprocesador. La for- ‘made representarun busde datos bidireccional para un :microprocesador de N bits se ilusa en la figura 2.9 Unbusbidireccional puede construirse con com- ppuertassr-tave para controlar la direccién del flujo de informacién. La figura 2.9 (a) representa un micro- procesador de cuatro bits con un bus de datos bidirec- ional, En la figura 2.9 (b) se muestra la configura- cién de una linea de bus bidireccional. Las Kineas de seleccién S1 y $0 proceden del bus de control. BOUT BoB, ‘pan BOB: Linea de bus direcional de datos BOUT: Control de salida de datos ‘BIN: Control de entrada de datos ovo, — $1, 80: Conta de bus. HOLDA: Contral de garantia de bus (lta impedancia) Figura 2.9 (2) Meroprocesador de 4 bits con bus de datos bidrecconal (0) Linea de bus bidreccional. aerate totes Aigice: > spit Cole onl La transferencia de datos de entrada o salida desde o hacia el bus de datos se realiza, respecti- vamente, con $1S0 = 10 y $1S0= 01. La lineade itarse con $180 = 00 para im- twansferencia de informacién en- tre el bus de datos y el microprocesador. Las ineas de seleccién pueden utilizarse para informar a los médulos externos que comparen el bus de datos el estado del bus bidireccional en un momento dado, Este es el propésito de las lineas marcadas como DBOUT (bus de datos en el modo de salida), DBIN (bus de datos en el modo de entrada) y HOLDA (bus de daros en estado de alta impedancia) en la figura 2.9 (b) La informacién contenida en el bus de datos puede representarse numéricamente de varias for- ‘mas: binaria, octal y hexadecimal, principalmente. Considérese, por ejemplo, un microprocesador de 8 bits con el bye 10111011 en las lineas D7 a DO del bus de datos, siendo D7 el bie mds significativo LSB y D0 el bit menos significativo o LSB. Esta palabra de datos representada como un niimero binatio es simplemente 10111011(B) 6 10111011(2), representada como nimero octal 5 273Q 6 2738 y como nimero hexadecimal (la més usada) es BBH 6 BBI6. La forma de conver- tir mimeros binarios en ocrales o hexadecimales y viceveresa se explicard en detalle en la seccién de programacién, Los sufijos B,Qy H, y los subindi- ces 2, 8y 16 enfatizan el sistema numérico (bina- rio, octal y hexadecimal) de cada presentacién, A pesar de que el sistema hexadecimal pro- porciona una forma muy compacta y concisa de expresar el contenido de un bus de datos, no podemos olvidarnos completamente de la re- presentacién binaria, En una aplicacién real, esta liltima nos permite identificar ficilmente, por ejemplo, cual interruptor ha de ser abierto 0 cerrado en un momento dado para obtener una condicién de entrada especifica 0 cual lampara ha de ser energizada para obtener un efecto de salida determinado. El bus de direcciones. Espacio de memoria El bus de direcciones contiene la informacién digital que envia el microprocesador a la me- motia y demds elementos direccionables del sis- tema para seleccionar una posicién de memo- ria, una unidad de entrada/salida 0 un registro particular de la misma. El mémero de lineas dis- ponible en el bus de direcciones (n) determina el tamafio maximo de memoria que puede ser acomodado en el sistema (2°). Asi, por ejemplo, un microprocesador con tun bus de datos de 8 bits y un bus de direccio- nes de 16 bits (tipico) tal como el Z-80 puede manejar directamente una memoria de 2!° 65536 (64K) posiciones, cada una contenien- do un byte (palabra de 8 bits). Naturalmente, una ver scleccionada una posicién de memoria, el microprocesador debe estar en capacidad tanto de almacenar informa- cidn en esa localizacién (operacién de escritu- ra) como de extraerla (operacién de lectura), La cantidad de memoria utilizada en un sistema con microprocesador depende de la aplicacién specifica y es a menudo inferior a la maxima que puede manejar el bus de di- recciones. El conjunto completo de localiza- ciones de memoria a las que puede tener ac- ces0 un microprocesador, se denomina espa- cio de memoria, Asi, por ejemplo, el espacio de memoria de un microprocesador de 8 bits con un bus de direcciones de 16 bits (por ejemplo el 8080) es simplemente 2" = 64K. En el caso de un microprocesador de 8 bits con un bus de direcciones de 16 bits, el espacio de memoria puede ser visualizado gré- ficamente como un mapa de 65536 direccio- nes de memoria, cada una conteniendo un byte, la mis baja de las cuales es 0000H y la mis alta FFFFH, figura 2.10 ®& icra a arena! aa 64k 002 z | Ey Note que la direccién de memoria seincremen- taen 1000H cada 4K (=4096) ditecciones de espa- cio de memoria. Observe también que cada 1K (=1024) posiciones de memoria, la direccién de me- moria se incrementa en 400H. La memoria puede dividirse también en péginas de memoria, cada una contiene 256 palabras y cubte 100H direcciones de ‘memoria, Hay, por tanto, 4 paginas en 1K de me- ‘moria, Las direcciones en la pagina de mis bajo or~ den van desde 0000H hasta 0OFFH, en la siguiente desde 0100H hasta 01FFH, y asf sucesivamente, El bus de control El bus de control contiene la in- formacién que enviael micropro- cesador a los elementos del siste- mao bien larecibe de estos con el propésito desincronizarla opera- én de los circuitos extemos. EL rimero de lineas del bus de con- trol es variable y depende del mi- ‘croprocesador particular uiizado. Organizacién de un sistema basado en microprocesador En [a figura 2.11 se muestra la ‘estructura organizativa de un sis- Figura 2.10. Espacio de memoria Teoria tema tipico basado en mi- croprocesador. Note que consta de cuatro elementos principales: una memoria, un microprocesador, un puerto de entrada y un puerto de salida, El microprocesador ‘est4 conectado a todos los otros componentes a tra- vés del Bus de datos. Las sefiales del Bus de control, conjuntamente con las del Bus de direcciones, deter- minan que elementos se comunican con el micro- procesadoren un momen- to dado, Estos tres buses configuran el bus del sis tema y el gobierno del mismo es responsabilidad del mictoprocesador. 0100: 0000! La secuencia de instrucciones que cons- tituyen el programa que debe ejecutar el mi- croprocesador estan almacenadas en un drea de la memoria, En el momento de iniciar el sistema, el microprocesador sitia en el bus de direcciones la direccidn de la posicién de memoria donde se encuentra la primera ins- truccién. Como resultado, la memoria entrega y Desde ispsitivos ‘de entrada Figura 2.11. Diagrama de bloques de un sistema basado en un microprocesadar cur prion srs wrote AGRE 7: @> mee Los microprocesadores esta informacién en el bus de datos. Después de interpretar y ejecutar la primera instruc- cién, el microprocesador busca la siguiente instruccidn, la ejecuta y asi sucesivamente, La generacién de la serie de instrucciones nece- sarias para que el microprocesador realice una tarea determinada, es lo que se denomina su programacién, Secuencia de operacién de un sistema basado en un microprocesador Hasta aqui hemos visto la arquitectura genéri- ca de un mictoprocesador y de un sistema ba- sado en uno de estos dispositivos; ahora anali- zaremos con mas detalle los pasos que sigue un sistema de esta naturaleza para ejecutar las instrucciones contenidas en un programa y aprenderemos como trabajan en conjunto cada uno de los bloques del sistema para desarrollar estas tareas. Un microprocesador es un diminuto con- junto de miles o millones de clementos 16 cos ¢ interconexiones disefiado para respon- der a las instrucciones de un programa, el cual le indica lo que debe hacer en cada instante, Sin un programa que le de vida, un micro- procesador y todo el hardware conectado a su alrededor, serfa una masa inerte de compo- nentes electrénicos sin un objetivo especifi- co. De hecho, la funcién primaria de un mi- croprocesador es ejecutar programas. Nom apoganacakulaun ion yanscem ere (DEA en psn se moma Pl Las instrucciones que constituyen un pro- grama se almacenan en la memoria del ma como patrones de unos y ceros, organiza- dos en grupos de 8, 16, 32 y més bits, depen- diendo de la longitud de la palabra de datos del microprocesador. ste PALABRA: Es un grupo de bits que se tratan como una sola unidad. El més comtin es el byte, el cual estd formado por ocho (8) bits. Cuando se trabaja con un microprocesador, s importante comprender su conjunto de ins- trucciones y ser capaz de utilizarlas en la elabo- racién de programas; se debe entender la forma como el mictoprocesador las ejecuta y adquirir la habilidad para emplealas eficientemente en Ja manipulacién de datos. Para ejecutar las operaciones indicadas por una instruccién, el microprocesador debe empezar por direccionar 0 encontrar la posi- cién de memoria donde se encuentra la ins- truccién, leerla y decodificarla o interpretar- la por medio de sus circuitos internos. Los pasos anteriores constituyen lo que se deno- mina ciclo de instruccién. Durante su opera cidn normal, un microprocesador no hace otra cosa que ejecutar repetidamente ciclos de instruccién. ‘Figura 2.12 Ejemplo de un programa en lenguaje de maquina @ Serr: sur tr ancients Figura 2.13 Ejomplo de un programa objeto Para ejecutar un programa, un micropro- cesador debe tenerlo almacenado en forma bi- naria (patrones de 1 y 0) en posiciones adya- centes de la memoria de programa del sistema. Esta forma binaria del programa se denomina Lenguaje de maquina y es el Ginico lenguaje que entiende el microprocesador. En la figura 2.12 se muestra un ejemplo de un programa en len- guaje de maquina para un microprocesador 8085, Para evitar la confusién que, desde el punto de vista del programador, puede gene- rar una larga lista de unos y ceros, estos cédi- {gos se pueden representar en forma hexadeci- mal, constituyendo lo que se denomina un pro- _grama o cédigo objeto. En otras palabras, un c6- digo objeto es, simplemente, una representa- cién abreviada de un programa en lenguaje de maquina, figura 2.13. Por ejemplo, 101111 01 se representa como BD, 0000 0001 como 01, 1110 0110 como E6, 0000 111 1como OF, etc. No todos los eddigos de un programa ob- jeto o en lenguaje de méquina, corresponden ainstrucciones ejecutables. Muchos de ellos co- rresponden a datos y direcciones que son uti- lizados por el programa para propésitos parti- culares. Los cédigos correspondientes a instruc- ciones ejecutables se denominan cominmen- te cédigos operacionales (opcodes). Por tanto, en un sistema de 8 its, los programas en len- guaje de maquina se reducen a unas cuantas secuencias de grupos de 8 bits (I byte) situados en algin lugar de la memoria. Estas secuencias representan a su vez una mezcla de instrucciones para el microprocesa- ria dor (opcodes) y datos sobre los cuales ha de ope- rar el mismo. Cada eddigo de operacién le in- dica, directa o indirectamente al microproce- sador, la direccién de memoria donde se en- cuentra almacenada la siguiente instruccién ejecutable, Al recibir un cédigo de operacién, los circuitos internos del microprocesador lo descifran. La informacién obtenida permite al ispositivo identificar la naturaleza de los bytes que siguen al opcode. El conjunto de cédigos de operacién (opco- des) alos cuales puede responder un microproce- sador, constituye su conjunto de instrucciones (Instruction Set) .Cada microprocesador tiene su propio conjunto de instrucciones, cada una re- presentada por un opcode diferente. El nimero maximo de cédigos de operacién que puede des- cifrar un microprocesador es igual a 2%, siendo N el tamafo de la palabra de datos del mismo. Las instrucciones de un microprocesador pueden agruparse en tres grandes categorias se- giin su funcién: la primera son las instruccio- nes de transferencia de datos, las cuales mue- ven informacién sin alterar su contenido de una parte a otra del sistema; la segunda categoria es la de procesamiento de datos; estas instruccio- nes transforman la informacién desde el punto de vista légico 0 aritmético; y la tercer catego- son las instrucciones de control de progra- ma, ellas determinan la secuencia de ejecucién de las instrucciones. En la figura 2.14, observamos un diagra- ma simplificado de la arquitectura de un siste- ma basado en un microprocesador, en el cual basaremos nuestro an dlisis de la interaccién en- tre cada una de las partes del sistema y la se- cucneia que presenta. En este diagrama se pueden notar cuatro bloques Fundamentales: la memoria, la unidad de control, la unidad operativa y cl médulo de entradas y salidas. Todos ellos conectados a tra- vés de los buses de direcciones, datos y control. ain racis Se minsmeumaen QI @ Us microprocesadores ‘Bus de datos, Unidad de control e Memoria instruciones Geeta ate ete oe) astccone Came: Decoifcador Fae oe ee ONCIHT Bus de dreciones or Caen ‘Bus de datos ¢ instrugho Modulos y sala cy Pertrcas del am ‘mundo exterior Figura 2.14 Diagrama de bloques simpicado de un sistema basado en un microprocesador ® AGRCIT: C100 tere sore meroconnotaeres El bloque 1 es la memoria; en clla se al- macenan una serie de cantidades codificadas en ocho 8 bits, Para entender la operacién de una memoria, puede hacerse una analogfa con un casillero de correos, donde existen muchas casillas para diferentes usuarios, cada una con un niimero o direccién que la identifica y con la propiedad de almacenar cualquier clase de informacién. Pues bien, una memoria posee un conjun to de posiciones cada una con su propia direc- cidn, y en cada una de dichas posiciones puede existir cualquier dato de ocho bits. La posicién que se va a acceder es indi- cada por el bus de direcciones al Decodifica- dor de Direcciones (D1), el cual es un dispo- sitivo de » entradas y 2" salidas. Dependien- do de la entrada binaria que lea, habilita la lectura de una direccién determinada por medio de la activacién de la linea correspon- diente, figura 2.15. Los 8 bits de la posicién accedida salen por el bus de datos hasta el Registro de Datos (RD), si se efectiia una ope- racién de lectura. Cuando se trata de una operacén de escritu- ra, el contenido digital de las 8 Iineas del bus de datos se carga en el Registro de Datos y, desde él, en las 8 celdas de la posicién direccionada. El pro- ceso de direccionar una posicién y leer 0 grabar tun dato se denomina ciclo de memoria. Ps ‘= | tence (ieee |] —> area % 16 pascones : a : ramen Figura 2.15 Sein el dato introduc por el bus de arecciones, se habia la comunicacién con una determinada posicién de ‘memoria RECUERDE QUE La memoria principal de un sistema basado en un microprocesador se construye con memorias de tipo clectrénico, que se clasfican en dos grandes grupos: Memorias ROM (Read Only Memory). Son me- ‘morias que una vez grabadas, permanecen con di- cha informacién permanentemente y slo pueden serlefdas. Son memorias de “s6lo lectura” y se uti- lizan para guardar los programas 0 datos fijos. jemorias RAM (Random Access Memory). El contenido de sus posiciones puede ser leido y es crito. Al igual que las memorias ROM, son de ac- ‘eso aleatorio, es decir, que para acceder a una po- sicién determinada no hay que pasar por las ante- riores, como sucede en las cintas y discos magné- ‘ticos. Son las més répidas y su tiempo de acceso se imide en nanosegundos. \ El principal inconveniente de las memorias tipo RAM es que son volatiles, o sea, al cortarse cel suministro de energia eléctrica, cuando se des- ‘conecta el sistema, pierden la informacién que contenian. En un sistema con microprocesador, ‘se utilizan este tipo de memorias para almacenar cl resultado de las operaciones y los datos de las. ‘variables que se van creando en el programa. El bloque 2 es la unidad de control cuya funcién primordial es la de interpretar y eje- cutar las instrucciones. El cédigo binario de la operacién que se va a ejecutar, se deposita ini- cialmente en el Registro de Instrucciones (RI) y luego se traslada al Decodificador de Instruc- ciones (DD), cuya mision es seleccionar en una memoria ROM un conjunto de posiciones que corresponden al cédigo recibido y en las que se encuentran los cédigos de las operaciones clementales (0 microinstrucciones) que compo- nen las diferentes etapas en las que se divide la ejecucién de la instruccién decodificada. Las microinstruec cuenciador (S), que es el -s van pasando al Se- cuito Iégico de con- curs pct sobre Mizeconvtadres CAQICUT.: ® Los microprocesadores i deca Pe ia de cane Tony Figura 2.16. Movimients de Informacién de fos contends de las unidades que participan en la fase de bisqueda de una instrucion trol y tiempos el cual gobierna a todos los ele- ‘mentos del sistema y Ileva a cabo la ejecucién secuencial de las microinstrucciones. La fun- cién del Contador de Programa (PC) es en- viar por el bus de direcciones la posicién de la memoria donde se encuentra la siguiente ins- truccién que se va a ejecutar. Normalmente, este contador se incrementa en una unidad en cuanto la memoria acepta la direccién de la instruccién anterior. El bloque 3 cs la unidad operativa; alli se cjecutan las operaciones aritméticas, légicas, de desplazamiento, de roracién, de incremento, etc. Uno de los operandos que interviene en la operacién que va a efectuar la ALU (Unidad Idgico-aritmética), procede de un registro de 8 bits llamado Acumulador. El otro operando llega desde cualquier parte del sistema y se car- Patrica del <> ‘mundo exterior gao almacena en un registro auxiliar, Un re- giscro especial, denominado Registro de Esta- do, contiene una serie de bits que actuian como sefializadores de alguna caracteristica especi que se haya producido en la tiltima operacién efectuada por la ALU. Por ejemplo, un sefali- zador denominado Z. (cero), pasa a valer uno (A) si el resultado de la operacién que ha he- cho la ALU ha sido cero (0). El bloque 4 ¢s el de entradas y salidas y se cencarga de suministrar al sistema fos datos pro- cedentes del exterior, as{ como de llevar los re- sultados a los periféricos del mundo real. Secuencia de operacién de una instruccion En un microprocesador, el principio de eje- cucién de cualquier instruccién tiene carac- Bus de crectiones Figura 2.17 El contenido del Contador de Program (PC) pasa al Registro de Direccones (RO) @® RHEIT: C120 ict str Mexocontcedres Bus do di Bus de datos e instruc Peritrics del << ‘mundo exterior aos irecciones Unidad operatva ‘Figura 2.18 El contenido dela posicén dela memoria se deposita en el Registro de instruccién teristicas similares. En todas ellas hay dos tiempos fundamentales Hamados busqueda (fetch) y ejecucién (execute). El diagrama de bloques de un sistema con microprocesador permite un anilisis répido de la forma en que se ejecuta una instruccién cualquiera; por ejemplo, la correspondiente a la suma de dos operandos. El contador de programa empieza conte- niendo la diteccién de la memoria principal donde esta almacenado el cédigo binario de la instruccién de suma. Luego ese contenido pasa a través del bus de direcciones hasta la memoria principal, donde se decodifica y selecciona la posicién que contiene el cédigo binario de la operacién, Dicho cédigo de “maquina” sale de la memoria por el bus de datos hasta el registro de instrucciones dela Unidad de Control, don- de se deposita. Toda esa fase de localizacién del cédigo de la instruccién mencionada, recibe el nombre de fase de buisqueda y es la misma para cualquier instruc: El tiempo de ejecucién empieza por un sub- tiempo de decodificacién de la instruccién y pro- curso} sigue con la parte de la ejecucién propiamente dicha que puede tener varios subtiempos, depen- diendo del tipo de instruccién, Fase de busqueda Ese comienzo de una nueva instruccién, el Contador de Programa (PO deposita en el bus de direcciones la direccién de la posicién de la memoria principal don- de se encuentra el cédigo de la instruccidn que se va jecutar. Dicho oédigo sale de la memoria principal porel busde datos hasta la Unidad de Control, donde se graba en el Registro de Inserucciones, figura 2.16. Como la CPU no sabe que tipo de ins- truccidn va a ejecutar, los tiempos de bisque- da son exactamente iguales. El desarrollo de esta fase es la siguiente: 1. El contenido del Contador de Programa (PC), a través del bus interno de la unidad de con- trol, aparece en el registro de direcciones de me- moria, figura 2.17. 2. El contenido de la posicién de memoria aparece en el bus de datos. Esta informacién se deposita en un registro de instruccién (RI), figura 2.18, rico ste Mercontlecores GAC ed ey Sf ecombl alos Figura 2.19. Comportamiento de la unidad de contro durante la fase de ejecucién ‘Almismo tiempo, el Contador de Programa (PC) se incrementa, puesto que él debe siempre sefia- lar la direccién dela siguiente instruccidn que se va a ejecutar, para cuando se necesite. De esta forma se ha completado la operacién de bisgue- dea de una nueva instruccién, Decodificacién de una instruccién Es la primera parte del tiempo de ejecucién y es también exactamente igual para todas las instrucciones, puesto que aiin no se sabe que operacién hay que efectuar. De momento, la parte de la instruccién llama- da cédigo de operacién (opcode), se transfiere al Decodificador de Instrucciones (DI) y aqui empieza la parte diferente de la instruccién. rel Decodificador de Instrucciones el cédigo de la instruccién en curso, se encarga de seleccionar en la memoria de microinstruc~ ciones aquellas que corresponden a dicho cédi- go. La llegada de las microinstrucciones al Se~ cuenciador, origina una serie de sefales de con- trol que regulan la cjecucién de las diferentes eta- pas en las que se descompone la instruccién. Enel caso de una suma, uno de os sumandos ha de estar contenido previamente en el Actomu- Jador, mientras que cl otro llegaré del registro auxi- liat, eneralmente, desde la memoria de datos, cuya direccién correspondiente vendré acompafiando al cédigo de la operaci6n en la instruccién. La ALU efectuaré la suma y el resultado se de- tard en el Acumulador, al mismo tiempo que los bits sefualizadores del Registro de Estado, tomaran el valor correspondiente en funcién del resultado, Ejecucién de una instruccién En resumen: completada la fase de biisqueda, el cédigo de maquina del Registro de Instrucciones llega al Decodificador de Instrucciones, que se encarga de localizar las posiciones de la memoria de microinstrucciones que correspondan. Dichas microinstrucciones van introduciéndose al se- cuenciador a medida que se realiza el proceso. El secuenciador, con cada microinstruccién, envia tuna serie de sefiales de control a los elementos del sistema que deben actuar en cada momento. Ejecutadas todas las microinstrucciones que com- ponen la instruccién, el Contador de Programa se incrementa en una unidad y el sistema pasa a Ja ejecucidn de la siguiente instruccién del pro- grama, figura 2.19. Hay varios tipos de instrucciones bésicas que pueden agruparse de acuerdo con diferen- tes criterios, tales como funcionalidad, nime- 10 de ciclos de memoria utilizados, numero de palabras que utiliza, etc. Dependiendo de las caracteristicas de la computadora y de su mi- croprocesador, los diferentes tipos de inscruc- ciones serén de una, dos o més palabras y ne- cesitarén uno 0 més ciclos de memoria para llegar a obtenerse enteramente en la unidad de control, En funcién del nimero de palabras y del tipo de instruccién, la ejecucién tiene ca- racteristicas diferentes. Estos pardmetros de- terminan, por ejemplo, el ntimero de veces que el sistema debe acceder a la memoria para leer toda la instruccién. eur: Curso practico sobre Microcontroladores Puertos de entrada y de salida El concepto de entrada/salida abarca toda trans- ferencia 0 intercambio de informacién (datos) ‘entre un microprocesador (CPU) y un disposi- tivo externo 0 periférico especifico. Cuando los datos fluyen hacia el microprocesador, se tiene el caso de una operacién de entrada y cuando Jo hacen en direccién al mundo externo, se tie- ne el caso de una operacién de salida. Un paso importante en el disefio de cual- quier sistema basado en microprocesadores es seleccionar los puertos de entrada/salida o cir- cuitos de interfaz cuyo costo y rendimiento sean Jos més adecuados para una aplicacién dada. La complejidad de un puerto I/O puede variar des- de un sencillo flip-flop hasta un circuito inte- grado altamente especializado; por ejemplo, un controlador para un tubo de rayos catédicos 0 un display grafico tipo LCD. En general, las fanciones que debe r puerto o dispositivo de interfaz. de entrada/salida se pueden resumir en los siguientes términos: + Identificar direcciones con el fin de esta- blecer la conexién con los buses de datos y de control del sistema cuando se seleccio- na un dispositivo periférico de entrada/sa- lida especifico. * Interpretar érdenes, Generalmente, las érdenes enviadas por el microprocesador al puerto 1/0 se reducen a sefiales de lecrura y escritura. Es- tas seiales pueden venir ya decodificadas o ne- cesitar una decodificacién previa. Adaprar fisicamente el sistema a los re- quisitos del periférico. Esto incluye la izacién de manejadores (drivers) de lineas de transmisién, eliminadores de ruido, opoacopladores, etc Controlar los tiempos para la transferen- cia de informacin con el fin de garanti- zar que dl flujo de datos entre el micro- procesador y el periférico se haga de una ‘manera ordenada y eficiente. Un puerto o interfaz de entrada/salida puede construirse utilizando componentes normales de pequefia y mediana escala como compuertas, flip ‘flops, registros, codificadores, decodificadores,etcs © circuitos integrados de gran escala LSI (Large ‘Scale Integration) especializados como la interfaz periférica programable (PPI) 8255 0 el controla- dor programable de interrupciones (CPI) 8259. En la figura 2.20 se muestra un ejemplo sencillo de un puerto de salida con un flip-flop tipo D cuya funcién es transferir el estado del bitde datos DO a un diodo LED que actiia como dispositive periférico. Esto sucede cuando en la linea de direccionamiento A15 hay un nivel alto y lasefial de escritura (WR) es baja. Después de deshabilitado, el flip-flop retiene la informacién previamente almacenada mientras el micropro- cesador se dedica a otras tareas. En la figura 2.21 se muestra un ejemplo senci- llo de puerto de entrada con un flip-flp. En este caso, el dispositivo periférico es un interrupror y su estado (alto 0 bajo), se transfiere ala linea de datos DO cuando en la linea de direccionamiento AIS hay un nivel alto y la linea de control de eseritura (RD) esbaja. Una vez.queel microprocesador acepta bit D0 presente en el bus de datos, lo transfiere al acumulador y sitia la salida del puerto de entrada en estado de alta impedancia con el fin de que no interfiera con otras transferencias de datos. Puertos /O programables, Una manera més ele- game y eficiente de controlar el teinsto de informa- Disposto paren de sala Microprocesador Puerto de saa ‘Fgura 2.20 Puerto de sala con tipo Sere Dispostiv peirico ‘de entrada |AN5-AO: Bus de direcciones Soe ‘Microprocesacor ‘Figura 2.21 Puerto de enact con intrruptor én entre el mundo externo y el microprocesador, «sutilizando circuitos integrados de gran cscala (LS) disefiados especialmente para el manejo de entradas y salidas, Entre ls principales caracterstcas de estos icuitos es podemos mencionar: + Son ficiles de conectar con los buses del siste- ma puesto que disponen de Iineas de adapta idn directa con las salidas del respectivo mi- croprocesador. Por lo general, s6lo se requiere un sistema decodificador de direcciones. * Son circuitos de entradas y salidas programa- bles. Esta caracteristica permite adaprarlos fi- cilmente a las condiciones de los circuitos ex- ternos utilizando dnicamente comandos de programacién, Generalmente, la programa- cién consiste en cargar, de una forma prede- rerminada, un registro interno que define el modo de operacién. Este iltimo se puede al- terar en cualquier momento por programa. + Algunos médulos de entrada/salida poscen cierta capacidad de proceso propia, indepen- diente del microprocesador. Esta circunstan- cia es favorable ya que libera al microproce- sador de la ejecucién de ciertas tareas ruti- narias y de control, las cuales delega en el dispositivo de incerfaz. La caracterfstica anterior, denominada algu- nas veces inteligencia dtribuida, simplifica el cir- ccuito y el programa y hace posible funciones que no serian ejecutables si el microprocesador tu- viera que hacerse cargo de todo el proceso de en- trada/salida, Por la funcién que hacen, los puer- tos de interfaz programables se pueden dividir cen dos categorias: interfaces dedicadas ¢ interfa- ces de propésito general o interfaces universales. Las interfaces dedicadas se especializan en una funcién especifica, por ejemplo, controlar periféricos, temporizar eventos, etc. En esta ca- tegoria se encuentran entre otros: el temporiza- dor programable 8253, el controlador de disco flexible 8271, la interfaz programable de teclado y display 8279 y el controlador de tubos de rayos catédicos (TRC) 8275. Las interfaces de propdsito general, como ss nombre lo indica, son mds universales y pueden adaprarsea una gran variedad de aplicaciones. Exis- ten interfaces para transmitir datosen paraelo como Ja interfez periférica programable (PPD) 8255 y para la transmisién de datos en serie como el 8251 El circuito de soporte 8155 (1/0-RAM) Si analizamos un microprocesador tipico como el ‘8085, observaremos que contiene todas las partes de una CPU funcional asf como un puerto serie; todo lo que necesita para completar un sistema basico es una memoria RAM, una memoria ROM y puertos paralelos de entrada/salida. Con el fin de minimizar el mimero de cir- cuitos integrados necesarios para configurar un sistema sencillo, Intel, creador del 8085, ha de- sarrollado una serie de componentes que inte- gran memoria RAM y puertos I/O 6 memoria ROM y puertos 1/O en un mismo circuito inte- grado. Los dispositivos més representativos son 1 8155, el 8355 y el 8755. E18155 contiene 256 bytes de RAM, dos puertos I/O paralelos de 8 bits, tun puerto I/O paralelo de 6 bits y un temporizador de 14 bits, El 8355 contiene 2048 byterde ROM y dos puertos I/O paralelos de 8 bits. F18755 tiene dos puertos IO. y 2048 fytes de EPROM. En esta sec- én estudiaremos un sistema basado en micropro- @ Ser: Cs rite se Wc cesador, uilizando el circuito integrado 8155. En la figura 2.22 se mucstra la configuracién de pines, el dliagrama interno de bloques y la estructura de te- gistros de este circuito. E18155 puede demultiplexar internamen- te el bus de datos y direcciones del 8085. Por esta raz6n, slo se necesitan ocho lineas, desde ADO hasta AD7, para transmitir datos y direc- ciones. Las lineas [O/MD, RD y WR se utilizan para el control de la memoria y las lineas ALE y RESET para el control interno. Para efectos de la interfaz se utilizan 22 lineas programables como entradas o salidas y organiza- das en tres grupos asi: desde PAO hasta PA7 para el puerto A, desde PBO hasta PB7 para el puerto B y desde PCO hasta PCS para el puerto C. Las lineas TI (pin 3) y TOpin 6) son, respectivamente, la entrada y la salida del temporizador. EPRRERSLRIR APRA AIaT @ Port & ee ha La memoria RAM del 8155 tiene asignadas Or las direcciones 0000H hasta OOFFH y es accesi- ble externamente mediante los ocho bits de di- wees reccionamiento de més bajo orden cuando las | Port 8 ie OE : Iineas CE ¢ IO/M son bajas y cualquiera de las © <— lineas RD 6 WR es baja. Los ocho bits de direc- — PAT cionamiento de més bajo orden se almacenan en un registro interno durante los flancos de bajada de la sefial ALE. La capacidad de memoria RAM del 8155 se i: = (256 bytes) es, generalmente, mds que suficiente a vex —l a para sistemas pequefios. En la mayoria de los ‘casos esta memoria se utiliza para almacenamien- to temporal de datos y resultados, asi como de informacién de registros y direcciones. Acceso a los puertos Los puertos A, B y C se pueden utilizar como tres pucrtos de entrada/salida independientes; ‘estos puertos son accesibles externamente a tra- vés de las 8 Iineas de mds bajo orden del bus de yy direcciones cuando CE es baja, RD o WR es Figura 222 Creu de spore 6155 baja ¢ TO/M es alta. La figura 2.23 muestra las curso préctico sobre Mirocontroladores xix: ® wf oe ~\ 5 8 2 s mies direcciones internas de cada registro y de cada puerto en el 8155. Por ejemplo, para seleccio- nar el puerto B, Al debe ser alta (1) y A2 y AO deben ser bajas (0). Disefio de un sistema minimo con 8085 y 8155 Podemos decir que un sistema minimo con mi- croprocesador es un dispositive constituide por una serie minima de elementos que permiten el desarrollo de algiin tipo de area o aplicacién en el mundo real de manera aut6noma, inteli- gente y siguiendo las pautas dadas por un pro- grama. En el estudio de los microcontrolado- res, es muy importante entender qué es un sis- tema minimo con microprocesadores, ya que es precisamente esta configuracién bésica la que se ha reemplazado con esta nueva tecnologia. Como ejemplo mostraremos el disefio de un sistema microcomputador minimo desarrollado por CEKIT alrededor de una CPU 8085 y un Gircuito de soporte 8155. Aunque el 8085 es un microprocesador de ocho bits de las primeras ge- neraciones, lo hemos utilizado en este ejemplo por Ja facilidad para entenderlo con fines didécticos Visualizador inaro Visualizador header = * Ee a aE Lt Tar = eae wed a esse ie Cp LIAR: cx 9s rt segiin los objetivos de este curso, De él se originé 41 8086 el cual es la base de toda la familia Intel la que siguié con el 80186, el 80286, el 80386, el 80486 y el Pentium. Si usted esté interesado en profundizar en este tema, le recomendamos nues- tro Curso Basico de Microprocesadores, El sistema se ha dividido en dos tarjetas: una tarjeta procesadora y una tarjeta programadora, fi- gura 2,23. La primera contiene, esencialmente, la CPU, la memoria RAM, el temporizador progra- ‘able, los puertos de entrada/salida y el registro de comandos. En la memoria RAM reside el progra- ‘ma de instrucciones que ¢jecuta el microprocesa- dor. La tarjeta programadora consta de una serie de funciones de pequefia y mediana escala tales como compuertas, drivers, decodificadores y registros, Su fancidn es permitir que el usuario tenga acceso a la memoria del sistema y pueda cargar en la misma datos ¢ instrucciones, as{ como visualizar resulta- clos. La informacidn se recibe desde un teclado hexa- decimal y se visualiza en diodos LED y displays. Disefio de la tarjeta procesadora La tarjeta procesadora de nuestro microcomputa- dor consta, bisicamente, de una CPU 8085 y un Teng asc corns |} sto boy deta 0 — a a won a a won ro = 385 Tarjeta procesadora Figura 2.23 Sistema minino @ 1 7a ay ar ry q mE | ok Say = nn fu vor || or 7 si OTS. 2 Le ae ale of 2 “i tre TE] sont i oot "6 srs 3 28 | Gases a ; Entrada serie Co ie Salida sere [Te 2 % = a, fet 12 8 e RERE 47K Aa 27ke) fs R-AK 1 sat ls Ot 10, |e orf St: SPOT ce at 28 ae circuito de soporte 8155. En las figuras 2.24(a) y 2.24(b) se muestran, en su orden, os diagramas de bloques y esquemtico de esta parte del sistema. La CPU 8085, cuya configuracién interna se ilustré en la figura 2.5, proporciona, entre otros bloques funcionales, una unidad aritmético-I6- gica (ALU) de ocho dits, una unidad de control y varios registros accesibles al usuario. Aunque el 8085, por disponer de un bus de direcciones de 16 bits, puede direccionar un espa- cio de memoria de 64K (65536 bytes), los 256 bytes de RAM disponibles en nuestro sistema son suficientes para soportar la mayorfa de programas sencillos de aplicacién. Todos los bloques funcio- nales que constituyen la tarjeta procesadora se co- munican entre s{a través de los buses de control, de datos y de direcciones del sistema, El bus de Figura 2.24 (a) Diagrama de bloques (2) Diagrama esquemético control, como su nombre lo indica, transporta las sefiales de control (ALE, WR, RD, 10/M, etc) que necesita la CPU para comunicarse 0 dialagar con la memoria y los puertos I/O. A través del bus de direcciones, el 8085 se- lecciona de manera inequivoca la posicién de memoria o el puerto I/O desde el cual trae o ha- cia el cual dirige la informacién del bus de datos. Puesto que el sistema tiene solamente 256 bytes de memoria, sélo se requieren ocho lineas de di- reccionamiento (las menos significativas); las ocho restantes (las més significativas), no se lizan, En el 8085 las ocho lineas de direcciona- miento de més bajo orden (AO hasta A7), se mul- tiplexan internamente con las ocho lineas del bus de datos (D0 hasta D7) formando un bus tinico de datos y direcciones, F1 8155 decodifi- ca 0 demultiplexa la informacién transportada Meare sobre estas lineas para saber cudndo se trata de una direccién y cuindo de un dato, El circuito de reloj ‘Todo microprocesador necesita un generador de pulsos de reloj para controlar el contador de pro- grama y sincronizar sus funciones internas. En nuestro caso, este circuito de reloj viene incor- porado en la CPU 8085 y su frecuencia puede controlarse externamente mediante un cristal 0 una red RC externa conectada entre las lineas X1 (pin 1) y X2 (pin 2). El circuito de reset E1 8085 puede ser ficilmente conectado o desco- nectado por hardware manejando adecuadamen- te su entrada de reset (RESET IN), pin 36. do esta linea recibe un nivel bajo, el microproce- sador ingresa al estado de reset. Bajo esta condi- in, el contador de programa se carga con ceros y los buses de datos y direcciones se sittian en el es- tado de alta impedancia, Debido a su naturaleza asincrdnica, la sefial de reser puede afectar cl con- tenido de los registros internos de la CPU, in- cluido el de estados o banderas. Cuando la linea RESET IN se hace alta, el 8085 procede a ejecu- tar el programa almacenado en la memoria. En el momento de aplicar energfa al siste- ma, el condensador Cl esté descargado e inyec- ta, a través de R4, un nivel bajo a la entrada RESET IN del 8085. Como resultado, este til- timo pasa al estado de reset descrito anterior- mente. El condensador comienza entonces a cargarse a través de R3. Cuando el voltaje entre los terminales de C1 alcanza un valor cercano a +5, la entrada RESET IN recibe un nivel alto y el 8085 sale del estado de reset, comenzando la ejecucién de las instrucciones a partir de la posicidn 0000H. El diodo D1 descarga répida- mente el condensador cuando se desconecta mo- menténeamente la fuente de alimentacién, i ‘luso como resultado de una falla en la alimen- tacidn, El circuito constituido por $1, RI, R2, IC1A ¢ IC1B forma un eliminador de rebote cuyo objetivo es aplicar un nivel bajo a la entra- da RESET IN del 8085 cuando el interruptor SI esté en posicién “RESET” y un nivel alto cuando S1 estd en la posicién “RUN”. Los buses de datos y direcciones El 8085, por poser un bus de direcciones de 16 lineas, puede direccionar hasta 65536 bytes (64K) de memoria. Sin embargo, para acceder a las 256 posiciones de RAM disponibles en el Circuito de soporte 8155 sélo se requieren las ocho Iineas de més bajo orden. En la figura 2.25 se muestra la forma de interconectar los buses de datos y direcciones de los circuitos 8085 y 8155. Recuerde que en el 8085 las ocho Iineas de direccionamiento de més bajo orden estin multiplexadas con las ocho lineas de da- tos, formando un bus tinico de datos y direc- ciones. En otras palabras, en nuestro sistema, los datos y direcciones viajan sobre las mismas lineas (ADO hasta AD7). El 8155 distingue incemamente entre direc- ciones y datos interpretando el estado de la linca de control ALE. Cuando esta tiltima es de nivel bajo, entiende que la informacién presente en el bus ¢s tun dato y cuando es de nivel alto es una direccién. Cuando el bus AD actia como bus de da- tos, as lineas ADO a AD7 son bidireccionales, es decir, pueden transportar informacién desde 0 hacia el microprocesador. Cuando este bus se convierte en bus de direcciones, las lineas ADO hasta AD7 son unidireccionales y evan infor- macién de la CPU hacia la memoria 0 hacia los puertos de entrada/salida. Figura 2.25 Conexién multplexade del bus de datos y drecciones| &® RCIA 00 picice sore exocotontrve El bus de contro! Como se muestra en la figura 2.26, la CPU 8085 se comunica con el circuito de soporte 8155 a través de cinco lineas de control: RE- SET, ALE, WR, RD e 10/M. Ouras lineas de control como HOLD, HLDA, READY, etc., no son necesarias para la operacién de nuestro sistema minimo pero si se requieren en siste- mas més grandes para ejecutar otras funciones. La salida de reset del 8085 (RESET OUT, pin 3), activa en alto, le comunica a la entrada de reset del 8155 (RESET IN, pin 4) que el mi- croprocesador estd en condicion de reset, es decir que no esté ejecutando el programa de aplica- cién, Cuando esto sucede, ef 8155 entra tam- bign en estado de reset y define todas las ineas de sus puertos como entradas. La linea ALE (Address Latch Enable: habi- litador del seguro de direcciones) del 8085 (pin 10) esta conectada ala linea ALE del 8155 (pin 11). Cuando esta sefial es alta, la CPU le in- forma a la memoria interna del 8155 que la informacién binaria disponible en el bus AD es una direccién, Como resultado de la sefial ALE, el 8155 al- rmacena en un registro interno, durante el flanco de bajada, la palabra de direccién. En el siguiente ciclo de miquina, el microprocesador puede pro- ceder entonces,a ler oa escribir en la posicién de memoria nada. En este caso, la informa- cién se transmite sobre el bus AD, convertido aho- ra en el bus de datos del sistema. Fgura 2.26 Conexén del bus de control ey La linea WR (write: escritura) del 8085 (pin 31) estd conectada a la linea WR (pin 10) del 8155. Cuando esta linea se hace baja, la CPU le indica ala memoria que el dato o la instruc presente en el bus AD va a ser escrita en la posi- cién de memoria previamente seleccionada, La linea RD (read: lectura) del 8085 (pin 32) esté conectada a la linea RD (pin 9) del 8155. Cuan- do esta linea se hace baja, Ia CPU le indica a la memoria que va a proceder a leer el contenido de la direccién previamente scleccionada y a si- tuar la informacin en el bus AD. Finalmente, la linea [O/M (Inputlousput- ‘memory. entrada/salida-memoria) del 8085 (pin 34) estd conectada a la linea [O/M (pin 7) del 8155. Cuando esta linea se hace alta, el 8155 reconoce que la palabra de direccién presente en el bus de datos corresponde a un registro in- terno oa un puerto I/O. Cuando la linea 10/ M se hace baja, la CPU 8085 le informa al cir- cuito de soporte 8155 que la direccién presente en el bus AD corresponde a una de las 256 po- siciones de memoria a las que es posible tener acceso, Estas localizaciones tienen asignadas di- recciones entre 00H y FFH. Disefio de la tarjeta programadora Desde un punto de vista conceptual, el circuito dela figura 2.24 es una microcomputadora com- pleta porque pose una unidad central de pro- ceso, una unidad de memoria y puertos de en- trada/salida, Sin embargo, le falea lo més im- portance: un programa. Sin un programa que le indique lo que debe hacer, un microcomputa- dor es slo una masa inanimada de componen- tes electrénicos. Para almacenar en la memoria los datos ¢ instrucciones que constituyen el programa de nuestra microcomputadora, necesitamos asumir temporalmente el control del circuito de soporte 8155 y aislar el microprocesador 8085 del resto del sistema, De este modo, podemos introducir informacién en la memoria sin intervencién de la CPU. Esta es, precisamente la funcién de la aro pct sore Merocotoederee fexcrx: > Kos microprocesadores Dye a) Figura 2.27 Conoxiin del tarjeta programadora tarjeta programadora. En la figura 2.27 se ilustra la forma de conectar esta tarjeta a la tarjeta pro- cesadora. Cuando el interruptor S1 de esta iilti- ma se situa en posicién “RESET”, las lineas de datos y direcciones ADO hasta AD7 del 8085 adoptan el estado de alta impedancia y quedan flotantes. Lo mismo sucede con las lineas de con- trol ALE, WR, RD e IO/M. La linea RESET IN del 8085 es de nivel bajo. Bajo estas condiciones, desde la tar- jeta programadora podemos acceder mente a la RAM del 8155 y escribir en la misma el programa que debe ejecutar el microprocesador. Ast mismo, podemos dircccionar cualquier posicién de memo- ria y leer su contenido. Una vez cargado el programa, el control del 8155 debe retornar al 8085 para que este tiltimo lo ejecute ($1 = “RUN”). En la figura 2.28 observamos el aspecto fisico del sistema minimo desarrollado alrede- dor del microprocesador 8085 y del circuito integrado 8155. Notas finales En esca leccidn se ha hecho un repaso general de los aspectos més importan- tes relativos al mundo de los micropro- @ ae Visualizacion de los datos cesadores. Hemos analizado su arquitectura in- terna, su funcionamiento y la forma de interco- nectarlos dentro de un sistema para que puedan ejecutar tareas que involucren el manejo de va- riables reales y cierto grado de inteligencia. He- mos visto que estos dispositivos requieren de componentes adicionales para ejecutar una tarea especifica y que poseen las facilidades para ditec- cionar 0 manejar gran cantidad de periféricos como memorias, puertos y muchos ottos dispo: sitvos. Debido a esta capacidad, los microproce sadores son el elemento fundamental dentro de los equipos de computacién modernos, donde se manejan enormes cantidades de memoria y gran variedad de periféricos. Los microcontroladores son dispositivos elec- trénicos que agrupan en un solo circuito integra- do todas estas caracteristicas, aunque con cierta limitaciones de memoria y periféticos. Sin embar- go, su funcionamiento interno sigue siendo basi- camente el mismo, Por esta raz6n hemos querido entregar esta corta introduccién a los micropro- cesadores, para dar una idea de todo el desarrollo tecnoldgico que involucra esta tecnologfa y sentar Jas bases para el estudio de estos elementos, Tareta procesadora Tarjeta programadora ——_Taretas de VO Figura 2.28 Sistema mirocomputador minimo con e! 8085 Curso préctico sobre Microcontroladores En los tiltimos afios, un componente elec- trénico ha revolucionado las técnicas de disefio; se trata del microcontrolador. Es un circuito integrado programable que contiene todos los elementos necesarios para controlar un sistema. A partir de esta leccidn, iniciamos un estu- dio detallado de cada una de las partes y médulos internos que componen un micro- controlador, desde los més bésicos hasta los més especializados, al igual que algunas téc- nicas y algoritmos que permiten su manejo ¢ inclusién dentro de un proyecto. Caro prétco sobre Micocontroladores rr: @> Los microcontroladore: Al analizar los sistemas basados en. micro- procesadores mostrados en las lecciones anterio- res, se puede deducir que la estructura de un sis- tema de microcomputadora para aplicaciones de medicién o control, tiene un cardcter constante, es decir, siempre existird esa misma estructura (CPU, memorias, puertos, buses, etc.). No es dificil comprender, entonces, porqué los fabri- cantes de circuitos integrados decidieron produ- cir un supercomponente que contenga todos los elementos de una computadora en un solo cir- cuito integrado. ‘A mediados de los afios 70, los fabricantes de circuitos integrados dieron a conocer un nuevo dis- positivo denominado microcontrolador el cual con- tenfa toda la estructura de una microcomputadora, «decir, unidad de proceso (CPU), memoria RAM, ‘memoria ROM y circuitos de entrada/salida. El pri- mer dispositivo de esta naturaleza fue lanzado por “Texas Instruments y se denominé TMS 1000, el cual fue el primer microprocesador que incluyé suficien- te RAMy ROM para el desarrollo de aplicaciones. El microcontrolador se concibié como un dispositive programable que puede eje- Dspostvs de entrada +50 (Fuente de alimentacién) Circuito externa de rel y ‘salidas Entradas ‘Figura 3.1 Idea general de un microcontroador cutar un sinnimero de tareas y procesos. Desde ese momento, el disefio de productos clectrénicos cambié radicalmente. Circuitos légicos, manejo de periféricos, temporizado- res y estructura de computadoras, todo pro- gramable y alojado en un solo circuito inte- grado; es decir, una pequeia computadora para todas las aplicaciones. Dispositvos de salida Fgura 3.2 Diagrama general do un sistema basado en un microcontolador & BCI: 020 y80000 ve execonttteree Ahora, para un disefiador, la idea de una microcomputadora, en aplicaciones de control 0 en la fabricacién masiva de aparatos modernos, se asimila al esquema mostrado en la figura 3.1, donde tenemos una fuente de alimentacién, un Gircuito de reloj y un microcontrolador. Una vez configurado el sistema en cuanto al hardivare, so- lamente se requiete grabar el programa en la me- moria ROM; los pucrtos ya estan listos para eet fe ere tempera naan aigaies ico conectarse al mundo exterior. Un microcontrola- dor puede definirse entonces como un sistema completo de cmputo, que incluye una CPU, memoria RAM y ROM, un oscilador y puertos 1/0, todo dentro de un mismo circuito integrado. Sistemas microcontrolados Aunque un usuario comiin no lo perciba, hoy en dia es muy comiin encontrar uno o varios mi- o) (27 splay ee erst quo Salas digtates Oscladores ro) Cristal Figura 3.3 Estructura basica de un microcantrotadory de os dspasitives que pueden hacer parte de un sistema uso prt sotre Meroconroedoes xr: & eer crocontroladores en todo tipo de aplicaciones des- de los electrodomésticos y aparatos caseros como las cafereras, los hornos microondas, las video- sgtabadoras y las alarmas, hasta los circuitos de control sofisticados de los auroméviles, los avio- nes, las naves espaciales, los barcos, los sistemas de automatizacién industrial, etc. Las aplicacio- nes para los microcontroladores son infinitas; el nico limite es la imaginacién, La posibilidad de manejar sefiales de entra- da y de salida, asi como su capacidad para pro- cesar datos y tomar decisiones, lo convierte en uno de los elementos electrénicos més verséti- les que existen. El diagrama general de un siste- ma microcontrolado seria el que se muestra en la figura 3.2. Cuando se habla de dispositivos de entrada, se hace referencia a todos los elementos que pue- den cambiar su estado ante una determinada con- dici6n y generar una sefal que pueda ser utilizada por el microcontrolador para tomar alguna deci- sins por ejemplo, un teclado, un interruptor, un sensor, un transductor, etc. Los dispositivos de sa- lida pueden ser indicadores visuales, audibles 0 ac- tuadores, entre otros. = aw Figura 3.4 Ejemplo del uso de un microcontrolador en un horno microondas Los indicadores visuales més comunes son las pantallas de cristal iquido, los diodos LED, las limparas incandescentes, etc. Los indicadores au- dibles pueden ser parlantes, zumbadores, tc. Los actuadores son muy importantes ya que se utilizan para manejar las “cargas” como los relés, las electrovilvulas, los motores, etc., figura 3.3. Un ejemplo prictico puede ilustrar mejor todas las posibilidades. Veamos el caso de un horno microondas, figura 3. En este ejemplo tenemos tres clases de dis- positivos de entrada: el teclado, por medio del cual se programa la funcién que se desea, los sensores internos para controlar variables como la temperatura y, si el horno tiene esa funcidn, un receptor de control remoto pata captar las érdenes dadas por el usuario sin ac- cionar el teclado. Como dispositivos de salida estan: el dis- play, que puede ser de diodos LED o de cris tal liquido, el motor que hace girar los ali- mentos y algunos relés que se encargan de controlar o desactivar los circuitos del hor- no, lo cual permite, por ejemplo, cambiar la potencia y el tiempo de coccién, entre otros. En este caso tenemos un microcontrola- dor programado especificamente para esta fun- cién acompafiado de una serie de circuitos complementarios de entrada y salida y sus res- pectivas interfaces. Hay innumerables ejemplos de aplicacién de esta tecnologia, desde algunos muy simples como un temporizador, hasta sofisticados ro- bots con cierto grado de inteligencia artificial. En la seccién de proyectos de este curso, pre~ sentamos una serie de aplicaciones reales que el alumno podré construir, y asi aprender y ve- rificar el poder y la versatilidad que offecen estos dispositivos. & GRC: cx pctee ote werocoesars Diferencias entre sistemas basados en microprocesador y en microcontrotador Existen varias diferencias importantes entre estas, dos tecnologfas, cada una tiene ventajas y desven- tajas, y su uso depende de las necesidades de cada aplicacién. Para aclarar las ideas sobre este tema, ‘veamos cuales son estas diferencias: 1, La CPU del microcontrolador es mis simple y sus instrucciones estén orientadas, princi- palmente, a la operacién de cada una de las lineas de entrada y salida 2, La memoria RAM (de datos), que oftecen los microcontroladores, es de baja capacidad. La raz6n es simple: las aplicaciones de control ¢ instrumentacién comunes no necesitan alma- cenar grandes cantidades de informacién tem- poral. En cambio, los microprocesadores pue- den acceder, a través de los buses, a grandes bancos de memoria RAM externa de acuerdo a las necesidades del sistema 3. En los microcontroladores, la memoria ROM (de programa) es limitada. Por lo general, no mayor a 4 Kilobytes. De esta memoria hay tres tipos: EPROM, OTP y EEPROM, figura 3.5. Los microcontroladores con me- moria EPROM se utilizan basicamente para Figura 3.5 Tos de memoria en las microcontoladores Ucar) Figura 3.6 Dispositvo de luz ultraviolet para el brrado {te microcontroladores con memoria EPROM el desarrollo de prototipos; con este tipo de memoria, es posible programar y reutilizar el microcontrolador a la manera de las me- morias 2716, 2732, etc., esto es, borrando el programa mediante un haz de luz ultra- violeta aplicado sobre una ventanita. En cam- io, los circuitos integrados OTP (One Time Programable) o programables una sola ver, no permiten que se altere o borre la infor- macién escrita. Este tipo de dispositivos es mis econémico, por lo tanto es el més utili- zado para la produccién en serie de aparatos electrénicos, cuando el prototipo ya ha sido completamente probado. Los dispositivos EEPROM, que han hecho su aparicién en los iltimos afios, se caracteri- zan por permitirel almacenamiento de un pro- gramay su borrado por medios eléctricos. Este método es mucho més rapido que el borrado con luz ultravioleta de las memorias EPROM, ademds de no necesitar dispositivos adiciona- les como el que se muestra en la figura 3.6. Una variedad de la memoria EEPROM es la memoria FLASH; los microcontroladores con este tipo de memoria, también son borrables y reprogramables eléctricamente, pero pueden soportar un ntimero mucho mayor de estos procedimientos. En un sistema con micropro- res petetes ire MET eeMe GUNS cexrr: @> Los Microcontroladores cesador, se pueden tener memorias ROM ex- ternas de diferentes tecnologfas y capacidades, de la misma forma que las memorias RAM. 4, Con los microcontroladores no es necesa- tio disenar complejos circuitos decodifica- dores porque el mapa de memoria y de puertos I/O estén incluidos internamen- te. Por la razén anterior, el cireuito impre- so de las aplicaciones es muy simple y, en algunas ocasiones, puede ser de una sola capa lo cual es una ventaja sobre los mi- croprocesadores. 5. La mayoria de los microcontroladores no tienen accesible al usuario los buses de di- recciones, de datos y de control de la CPU. Algunos modelos lo hacen a través de los puertos de entrada/salida (I/O), utilizan- do sefales especiales de sincronizacién. Estos buses y sefiales se pueden emplear para construir expansiones de memoria RAM y ROM por fuera del microcontro- lador. Como ya vimos, esta funcién es mucho més ficil de utilizar en los procesadores. 6. La velocidad de operacién de los microcon- troladores es mis lenta que la que se puede lograr con los sistemas de microprocesado- res. Sin embargo, actualmente existen micro- controladores que funcionan por encima de los 50 MHz lo que es suficiente para mu- chas aplicaciones. 7. De manera similar a los sistemas utiliza- dos con los microprocesadores para escri- bir, ensamblar y depurar programas en len- guaje de maquina, se requiere un sistema de desarrollo para cada familia de micro- controladores. Esta compuesto por un pa- quete de sofiware con editor, ensamblador y simulador de programas y, al mismo tiempo, se necesita un hardware para “que- mar” o almacenar el programa en la me- moria del microcontrolador. En resumen, algunas de las principales ven- tajas cuando hacemos el disefio de un circuito utilizando un microcontrolador son: * El circuito impreso es més pequefio ya que mu- chos de los componentes se encuentran dentro del circuito integrado. '* El costo del sistema es mucho menor, al redu- cir el ntimero de componentes * Los problemas de ruido que pueden afectar los sistemas con microprocesador se eliminan, de- bido a que todo el sistema principal se encuen- tra en un solo encapsulado. + El tiempo de desarrollo de un sistema se redu- ce notablemente. Cuando una aplicacién 0 problema que se va solucionar, sobrepase las caracteristicas de un microcontrolador como capacidad de memoria, velocidad de proceso, miimero de pines o lineas de entrada y salida, etc., se debe recurrir a un sistema con microprocesador o a una microcom- putadora completa. +v Figura 3.7 Méduls especiaizados en los microcontroladores ® GEKA: 20 pricice ste Werocotetres Un microcontrolador para cada gusto Muchas aplicaciones requieren algo mds que las simples entradas y salidas de tipo digital. Pen- sando en ello, los fabricantes de microcontrola- dores han adicionado internamente algunos cir- cutitos especiales en algunos de sus modelos. Las posibilidades son amplisimas y el usuario puede cescoger ala carta. A continuacién, enunciaremos algunas de las posibilidades, las cuales iremos es- tudiando progresivamente en este curso. + Silos fenémenos que se necesitan medir 0 con- trolar son de naturaleza andloga como tempera- tra, voltae, etc, se debe disponer de un conver- tidor andlogo-digital (A/D) de varios canales. + Si hay que medir periodos de tiempo o gene- rar, en las salidas del circuito, tiempos, tonos 0 frecuencias, hay que tener uno o més contado- res programables (timer). * Si la informacién obrenida en un proceso de medida o control, o el resultado de los célculos del programa, se deben enviar a otro micro- controlador, a una computadora o a una red, es muy titil tener un circuito RS-232 para co- municaciones seriales. Interupeiones Lc) + Para quienes requieren salidas PWM (modula- cién por ancho de pulso) para el control de mo- tores CC o cargas resistivas, existen microcon- troladores que pueden ofrecer varias de cllas. * Cuando se requiere atender eventos en tiempo real 0 existen procesos que no dan espera, se debe utilizar la técnica llamada de “interrup- ciones". Cuando una sefial externa activa una linea de interrupcidn, el microcontrolador deja de lado la area que se encuentra ejecutando para atender una situacién especial y luego pue- de regresar a continuar con la labor que estaba desempentando. Tabla 3,1 Mirocontrotadores de fa familia INTEL 8051 En la figura 3.7 se presenta el diagrama de un posible circuito con microcontrolador que incluye Ja mayorfa de los elementos que se utlizan en apli- caciones de medicién, instrumentacién y control. ‘8k RON en B52 # jase 256 76s TAM 052 ‘nadas del contador eee Po Pt Direccones/Datos Figura 3.8 Niciso del 6051 —— 7: @> iS microcontroladore: Principales familias de microcontroladores Actualmente existen en el mercado varias mar- cas reconocidas como las més importantes dadas sus caracteristicas, comercializacién, soporte téc- nico, difasién, usos en la industria y en la fabri- cacién de productos de consumo masivo, ete. En- te ellas estin Motorola, Microchip, Intel, Phi- lips, National y ATMEL. La familia Intel 8051 El primer microcontrolador de Intel fue el 8048, en el cual la memoria RAM estaba dentro del circuito integrado, pero el programa debfa alma- cenarse externamente; posterior a él, en los afios 80, nacié el 8051. Esta familia de microcontro- adores ha sido una de las més difundidas en el mundo e incluye varios miembros, cada uno de ellos acondicionado para aplicaciones especificas. Todas las versiones existentes estin conformadas segtin un mticleo basico (8051 Core) cuyo diagra- ma de bloques se muestra en a figura 3.8. ‘Tienen la misma CPU, memoria RAM, tem- porizadores, pucrtos paralelos y entradas/salidas de tipo serial, segiin la distribucién que se mucs- tra cn la tabla 3.1. E18051 tiene 4 kilobytes de memoria ROM que se deben programar durante el proceso de fabricacién del circuito integrado. En el 8751, la memoria ROM se ha reemplazado por una memoria EPROM que el usuario puede pro- gramar con un aparato especial y borrar con luz uleravioleta E18031 es un caso especial; no tiene capaci- dad para memoria ROM interna y, por lo tanto, la memoria de programa se debe colocar exter- namente. Para realizar la comunicacién con la memoria externa, se deben emplear tres de los cuatro puertos paralelos de entrada/salida que tie- ne. Esta posibilidad de expansin de la memoria RAM y ROM con circuitos externos, es una ca- racteristica propia de los microcontroladores de sea familia, Mapa de memoria. Los componentes de esta familia de microcontroladores tienen una ca- racteristica en comtin que los hace diferentes al comportamiento convencional de un mi- croprocesador: tienen un espacio para las di- recciones de datos (lecturafescritura) y otro para las direcciones de programa o de lectura solamente. La memoria de programa puede ser hasta de 64 Kbytes. En las versiones que tienen ROM y EPROM, los 4K, 8K 0 16K inferiores de pro- grama, estén alojados en el microcontrolador. Conjunto de instrucciones. Todos los miem- bros de la familia ejecuran las mismas instruc- ciones. Este conjunto de instrucciones ha sido disefiado pensando en optimizar aplicaciones de control de 8 bits. Ofrece una variedad de modos de direcionamiento para accesar la me- moria RAM interna con el fin de facilitar las operaciones de 8 bits en una estructura de da- tos pequefia, El conjunto de instrucciones proporciona un soporte muy amplio para variables de un bit. De esta manera, se puede lograr la manipulacién en los sistemas légicos y de control, que necesitan operaciones de Algebra de Boole. La informacién sobre el nticleo del 8051 se hizo publica y en ella se han basado otros fabricantes para llevar al mercado versiones ac- tualizadas con mejores caracteristicas en cuan- to a velocidad, consumo de corriente, fun- ciones adicionales, etc., como el caso de Phi- lips y ATMEL. Motorola Los microcontroladores Motorola se derivaron del microprocesador 6800 y han sido optimi- zados para aplicaciones de control especializa- do, formando parte de aparatos de produccién masiva como juguetes, equipos de video, im- presoras, electrodomésticos y son de amplio uso en la industria aucomotriz. & QPGICIT: 0 wctes sot Merocontades s| & | 2ceey | a | sa a ee accom | 3 | sa | sees 8]. jie] arm tea | 2 ‘tcaraes | = [si | sae |2ct6eie 1 ans} 99 | sor . sia | arash | 2ceeiy | 2 |scism| scares 8] = [ste | soxruast | zeny | 23 | so] scares ® ae} usKrasi | —2qemy | 18 | = | toca ef = fre | arse | zaemmy | 18 | | tcanies 8 wm] - remy | 1859. | sor | = | 256 fanmeemou) 6a) javz260| sos] scares 6 ik | acezemom | sqeaty | +0091 | sais] ecaane | 16] = | a |reotnow | screeiy | +0060 | sors] canes IR FUISH i: Existen cinco familias principales: la 68HCO5, la 68HC08 y la 68HCII de 8 bits, y la 68HC12 y la 68HC16 de 16 bits; cada una de cllas con una CPU diferente. Dentro de la familia 68HCO5 existen més de 30 microcontroladores distintos, todos cons- truidos a partir de la misma CPU de 8 bits incluyen RAM, ROM, puertos I/O y tempori- zadores; algunos tienen ademés, puertos seriales, convertidores andlogo-digitales y memorias EE- PROM 0 EPROM como lo describe la tabla 3.2. Los microcontroladores de la familia HCO8 poscen puertos seriales, conversién A/D, inter- faces para redes CAN, PLL, PWM, etc., depen- diendo de la referencia. Microchip Las raices de los microcontroladores de esta em- presa, se hallan en la Universidad de Harvard cuando se desarrollaba un proyecto para el De- partamento de Defensa de E.E.U.U. en el cual se utilizaba un nuevo disefio en cuanto a la dis- posicién e interaccién de la CPU con la memo- ria, el cual tomé el nombre de arquitectura Har- Tabla 3.2 Microcontroadores Motorola vard. Este tipo de arquitectura fue tomada por General Instruments para su CPU CP1600, y de esta empresa surgié, alrededor de 1985, una division que se ubicé en Arizona y que tomé el nombre de Microchip Technology, con el micro- controlador PIC como su producto principal. Los microcontroladores PIC se clasifican en tres grupos dependiendo de la longitud de la pa- labra de inscruccién que pueden manejar (12, 14 6 16 bits), tomando las referencias 12CXXX, 16XXXX, 17XXX y 18XXX. Nota: Las X en estos nombres quieren decir que cen es0s espacios se ubican diversos niimeros y letras, segin el tipo de integrado. Sus fabricantes definen alos PIC como micro controladores de 8 bits tipo RISC (Reduced Ins- sruction Set Computeré Computadora con un con- junto reducido de instrucciones) de bajo costo, bajo consumo de potencia y alta velocidad de operacién. No estén muy alejados de la realidad: ya es- tin en desarrollo microcontroladores PIC de has- ta 40 MHz y el consumo de potencia es de 50 Los microcontroladot EE ‘KE, Li 4G 6 Wipe Mihai? ~ fies tn sc 20 pinssoP | }-2e00 rein sc 2 piassor microwatios a 32 Khz de operacién y 6 mi- crowatios en modo de reposo o standby. La arquitectura de los PIC se basa en regis- tros con memorias y buses separados para las ins- rrucciones y los datos, llamada arquitectura Har vard. La memoria y el bus de datos (RAM) son de 8 bits de ancho, mientras que la memoria (EPROM) y su bus tienen 12 bis La tecnologia de los microcontroladores ha permanecido en constante evolucién en cuanto a tecnologia de fabricacién y cualida- des ofrecidas. Los microcontroladores PIC de tiltima generacién son maquinas asombrosas: por ejemplo se tienen proyectados PIC de tan solo 8 pines con conversor A/D y memoria Flash. Algunos llegan a poser hasta 100 pi- nes, y segiin la referencia, incluyen una buena variedad de médulos internos que cumplen con una gran cantidad de funciones como puertos seriales, PWM, comparadores, etc. En la tabla 3.3 tenemos una lista de algunos mo- delos de estos microcontroladores con algu- nas de sus principales caracter(sticas. Tabla 3.3 Algunos models de mecrocontotadores PIC ATMEL Esta empresa mangja tres grandes grupos de mi- crocontroladores RISC cuyas CPU Megan has- ta los 32 bits. El primer grupo tiene una arqui- rectura basada en el 8051 de Intel con memo- ria de programa tipo Flash. El segundo grupo son los microcontroladores AT91, los cuales so- portan compilador en C, emulador, etc. El ale timo grupo lo conforman los microcontrola- dores AVR, de arquitectura RISC y CPU de 8 bits, y médulos USART, SPI, ADC, etc. En la tabla 3.4 se muestran las caracterfsticas princi- pales de algunos modelos de esta marca. | aorreoete | - jax |S [2 | [27-28 40 |_Aerst_Jaxji2niz |+ |22]4060) 24 | Tabla 3.4 Microcontroladores ATMEL La familia de microcontroladores PIC ha conquistado, en los tiltimos afios, un espa- cio importante entre los disefiadores de toda clase de circuitos de instrumentacién, me- dicién y control, asi como entre los experi- mentadores y estudiantes de esta tecnolo- gia, por lo tanto, vamos a dedicar parte de este curso a explicarlos. arse pretest Mvcorrassaes AgRceT:: Kea) iT Ta EL Tg ay El crecimiento de la participacién de estos mi- crocontroladores en el mercado mundial ha sido po- sible debido a la capacidad de estos dispositivos de satisfacer las necesidades, cada vez més exigentes, de los ingenieros y técnicos de todo el mundo. Este cre- cimiento también se aliment6 por ka variedad ofreci- da en sus presentaciones y tipos de memoria. Algu- nas de las razones que justificaron esta acogida son: * Sencillez. de manejo por su juego reducido de instrucciones + Buena informacién: notas técnicas, proyectos en internet, etc. * Precio y disponibilidad en el mercado + Herramientas de desarrollo ficiles y baratas La empresa Microchip fabrica, entre otros mu- S microcontroladores PIC ria en los microcontroladores PIC. Esta tecnolo- ‘gfa de la memoria no afecta la operacién Iégica del dispositivo. Debido a los diferentes procesos de fabricacién y las distintas tecnologfas, algunas caracteristicas eléctricas pueden variar entre dis- positives, a pesar de que tengan las mismas fun- ciones y pines. Cada uno de los tipos de memoria que estén ‘en los dispositivos, hace que cada uno de ellos presente una variedad en la respuesta de frecuen- cia y en las opciones de encapsulado. Dependien- do de los requerimientos de la aplicacidn y de la produccién, las opciones propias del dispositivo pueden identificarse usando las hojas de datos suministradas por los fabricantes. El tipo de memoria utilizado en cada dispo- ivo se puede identificar en su ntimero de parte por la primera(s) lera(s) as 1. C, como en PICIGCXXX. Estos dispositivos tienen memoria EPROM 2. CR, como en PICI6CRXXX. Dispositivos con memoria ROM 3. F, como en PICIGFXXX. Dispositivos con me- moria Flash EPROM Es la memoria borrable (EPROM: Erasable Pro- grammable Read Only Memory) para que los di- sefiadores tengan flexibilidad en el desarrollo de los prototipos. ROM Microchip oftece dispositivos en versién ROM (Read Only Memory) la cual es la apropiada para utilizarse en casos de produccién en serie, ya que es la mds econémica del mercado. Tabla 4.1 Tipos de memoras y rangos de votaje Tabla 4.2 Rangos devotee tics paa cada tipo de dispositive Memoria Flash Estos dispositivos son borrables eléctricamente y se ofrecen en un encapsulado plistico de bajo costo; pueden borrarse y reprogramarse. Opciones de rango de voltaje de operacion ‘Todos los microcontroladores PIC de rango me- dio operan sobre un rango estindar de voltaje. Algunos modelos pueden trabajar sobre unos rangos extendidos de voltaje (y rango reducido de frecuencia). La tabla 4.1 muestra la designacién para los ti- pos de memoria y rangos de voltaje en los micro- controladores PIC 16CXXX. Los designadores estén en negrilla En ka tabla 4.2 podemos apreciar las especi- ficaciones dadas por Microchip para los voltajes. de los distintos microcontroladores. Estos valo- res estén comprobados. Variedades de encapsulado Dependiendo de la fase de desarrollo de un proyecto, se debe usar uno de los tres tipos de encapsulado. El primero es un dispositive con una ventana de borrado. Normalmente poseen un encapsulado cerdmico y se usan en Ia fase de desarrollo, debido a que permiten borrar y reprogramar la memoria de progra- ma muchas veces. El segundo tipo de encapsulado es el plistico de bajo costo. Por tltimo estén los dispositi- vos DIE (dado) los cuales se caracterizan por no tener encapsulado. Se utilizan en aplicacio- nes de muy bajo costo donde el espacio de las. tarjetas deba ser minimo. En la figura 4.2 se muestran los tres tipos de encapsulados. & LEHI: 01:0 picica ste wereconrossres ‘Figura 4.3 Principals encapsulades de ls microcotroladores IC Dispositivos borrables con luz ultravioleta La versién borrable UV de dispositivos de me- moria de programa EPROM es éptima para el desarrollo de prototipos y programas piloto. Es- tos dispositivos pueden programarse una y otra vez. La cantidad de tiempo requerida para bo- rrar completamente un dispositivo UV depende ud de onda del haz, su intensidad, distancia entre la fuente y el microcontrolador, y de la tecnologia del dispositivo (qué tan peque- fias son las celdas de memoria). de la lon ‘Nota: las bombillas fluorescentes y Ia luz del sol, emiten luz ultravioleta con una longitud de onda que permite el borrado. Si en un dis- positivo de este tipo no se protege la ventana, puede ocurrir, con el tiempo, que las celdas de a memoria se borren, El tiempo de borrado con una luz fluorescente es aproximadamente de tes afios, mientras que con la luz del sol se requiere de aproximadamente una semana. Para prevenir la pérdida de los datos, se debe colocar una superficie opaca (p. ¢). cinta ais- Jante) sobre la ventana de borrado. Dispositivos programables una vez (One-Time-Programmable: OTP) Los dispositivos OTP, se encapsulan en plistico y permiten que el usuario los programe una sola oman pts sates itracertrandree AARC ue ver, Si el programa se dafia o se tiene que cam- biar, hay que programar e instalar en el circuito un nuevo dispositivo. Dispositivos FLASH Un microcontrolador tipo FLASH permite mo- dificar el contenido de su memoria mediante una carga eléctrica. Esto significa que el sistema pue- de ser diseftado para programacién dentro del circuito. Como no requieren de una ventana de borrado, estos dispositivos tienen encapsulado plistico, lo que los hace muy econdmicos. Dispositivos EEPROM Un dispositivo EEPROM permite que su me- moria sea borrada mediante una carga eléctrica. Esto significa que el sistema puede disefiarse para que el borrado y el reprogramado puedan hacer- se dentro del circuito. Tampoco requieren venta- na de borrado y se encapsulan en plistico, Dispositivos ROM Los dispositivos ROM tienen su memoria de programa establecida desde el momento de su fabricacién. Como ella no puede cambiarse, es- 10s dispositivos tienen la presentacién en plisti- co més econémica del mercado. DIE Esta opcién permite el desarrollo de tarjetas muy pequefias. La fabricacién con DIE requiere equi- os y conocimientos especiales, lo que implica que el ntimero de casas fabricantes que soportan esta tecnologfa sea limicado. Servicios especiales Para algunos usuarios que incorporen la tecnolo- gla OTP, debido a un cédigo fijo para sus produc- tos, Microchip offece dos encapsulados especia- les: la programacién répida para produccién y la programacién serial répida para produccién. Ellas les permiten a estos usuarios ahorrar mucho tiem- po en el proceso de fabricacién de sus productos. a. Programacién répida para produccién (QTP: Quick Turn Production ) iS Microcontroladores Pic Microchip oftece este servicio de programa- cién para ordenes grandes de produccién de empresas 0 usuarios, que no posean un me- dio masivo de programacién de MCU. Estos dispositivos son idénticos a los OTP pero con todas las posiciones de la EPROM, y las op- ciones de configuracién ya programadas. b. Programacién serial répida para produccién (SQTP: Serialized Quick Turn Production ) Microchip oftece este servicio de programa- cién en el cual a cada dispositivo se le progra- ma un mimero serial tinico. Estos ntimeros s riales pueden ser aleatorios, pseudoaleatorios © secuenciales. Este tipo de programacién se hace para que cada dispositive tenga un niimero tinico que pueda utilizarse como cédigo de entrada, password o miimero de identificacién. PROGRAMADORES Y ENTRENADORES (Trainers) Los programadores son dispositivos que permiten grabar en la memoria del microcontrolador el pro- mputadora. Algunos programadores trabajan conectindose al puerto paralelo como el K-220 de CEKIT, figura 4.43 y otros, conectindose al puerto serial como los que se muestran en la figura 4.5. grama escrito y ensamblado en | Un entrenador es un dispositive que permite realizar una serie de pricticas con microcontrolado- res. Se compone de una serie de médulos indepen- dientes que se pueden interconectar entre s/y con los cuales se facilita el aprendizaje de las pricticas mds Figura 4.4 Programador por puerto paleo, K-220 de CEKIT Figura 4:5 Programadores por el puerto serial a) Programador K-224 de CEKTT )PICSTART Plus de Mirochip 6) Programador Clear View Mathias comunes y fundamentales que se deben asimilar en esta tecnologia. El K-148 de CEKIT, figura 47, es un entrenador que tiene médulos como el de manejo de displays de siete segmentos, la ad quisicién de variables andlogas y comunicaciones seriales, entre otros. Figura 46 Entrenador para microcontoladores PY, referencia ‘K-148 de CEKIT ® GCI: 01100 80100 so10 mexvcenrvzcees LOS MICROCONTROLADORES MOTOROLA Esta familia de microcontroladores es una de las mas difundidas y utilizadas en todo el mundo. Sus aplicaciones incluyen las comu- nicaciones, el control, la electrénica automo- triz, etc. En esta leccién haremos una intro- duccién a sus aspectos mds importantes como las familias en que estan divididos, sus jas y en general, da- remos un rdpido vistazo a esta tecnologfa. Curso prctco sobre Merocontrolsdores MQRC 'T. & caracteristicas, sus venta = kus microcontroladores Motorola Los microcontroladores Motorola tienen la reputacién de ser muy confiables, ficiles de pro- gramar y, ante todo, ser unos de los mas u dos en todo el mundo. ¥ no es de extrafar ya que esta firma es lider en la fabricacién de semi- conductores, especialmente microprocesadores, microcontroladores y productos de ata tecnolo- gia. La cantidad de familias y referencias que poseen estos dispositivos permiren que los dise- fiadores puedan escoger el ms apropiado para cada tarea specifica que se deba realizar. Como dato curioso, pero que a la vez confirma la cali- dad y versatilidad de estos microcontroladores, es que en un auromévil moderno se encuentran hasta 50 de ellos, realizando diferentes funciones como el control de frenos (ABS), en el sistema de seguridad, en las computadoras de viaje (GPS), en el control del aire acondicionado, etc. a Las familias de microcontroladores Motorola mds conocidas son: 68HC05, 68HC08, 68HC11, 68HC12, 68HCI6, 683XX, MPCSXX y la fa- milia de mticleo M (Core M). Cada una de ellas tiene muchas referen: intas, las cuales pue- den variar por el tamafio de la memoria que po- seen, el ntimero de pines, caracteristicas especiales como convertidores A/D, temporizadores, inte- rrupciones, ete. Como un ejemplo de esta gran variedad, la familia de microcontroladores 68HCOS posee mas de 100 miembros. Como el tema es tan amplio, en lecciones posteriores trata- remos principalmente la familia 68HCO8, que es Ja més indicada para iniciarnos en esta tecnologia y haremos una breve descripcién de las familias 68HCI1 y 68HC12. La familia HCOS Esta es una de las familias de microcontrolado- res més populares en el mundo, con mas de 2 billones de unidades vendidas. Posee una ven- taja adicional y es la compatibilidad de sus pro- gramas con la familia HC08, lo que permite hacer migracién de disefios hacia dispositivos de més alto rendimiento de una manera ficil y répida. Cuando se especifica una referencia en particular, ésta puede sufrir algunas variantes y ® atin as{ corresponder a un dispositive 100% compatible. Por ejemplo, hay un microcontro- lador 68HC705KJ1, otro 68HC805K]J1 y otro 68HC905KI1. La diferencia radica en que el primero (705) tiene memoria de programa tipo EPROM, el segundo (805) memoria de progra- ma tipo EEPROM y el tercero (905) memoria FLASH. Lo que sf queda claro es que existe una gran variedad de referencias para escoger; esto implica que el disefiador debe estudiar a fondo para decidirse por la més adecuada. En la figu- ra 5.1 se muestra el diagrama de pines de uno de estos microcontroladores. aggaaiedl Be2z2222 i Figura 5.1 Diagrama de pines del 68HC7OSK1 Los aparatos en que se pueden encontrar estos microcontroladores son muy variados y en ramas bien diferentes. Estas categorias incluyen dispositivos para aplicaciones automottices, pro- ductos de consumo, comunicaciones, compu- tadoras y aplicaciones industriales, entre otras. A continuacidn haremos una breve descripeién de algunas subfamilias o divisiones que tiene la familia HCOS. O8HCO05-B. Es un dispositive de propésito general cuyas principales ventajas son un po- deroso temporizador y una memoria para da- tos tipo EEPROM de 256 posiciones. Orras caracteristicas incluyen memoria de programa desde 4K hasta 32K, memoria RAM desde 176 hasta 528 bytes, 8 canales A/D, comunicacin serial no sinerénica, ete. 68HCO05-C y G8HCO5-D. Son elementos de propésito general cuya principal ventaja es su temporizador de 16 bits, el cual esté acompana- do por un médulo de captura y un médulo de (Curso préctico sobre Microcontroladores comparacién. Ademis, ofrece tamafios de me- moria de programa desde 4K hasta 16K, que lo capacitan para realizar tareas bastante complejas. Posee interfaz de comunicacién no sinerénica SCL (Serial Communications Interface), con velocidad ajustable por programa desde 75 Hz hasta 131 KHz; también incluye una interfaz. SPI (Serial Periferical Interface) de 4 hilos y alta velocidad. El watchdog timer o circuito de vigilancia tam- bign es una de sus caracterfsticas importantes. 68HCO5-] y 68HC05-K. Estas son las fami- lias de més bajo costo y vienen en encapsula- dos de 20 y 16 pines. El tamafio de su memo- ria de programa va desde 0,5K hasta 2K, con memoria RAM de 32 hasta 128 byes. El mi- crocontrolador 68HC705KJ1 es el mas eco- némico de todos. 68HICO5-P Es una familia de microcontrolado- res de propésito general de 28 pines, poseen me- moria de programa desde 2K hasta 8K con me- moria RAM desde 96 hasta 192 bytes. municacién serial no sincrénica, temporizador de 16 bits con médulo de captura y de compara- én, convertidor A/D de 8 bits con 4 canales de ‘entrada y capacidad de manejar alta corriente en algunos pines. O8HCO5-L. Su principal caracteristica es que posee un controlador para manejar una pantalla de cristal iquido 0 LCD, con un tamafio que va desde 8 caracteres por 4 filas hasta 16 caracteres por 60 filas. La memoria de programa va desde 06K hasta 24K con memoria RAM de 32 hasta 768 bytes. Incluye temporizador de 16 bits con meédulos de captura y comparacidn, comunica- in serial sincrénica y no sinerénica. jenen co- La familia HCO8 Estos microcontroladores permiten una ficil mi- gracién del cédigo desde el HC0S, poscen una velocidad interna hasta de 8 MHz, una pila de 16 bis instrucciones de multiplicacién y una memoria de 64K para programa y datos; su dise- fio minimiza el consumo de potencia. Hay ver- siones con memoria FLASH y EPROM. En la figura 5.2 se muestra el diagrama de pines de uno de estos microcontroladores. a rst ws pro 9e1 rs, sce) FI Pro P03 Pr fd F103 Fra rer 86 rs rm rs Fura 8.2 Diarara do pins dol 684C908IK3 Las principales subfamilias de la HCO8 son: 68HCO8 AS. La principal caracteristica de esta subfamilia es que incorpora un controlador de bus multiplexado que permite una avanzada comuni- cacién serial. Una aplicacién tipica de este siste- ‘ma esti en los automéviles, donde muchos mi- crocontroladores se pueden comunicar sobre un bus de uno o dos hilos para el diagnéstico de cada tuna de las operaciones del vehiculo con un riesgo mfnimo de interferencia o ruido en los datos. 68HC08 AZ. Esta subfamilia contiene una in- terfaz CAN. Esta es un protocolo muy popu- Jar en redes de automatizacién industrial y re- des automotrices. 68HC08 GP. Esta familia es muy recomendada para aplicaciones de propésito general, cuenta con memoria FLASH, convertidores A/D, puer- tos seriales sincrénicos y no sincrdnicos, PLL, temporizadores y PWM. 68HC08 J. Esta subfamilia brinda unas poderosas caractersticas y es especial para aplicaciones de pro- pésico general donde se requieran disefios de bajo costo. Se encuentran disponiblesen encapsuilados de 20 y 28 pines, memoria FLASH 0 ROM, conver- sores A/D, entre otros. Las versiones JK, por ejem- plo el 68H1C908)K3, son parte de ella 68HC08 MP y MR. Estas subfamilias incorporan un sistema avanzado de PWM de 6 canales y 12 bits, convertidores A/D y puertos seriales, que las hace ideales para el control de motores trfisicos. 68HC908KX8/2. Esta subfamilia posee integra- dos con memoria FLASH de? hasta 8Kbytes, 196 bytes de memoria RAM, un temporizador de 2 ees prloken eee Weaeoeetslnteron cexrr: @> Hos Microcontroladores M i) canales y 16 bits, cuatro canales de conversién AID, interfaz de comunicacién serial no sincré- nica y més de 13 pines I/O, 68HC90SRK2. Esta subfimilia cuenta con 2K de ‘memoria FLASH programable dentro del sistema, 128 dytes de memoria RAM, un temporizador de dos cae rales y 16 bis, y un voltae de operacién de 1.8 V. La familia HO11 Esta es una familia de microcontroladores de 8 bis de muy alto rendimiento, su arquitectura es compa- tible con la HCOS y su programacién es compatible con la familia de microcontroladores de 16 bits 68HC12; esto hace que la migracién de disefios de ‘una familia a otra sea bastante ripida. Dentro de us caracteristicas mis sobresalientes se encuentran: + Ha sido optimizada para un bajo consumo de potencia + Posee un sistema de interrupciones muy avanzado + Muchos de sus miembros poseen memoria EEPROM * Los tiltimos miembros de esta familia incluyen un coprocesador matematico con Unidad Aritmética Légica (ALU) de 16 bits para répidas operacio- nes de multiplicacién y divisién * Un registro acumulador de 16 bits, o dos de 8 bits * Seis modos de direccionamiento La familia 68HC1 posee un miembro llama- do 68HC1IE9, el cual fue el primer microcontro- lador en incorporar memorias EPROM y EE- PROM en ef mismo circuito integrado; adem: incluye otras caracteristicas como son 12K de me- moria EPROM, 512 ytes de EEPROM, 512 bytes de RAM, interfaz SCI, convertidor A/D de 8 cana- les/8 bitsy 38 pines de entrada/salida, Este micro- controlador es muy utilizado por los experimenta- dores en robstica. Dentro de los G8HICI se tie- nen seis principales series de microcontroladores todas cuentan con puertos seriales SCI y SPI, me- moria EEPROM y ADC; ellas son: 68HC 11 D. Esta serie ofrece una alternativa econé- mica para aplicaciones donde no se requieran fun- cciones avanzadas, ni mucha cantidad de memoria. runs Figura 5.3 Diggrama de pines del 68HC11 6SFICLL F. Fue la primera en combinar EEPROM y EPROM en un solo circuito integrado, G8HCI1 F Tienen buena capacidad de pines 1/ O, memoria RAM de IK y un bus de SMHz, G8HC11 K y KS. Son dispositivos muy pode- rosos; el 68HC11K4 y el G83HCIIKW1 ofte- cen alta velocidad, MMU (unidad para el ma- niejo de memoria) y PWM. 68HCI11 P. Esta serie ofrece PLL, buena me- moria y tres puertos seriales. En la figura 5.3 se muestra el diagrama de pines de el microcontro- lador MC68HC11A8. La familia HO12 Este es un poderoso microcontrolador de 16 bits y segiin Motorola rune lo mejor del 68HCI1 y mucho més. Entre sus principales caracteristicas se encuentran: * Bajo consumo de potencia y operacién a bajo: voltaje + Memorias Flash y EEPROM en un solo cir- cuito integrado + Instrucciones de légica difusa (Fuzzy Logic) @ Seerr: ess ese er ear enee * Bus de datos de 8 6 16 dies * 64 nuevas instrucciones adicionales a las ya conocidas del 68HC11 * Unidad Aritmética Légica (ALU) de 20 bits * Convertidor A/D de 8 canales/8 bits *PWM Dos de los principales miembros de la fami- lia 68HC12 son el 68HC812A4 (A4) y el 68HC912B32 (B32). Ambos se basan en una CPU12, mds una serie de médulos periféricos adi- cionales. E1 B32 fue el primer microcontrolador de 16 bits con memoria FLASH EEPROM en su in- terior. En la figura 5.4 se muestra el diagrama de pines de uno de estos microcontroladores G8HIC812A4, Sus principales caracteristicas son una CPU de 16 bits, 1 Kde RAM, 4K de EE- PROM, dos interfaces seriales (SCI) y una inter- faz, serial periférica (SPI), un temporizador y con- versores A/D. 68HC912B32. También posce una CPU del6 bits, 32 K de flash EEPROM, 1K de RAM, 768 bytes de EEPROM, interfaces SC porizador de 8 canales, conversores A de cuatro canal HC912DG128. CPU de 16 bits, altamente compatible con el HC11, ALU de 20 bits, villa ere Figura 54 Diagrama de pines del 68HC912832 Lelie) 128K de flash EEPROM, 2K de EEPROM, 8K de RAM, dos conversores A/D, dos tem- porizadores de 8 canales y 10 bits de resolu- cién, filtro pasabajo, médulos CAN, cuatro ca- nales PWM, médulo contador de 16 bits, in- terfaces seriales SCI, SPI, I2C, etc. La familia HC16 También se basa en una CPU de 16 dats. Su con- junto de instrucciones soporta lenguajes de alto nivel. La CPU de 16 bits es compatible con los microcontroladores HCI, algunas de sus prin- cipales caracteristicas son: + Funciones de procesamiento digital de sefiales (DSP) + 1 Mbyte de espacio para memoria de programa + 1 Mbyte de espacio para memoria de datos + 2acumuladores de propésito general de 16 bits © 3 registros indice de 16 bits esta ante interrupciones * Médulo CAN * Versiones de 16, 20 y 25 MHz * Convertidor A/D Las principales variaciones dela familia HC16 son: 68HC16 Z. Es la més adecuada para aplica- ciones con mucha memoria y que utilicen co- municaciones seriales y funciones andlogas. G8HC16 Y. Esta familia integra en los circui- tos memoria FLASH o ROM, unidad de pro- cesamiento de tiempo, tres interfaces series (dos SCI y un SPI) y convertidores A/D. G8HC16X y B. Son de bajo costo, memoria FLASH, médulos seriles y funciones andlogas, La familia NUCLEO M (M CORE) Estos poseen una arquitectura RISC de 32 bits, instrucciones de 16 bits, permiten la emula- cién gracias a su arquitectura interna y poseen un disefio para bajo consumo de potencia. La familia MPC5XX ‘Tienen arquitectura de 32 bits, reloj a40 MHz, care ica srs macenrsmasrso( GDC] x: @ Motorola unidad para el trabajo de operaciones de punto florante, interfaz para la emulacién, etc La familia 683XX Estos microcontroladores estin disefiados para soportar lenguajes de alto nivel, cuentan con 16 Mbytes de memoria de programa, poseen un bus dindmico de 8 6 16 bits, y vienen en versiones de 16MHz, 20MHZ 6 25 MHz. Las principales subfamilias de esta categorfa son: 68331 y 32. Son subfamilias especiales para apli- caciones donde se requiere mucha memoria, cuentan con puertos scriales y médulos avanza- dos de temporizacién; la 68CK338 cuenta ade- més con un reloj en tiempo real y un médulo temporizador de 20 canales. Las subfamilias 68336/68376 se componen de dispositivos di- sefiados para trabajar bajo condiciones atmosfé- ricas complicadas, al igual que donde se requie- ran altas velocidades, comunicaciones seriales, redes CAN y sistemas sofisticados de adquisicign desde miiltiples fuentes. Sistemas de desarrollo Motorola y muchas empresas independientes de desarrollo clectrénico, tienen disponible una gran variedad de herramientas para trabajar con estos dispositivos. Entre ellas se cuentan, emuladores, analizadores légicos, programadores, tarjetas de evaluacién, simuladores, compiladores en lengua- je C, sistemas operativos en tiempo real, ensam- Figura 8.5 ‘Sistema de desarrollo de Motorola para ef 684005 bladores y depuradores. ‘Todos estos elementos permiten desarrollar, monitorear, probar y depu- rar su cédigo, para que las aplicaciones funcio- nen bien y répido, Existe una gran cantidad de modelos, los cuales se ajustan a las necesidades y presupuestos disponibles, figura 5. Algunos de estos dispositivos son de bajo costo, pero a pesar de ello ofrecen muchas ven- tajas, como por ejemplo, capacidad de emula- cidn en el circuito de la aplicacién y, aunque esta tarea no se ejecute en tiempo real, es de gran ayuda para agilizar el trabajo y disminuir el tiempo de desarrollo de los programas. Otras caracteristicas son: + Ambiente de desarrollo totalmente integrado bajo Windows + Se puede examinar y modificarla memoria, los registros y los pines de entrada/salida * Acepta hasta 64 breakpoints (puntos de parada) + Diferentes modos de jecucién en pasoso de cortido * Programa microcontroladores OTP y EPROM. * Conexién serial @ la computadora CEKIT S.A., como empresa lider en el dise- fio y fabricacién de mat ponible un sistema de desarrollo muy econémi- coy ficil de utilizar para la familia 68HC908)K3, figura 5.6, cuya construccién, ensamblaje y uti- lizacién seran explicados en deralle en uno de los proyectos que forman parte de este curso. Figura 8.6 Sistema de desarrolo CEKTT para el microcontrolador| ‘68HC908.K3 ® GBICIT: x30 ptct00 sore Miroconlaores Daremos un vistazo répido a estas tres marcas que también son ampliamente utilizadas, algu- nas por su potencia, otras por su facilidad de manejo. De cualquier manera, se constituyen en excelentes opciones para el desarrollo de pro- ductos electrénicos. El microcontrolador 8051 de INTEL y las versiones que de él se derivan, han obtenido en el medio industrial un éxito indiscutible, los ATMEL son muy utilizados en aplicaciones médicas y en redes de automatiza- cién, y los BASIC Stamp son muy apetecidos por la facilidad en su programacién. opr ste Mcocontaadoes CAGMCHTE: iEoStmicrocontroladores INTEL, ATMEL y BASIC Stamp Microcontroladores INTEL A comienzos de los afios 80 Intel propuso el modelo de microcontrolador denominado 8051. Esta primera versién tenia tres varian- tes: el 8051 propiamente dicho, dotado de una memoria ROM interna programada en fabrica; el 8751, equipado con una EPROM; y el 8031, desprovisto de cualquier tipo de memoria permanente (ROM). Esta primera serie se completé répidamente con la versién 8052. A este tiltimo microcontrolador, muy parecido al 8051, se le afiadié un periférico (un tercer temporizador) y 128 byzes de RAM interna, Tambien existe una version del 8052 que contiene un intérprete de lenguaje BA- SIC en su memoria ROM. As{ naci6 la famosa familia 51, la cual se com- pleté con otros miembros. Todos estos micro- controladores se han conccbido bajo un mismo nticleo. Esta caracteristica motivé a varios fabri- cantes (SIEMENS, MHS, OKI, PHILIPS, etc.) a firmar acuerdos gracias a los cuales pueden fa- ‘Figura 6.1. Microcontroladores PHILIPS. Su nicea es of 8051 bricar microcontroladores basados en la misma arquitectura 8051 o a producir nuevas versiones mejoradas del mismo circuito integrado, incor- porindoles nuevos periféricos, figura 6.1 Nucleo 8051 En la figura 6.2 se aprecia el diagrama de blo- ques y el diagrama de pines del 8051. En él se puede apreciar la CPU y una RAM interna de 28 dyres; adicionalmente hay que distin- guir aqui la posibilidad de direccionamiento ‘ara ae mirocoordore NOS 61 de MTEL (RT) ee o @, i pf act | we ™ + | ssere| (tis | east | eosont | arson} ex jase] a | afaz| 1 | asa] sxcsa|ecsra|eresa] ox | ase [r) af 72] 1 Pet nn Ponca HT ‘escast | s0casy ae fie] 2 | rf se 1 I 7 poets: Tam dmc AES TD) 1 eosas | 90515 ex | 256 [sewor] 6] 14] 4 12ai2 8 eetracdes anakigicas de 8 bits; 4 salcas PWM ] =a | rsp cocsr | esr | me for] rfc] 2 | same] | eet Suen cn apport ttre, cb Wt goose coor Jess] | sex_|zlscvor| 7] vee] 2 | sare | [rninemeecasvo comrade 15 [ Ta ae micceins FHLPS To 1 war fees [wos] x [a] 7] | wm | aye] 2 cocse | acs | arse | sex | sie| | 6 | |uumreouy) xe | senor | cxosene tc sais eta ees co sxx | esa | aes | sox | se] | 4| | rere) 16.2074 anor Tabla 6.1 Gama de microcontoladores 8051 y algunos dervados Curso préctico sobre Microcontroladores Interupeién externa | => ep | a & eee Direcciones/Datos aw pio rem Phy 00 100 Prat pa 90 pial 02 902 ria Poa a0 ms Pad aos ris POs ADs pr P06 208 sr Pa 207 Ro ra Epp To mas LP iit sz 7 ira Per ats To rss 26 ate meas 25 ats Wins ea at2 ar aan xm 22 m0 xmLy P21 99 vss 720 ‘Figura 6.2 Diagrama de bloques y de pines el 6051 de memorias externas, en esos casos uno de sus puertos debe utilizarse en esa funcidn, cambiando su caracteristica como puerto a bus externo. El 8051 contiene, entre otros, un puerto serial y dos temporizadores de 16 bits. En la tabla 1.1 se encuentran algunos de los modelos mas representativos de esta familia. : Todos los fabricantes tienen disponibles los micro- controladores 8051, 8052 y sus versiones CMOS en en- capsulado DIP de 40 pi- nes o patillas. Algunos los ofrecen en otros encapsu- lados. Dentro de sus nes podemos destacar el pin FA el cual es una en- trada que permite confi- gurar el microcontrolador para sistemas con buses externos. Posee tres puer- tos: el puerto 0 cuyas neas son de colector abier- to, el puerto 1 quien po- see resistencias internas de pull-up, el puerto 2 tam- bién con pull-up y el cual es utilizado durante el acceso a la memoria externa. Por tiltimo esté el puerto 3 que posee funciones adicionales asi: Entradas de contadores, 3 8 * P3.0 RXD entrada de interfaz serie + 3.1 TXD salida de interfaz serie + 3.2 INTO entrada para interrupcién externa + P3.3 INTI entrada para interrupcién externa * P3.4.TO entrada de contador para el tempori- zador 0 + 3.5 TI entrada de contador para el temporiza- dor 1 + P3.6 WR salida de escritura de la memoria externa + RD salida de lectura de la memoria externa En una leccidn posterior explicaremos en de- talle este microcontrolador. Microcontroladores ATMEL Los microcontroladores ATMEL, figura 6. han tenido una gran acogida en el mercado; de ellos se pueden destacar tres familias, la primera esta basada en el 8051, la segunda es la AT91 ARM Thumb y por tiltimo, los AVR. Veamos ahora un poco de cada uno de estos grupos. cont eens enema fexcrr: @ | EUS muctocontroladores INTEL, ATMEL y BASIC Stamp. roo (50% or 86 mas} wn P85 mas) wm) Poe oo) ro Pe os P82 «Poa 1 a) os 80 0) ou P08 EET ros ver ort P82 7) ta Po Pe iuTDAR ou P80 xn) Figura 6.3 Microcontroiadores ATMEL AVR Basados en arquitectura 8051 ATMEL Offece una I{nea de microcontrolado- tes basados en la arquitectura 8051, con memo- ria de programa FLASH dentro del circuito in- tegrado, al igual que versiones OTP, AT91 ARM Thumb Los microcontroladores AT-91 son microcontro- adores de 32 bits lo que permite el desarrollo de protocolos de comunicacidn, compresién de da- tos y control, Cuando se construye un producto clectrénico alrededor de un nticleo ARM se ga- rantiza la durabilidad y calidad del mismo. Los microcontroladores AT91 son muy apete- ids para aplicaciones de bajo consumo de potencia y otras en tiempo real; se han hecho aplicaciones ‘muy exitosas en automatizacién industrial, disposi- tivos MP3, productos para la adquisicién de datos, equipos médicos, GPS y sistemas de redes. La serie AT91 cuenta con un amplio con- junto de herramientas de programacién de alto nivel, como compiladores de lenguaje C, emula- dores y sistemas operatives en tiempo real. Microcontroladores AVR Son microcontroladores de 8 bits cuyas instruccio- nes s¢ ejecutan en un solo ciclo de maquina. Cuen- tan con oxciladoresinternos, temporizadores, UART, SPI, resistencias de pull-up, PWM, ADC, compara- dores andlogos, ete. Dentro de los més representati- vos estin los A Tiny 10, 11 y 12, microcontrolado- res FLASH de 1K de memoria de programa, 64 bytes de RAM y programables dentro del circuito. Microcontroladores BASIC Stamp La empresa Parallax Inc. produce estos micro- controladores que son muy potentes y_poseen unas herramientas de programacién que los hacen muy ficiles de manejar. Con ellos el dise- fiador no requiere de conocimientos avanzados cn electrdnica digital, ni en microprocesadores, nin el desarrollo de programas en lenguaje en- samblador, entre otros. Por esta razén estén sien do ampliamente utilizados por estudiantes des- de el colegio hasta la universidad, por aficiona- dos, técnicos e ingenieros de diferentes ramas y, ademas, se han popularizado mucho en el cam- po de la robética experimental. Los BASIC Stamp son pequefias compu- tadoras construidas en una tarjeta de circuito impreso, figura 6.4 y su principal caracteris- tica es que ejecutan programas escritos en un lenguaje muy similar al tradicional lenguaje BASIC, llamado PBASIC. Su forma de tra- bajo es muy simple: segtin el circuito que se quiera controlar, el disefiador escribe su pro- grama en la computadora, lo compila y lo lle- va hacia el microcontrolador a través de un cable de conexién que se ha preparado pre- viamente. El microcontrolador recibe dichas instrucciones y las almacena en una memoria Figura 6.4 Microcontoladores BASIC Stamp 0) MERCER: oa pcs con ori EEPROM, de donde las lee para ejecutarlas secuencialmente. Los BASIC Stamp I y Il incluyen un micro- controlador de la familia Microchip Scenix, el cual esté grabado previamente con un interpreta- dor de cédigos que le permite tomar los datos que se han pasado desde la computadora y ejecurar las 6rdenes correspondientes. También poseen una memoria EEPROM serial donde se almacena el programa recibido y que se debe ejecutar; un re- gulador de voltaje, su respectivo circuito oscilador y un sistema de reinicializar (reset) muy eficiente. Los BASIC Stamp han evolucionado répida- mente desde su creacién. El primer modelo dis- ponible, conocido con el nombre de BASIC Stamp simplemente, posce un PICI6C56 como chip in- terpretador y una memoria EEPROM serial 93LC56 donde se almacena el programa. Este sis- tema, incluye un conector para bateria de 9 vol: tios, donde se debe conectar la alimentacién ex- erna; también incluye un 4rea de circuito impre- so, libre para hacer prototipos y, por supuesto, los pines donde se conecta el cable que viene desde la computadora y a través del cual se descarga el pro- grama que ha escrito el usuario, Este cable se co- recta al puerto paralelo de la computadora. En la figura 6.5 se muestra este modelo de BASIC Stamp con su respectivo cable de programacién. 1 BASIC Stamp 1 Este microcontrolador presenté un avance sustancial respecto a su antecesor ya que est Figura 6.5 Modelo original de BASIC Stamp con su cable de programacion ico construido con tecnologia de montaje super- ficial, lo que significa un ahorro de espacio muy importante en la aplicacién final. En la figura 6.6 se muestra su aspecto fisico. Como se puede apreciar, posee un circuito integra- do interpretador basado en un PICI6C56 y una memoria serial, un regulador de voltaje que permite alimentar el sistema con una fuente de 6 a 15 voltios y un sistema de reset que reinicializa el funcionamiento del micro- controlador en caso de que la fuente del si tema caiga por debajo de 4V. Figura 6.6 BASIC Stamp | Como se puede apreciar en la figura 6.7, este sistema posee 14 pines organizados en una sola fila; de ellos, ocho se pueden utilizar como entradas 0 salidas individuales, posee un pin de reset, una entrada para alimentacin con fuente regulada de 5V, una entrada para ali- mentacién con fuente no regulada de 6 a 15 voltios, pin de tierra, y los pines de programa- cién a través de los cuales se comunica con la computadora. En la figura 6.8 se muestra la configuracién del cable necesario para la pro- gramacién; éste se debe conectar al puerto pa- ralelo de la computador Una alternativa muy préctica para montar los prootipos o circuitos de prueba con el BA- SIC Stamp 1, es utilizar la tarjeta de prototipos (carrier board) disefiada por Parallax, en la cual se dispone de un conector para la fuente de ali- mentacién, un circuito impreso para montar ‘otros componentes y el conector para la respec- tiva programacién, En la figura 6.9 se muestra el disefio de dicha tarjeta. BSTC Rev 8 Figura 6.7 Dstibuclén de pines del BASIC Stamp | En lo que respecta a la programacién del mi- crocontrolador, se deben tener en cuenta varios aspects. El primero, tiene que ver con el progra- ma (sofiware) que se ejecuta en la computadora y que permite hacer todo el desarrollo de la aplica- Los microcontroladores PIC poscen carac- teristicas que los hacen muy competitives den- tro del mercado global de la electrénica. Entre ellas se encuentran su arquitectura Harvard y su reducido conjunto de instrucciones (RISC: duced Instruction Set Computer), veamos los pun- tos mas representativos de esta tecnologia. Arquitectura Harvard Este tipo de arquitectura se caracteriza por tener la memoria de programa (ROM) en un bloque separado de la memoria de datos (RAM). De la ‘misma manera, cada una posee su propio bus para comunicarse con los demés elementos del micro- controlador. Los disefiadores han aprovechado esta caracteristicas para implantar un busde 8 bits para conectar la memoria de datos y un bus de mas de ocho dits para ser conectado a la memoria ROM donde se encuentran las instrucciones. De esta forma se hace un uso mas eficiente de la memoria de programa, porque ella puede estar optimizada para los requerimientos de la arquitectura. Poresta raz6n, esta arquitectura permite un mejor manejo de las instrucciones que la tradicional arquitectu- ra von Neumann, en la cual el programa y los da- tos se ubican en un mismo bloque, el cual se co- munica mediante un solo bus. Para ejecutar una instruccidn, una maqui- na de arquitectura von Neumann debe reali- zar uno o mas (normalmente mds) accesos al bloque de memoria a través de un bus de 8 bits; la raz6n es que existen inserucciones cuya dimensi6n o longitud en bits es mayor de 8 bits, superando la longitud del bus de datos. Adicionalmente, los datos deben buscarse dentro de la RAM y llevar a cabo operaciones de distintos tipos, todo por el mismo bus de 8 bits. Ast, al trabajar inserucciones y datos Harvard Von-Neumann oe PO Tiee tc eee tal por un mismo bus, se originaré demasiada congestién en éste. Caso contrario ocurre en la arquirectura Har- vard, en la cual una instruccién puede buscarse en un solo ciclo de instruccién, debido a que el dus que conecta la memoria de programa es de 14 bits. Al tiempo que la memoria de programa se esti accediendo, la memoria de datos, como cuenta con su propio bus, puede ser leida 0 escri- ta. Esta configuracién de buses separados permi- te que una instruccidn se ejecute al mismo tiem- po que se busca la siguiente instruccién. En la figura 8.1 podemos apreciar el diagrama bisico de ambos tipos de arquitecturas. Instrucciones de palabra sencilla (single word) Los microcotroladores PIC manejan instruc ciones de palabra sencilla (single word). Estas instrucciones se codifican y almacenan dentro dela memoria de programa con un tamafio de 14 bits; ese mimero las hace ideales para ser transmitidas por el bus conectado a dicha me- moria, el cual es precisamente de 14 irs. El hecho de que el busy las instrucciones tengan ambos 14 bits, permite que en un solo ciclo se ejecute una instruccién. Caso contrario ocurre en la arquitectura von Neumann; en ella las instrucciones por lo gene- ral son de miltiples bytes por lo que no es seguro que en cada posicién de memoria exista una ins- truccién valida, Manejo de las instrucciones (pipeline) Para agilizar el proceso de ejecucién de las ins- trucciones en los sistemas digitales, se ha disefia- do un sistema en el cual se empieza la biisqueda de una instruccidn a medida que se va completando la ejecucién de la instruccién precedente o ante- rior. Este tipo de conexién 0 se- cnencia se conoce con el nombre de pipeline (entubar, encauzar, di- Figura 6.1 Diagram de bloqus de as arquitectuas Harvard y von Neuman ‘igit © distribuir por tubes). @ Seer: Cure price sore Mercontiadres En los microcontioladores PIC se utiliza esta técnica y los procesos de busqueda y ejecucién se traslapan. La biisqueda de una instruccién toma un ciclo de maquina y la cjecucién se toma otro ciclo. Pero, en lugar de buscar la instruccin actual y ejecu- tarla instruccién previa, en cada ciclo de méquina se busca una instrucci6n al tiempo que se ejecuta otra, Debido a que el bus de la memoria de pro- grama tiene un tamafio de 14 bits, una instruc- Gidn se toma en un solo ciclo de maquina, y se gjecuta en otro ciclo, Si el resultado de la ins- truccién modifica el contenido del contador de programa, puede existir un pequefo retardo de un ciclo, el cual debe corregirse dentro de la se- cuencia, este caso lo estudiaremos més adelante. Conjunto reducido de instrucciones Los microcontroladores PIC se clasifican dentro de la categoria RISC (Reduced Instruction Set Computer); esto quiere decir que se requieren pocas instrucciones para llevar 2 cabo cualquier tarea. Es de resaltar aqui que un conjunto redu- cido de instrucciones puede ser aprendido mas rapido por el usuario. ‘ } lo} oot reve el os} os! at} ae} |e ali Estructura interna dividida en registros La memoria de datos de los microcontroladores PIC se divide en registros, cada uno con una ubicacién determinada, lo que permite que puc- da accederse a cualquier parte de ella a través de direcciones. Existen algunos registros que cum- plen funciones especiales los cuales también se encuentran ubicados dentro de ella en posicio- nes determinadas, como veremos en la siguiente leccién denominada “La memoria en los micro- controladores PIC”. Instrucciones ortogonales (simétricas) Lasinstrucciones de los microcontroladores PIC han sido disefiadas para que cumplan con cierta ortogonalidad o simetria; esto quiere decir que para cada instruccién existe otra instruccién si- meéarica que cumplela labor complementaria; esta caracterfstica también ayuda a facilitar el apren- dizaje de las instrucciones. Las instrucciones ortogonales hacen posible llevar a cabo cualquier operacion sobre cualquier registro usando algtin tipo de direccionamiento. La naturaleza simétrica y la ausencia de instruc- rors Busca narucin POH) t Tecra inarecn PO) Busca nstrcin P02) esta srucn PO) Figura 8.2 Flujo de ejecuciin de una instuccién csp ste Meese cexrr: > Cee ey ciones especiales, (como ocurte en otros micto- controladores tipo CISC, quienes cuentan con numerosas instrucciones, donde algunas de ellas cumplen con labores muy puntuales o especiales), hacen que la programacién sea muy simple y ciente, ala vez que la curva de aprendizaje se re- duce significativamente. El ciclo de instruccién La seftal de entrada de reloj (pin OSC1) se divide internamente por cuatro, generando cuatro pul- sos periédicos en cuadracura (desfasados) deno- minados QI, Q2, Q3 y Q4. Internamente el cor tador de programa (PC) se inerementa cada vez que aparece QI, la instruccién se busca en la me- moria de programa y se almacena dentro del re- gistro de instrucciones en Q4. Luego la instruc- cidn se decodifica y se ejecuta durante el siguiente ciclo de QU a Q4. En la figura 8.2, se ilusera el flujo de la ejecucién de una instruccién. Un ciclo de instruccién esté formado por cua tro ciclos Q (QU, Q2, Q3 y Q4). La operacién de biisqueda requiere de un ciclo de instruccién mien- tras hace la decodificacién y la operacién de ejecu- cién toma ouro ciclo de instruccién. Debido al ‘manejo que se le hace alas instrucciones (pipeline), cada instruccién se ejecuta efectivamente en un ci- lo. Siuna instruccién hace que el contador de pro- grama se modifique, (por ejemplo un GOTO) en- tonces se requiere de un ciclo extra para completar Ia instruccién, ver ejemplo 1. La operacién de bisqueda de la instruccién empieza en QI inerementado el contador de pro- grama. En el ciclo de instruccién, la instruccién qero__revt Busca 1 | cute ree Bea? buscada es almacenada dentro de un registro de instruccién (IR) en el ciclo QU. En ese momento ella se decodifica y se ejecuta durante los ciclos Q2, QB y Q4. La memoria de datos se ha leldo durante el ciclo Q2.y se ha escrito durante el ciclo Q4. En el ejemplo 1 se muestra la secuencia de operacién (pipeline) de una insteuccidn, En TCYO se busca la primera instruccién en la memoria de programa; en TCY1 ésta se ejecuta mientras se busca a segunda. Durante TCY2, la scgunda ins- truccién se ejecuta mientras se busca la tercera Durante TCY3 se busca la cuarta instruccién mientras se ejecuta la tercera (CALL S_1). Cuando se ha terminado la ¢jecucién de la ter= cera instruccién, la CPU hace que la direccién de la cuarta instruccién se lleve a la pila cambiando el contador de programa (PC) a la direccién de S_1. Esto significa que la instruccién que se buseé du- rante TCY3, debe ser nivelada desde el pipeline Durante TCY4 se nivela la cuarta instruc- in (se ejecuta como un NOP: inscruccién de no operacién) y se busca la instruccidn ubicada en la direccién S_1. Finalmente, durante TCYS, se ejecuta la quinta instruccién y se busca la ins- truccién presente en la direccién S_1 + 1. Formato general de una instruccién Las instrucciones en los microcontroladores PIC de rango medio pueden ser clasficadas segxin cuatros formavos generales, como se muestraen ka figura 8.3. Los cédigos operativos (opcades) de las instrucciones varian entre 3 y 6 bits. Este tamafio variable de los apcodes permite establecer 35 instrucciones. Reloj de las instrucciones Cada ciclo de instruceién (TCY) comprende cuatro ciclos Q (QI- Q4). El tiempo del ciclo Qes el mis- mo que el ciclo de tiempo del osei- lador del dispositive (TOSC). Los Eee 81) ciclos Q son los que dan la pauta para la ejecucién de cada uno de los Eiemplo 1 Secuencia de bisqueda y eecucién dels instucciones procesos de decodificacién, lectura, eR 276 Seen ee hana 09 76 ie eee 110 procesamiento de datos, escricura, etc., de cada ciclo de instruccién, figura 8.4. Los cuatro ciclos Q que conforman un ciclo de instruccién (TCY) se pueden generalizar asi: QU: Ciclo de decodificacién de la instruccién Q2: Ciclo de lectura de datos de la instruccién Q5: Procesamiento de datos QU: Ciclo de escritura de datos de la instruccién Conjunto (Sef) de instrucciones Los cédigos de méquina o conjunto de instruc- ciones que la CPU reconoce, se muestran en la tabla I (al igual que los neménicos que el progra- ‘ma ensamblador usa para generar estos cédigos). La ALU y la CPU La unidad central de proceso (CPU) es la respon- sable de utilizar la informacién de la memoria de programa (instrucciones) para controlar la opera = valor itera (8 bits) 1 =valor itera (11 bits) Figura 8.3 Formato general de una instruccién i6n del dispositive, Muchas de estas instruccio- nes operan sobre la memoria de datos para lo cual se requiere de la unidad aritmético légica (ALU, Arithmetic Logical Unit) Para llevar a cabo las ope- raciones aritméticas y logicas, la ALU controla los bits de estado (los cuales se localizan en un regis- tro especial denominado registro de estado). El ssultado de algunas instrucciones obligan a los bits de estado a cambiar su valor, dependiendo del re- ssultado de la operacién, La CPU puede considerarse como el cere- bro del microcontrolador. Ella es la responsable de buscar la instruccién correcta que se va a eje- ccutar, decodificarla y ejecurarla. En algunas oca- siones, la CPU trabaja en conjunto con la ALU para completar la cjecucién de la instruccién (en los casos que se efecriien operaciones légicas 0 aritméticas). La CPU controla el bus de direccio- nes de la memoria de programa, el bus de la me- moria de datos y el acceso a la pila. FOr! Qs 3! oe at ae! as! od at ae as) tt ma UU ——a a —— Figura 84 Glave 0 Tee ee Seer ice sss Operaciones orientadas a registros Nemotécnico —Operacién Ciclos ADDWF fd SumarWyt 1 ANDWF fd AND entre Wyf 1 CLRF f Limpiar f 1 CLAW Limpiar w 1 COMF fd Complementar f 1 DECF fd —Decrementar f 1 DECFSZ fd Decrementarf, 1@) saltar si cero INCF_f,d_Incrementar f 1 INCFSZ fd Incrementarf, 1) saltar si cero IORWF fd ORentreWyf 1 MOVF fd = Mover f 1 MOVWF f — MoverWat il NOP. No operacion 1 RLF f,d_—sRotar ala izquierda 1 a través del carry RAF f,d_——Rotar a la derecha i a través del carry SUBWF fd — RestarW def 1 SWAPF fd Intercambiar nibbles de 1 XORWF fd OR exclusiva entre W yf 1 Céd. de operaciénEstados msb Isb_afectaddos 00 0111 aft fff cz 00 0101 dfff = fff Zz 00 0001 1fff = fff @ 00 0001 OXKX XXX Zz 00 1001 diff = fff Zz 00 0011 diff = fff Zz 00 1011 diff = fff 00 1010 diff =f Zz 001111 diff «fff 00 0100 diff «fff Zz 00 1000 diff = fff Zz 00 0000 1 fff 00 0000 Oxxo 0000 00 1101 diff fff Cc 00 1100 diff fff cc 00 0010 diff «fff c0cz 00 1110 diff = fff 00 0110 ditt «fff Zz Wee BCF =D Limpiar bit def 1 BSF fib Activar bit b def 1 BTFSC fb Probar bit b def, 1(2) saltar si es cero BIFSS fb Probar bit b de f, 1(2) saltar si es uno 01 O0bb bit 01 O1bb bit tft fff 01 10bb bit fff fff 01 11bb bit (Emon eed ADDLW k —Sumar literal k aW 1 ANDLW k — AND entre k yW 1 CALL =k Llama subrutina 2 CLRWOT Limpiar WOT 1 GOTO k —Salta a direccién k 2 IORLW ok —ORentreky W 1 MOVLW =k — Cargar a W con literal k 1 RETFIE Retornar de interrupcin 2 RETLW k — Retomary cargaraWconk 2 RETURN Retomnar de subrutina 2 SLEEP lal modo de bajoconsumo 1 SUBLW k — RestariekaW 1 XORLW =k — ORexclusiva entre k y W 1 11 114X kkk kkk cz 11 1001 kkk kkk. Zz 10 Okkk kkk — kkk 00 0000 0110 0100 To,PD 10 1kkk kkk — kkk 11-1000 kkk — kkk Zz 11 OOXX Kick kkk 00 0000 0000 1001 11 O1XK Kick kkk 00 0000 0000 1000 00 0000 0110 0011 TO,PD 11 110K Kkkk kkk: c0Cz 111010 Kkkk kkk. Zz Tabla 1 Conjunto de instrucciones de los microcontoladores PIC de rango medio (Curso préctico sobre Microcontroladores @ cw Figura 8.5 Operecn oe la ALU y el reisro W Unidad aritmética légica (ALU) Los mictocontroladores PIC contienen una ALU yun registro de trabajo de 8 bits. La ALU es la uni- dad logica y aritmetica la cual desarrolla operacio- nes aritméticas y funciones booleanas entre los da- tos del registro de trabajo y cualquier registro. La ALU es capaz de hacer sumas, restas, desplazamientos y operaciones légicas. Las Registro: STATUS operaciones aritméticas utilizan el método nu- mérico del complemento a dos. En instruc- ciones que manejan dos operandos, normal- mente un operando es el registro de trabajo (denominado W) y el otro operando es un re- gistro o una constante, figura 8.5. El registro W es un registro no direcciona- ble de 8 bits utilizado para las operaciones de la ALU. Dependiendo de la instruccién que se va.a ejecutar, la ALU puede afectar los valores de los bits carry (C), digit carry (DC), y zero (Z) del registro de estado. Los bits C y DC, indican el momento en que en una operacién de substrac- cidn se da un caso de “llevo” 0 “tomo prestado” Los datos de la memoria RAM interactian con las palabras de instruecién al llegar a la ALU. Dependiendo del valor ded en la correspondiente instruccién, el resultado final se dirige a w o al registro de la RAM, f El registro de estado El registro de estado, figura 8.6, contiene el esta- do aritmético de la ALU, el estado del proceso ow | a on Condicién de reset 0007210 RP: Selector de pigina para drecionamiento ndreto Este bitno se utiliza efectivamente en el PICTBFE4, por lo que se puede utlizar como un bit de propfsito genera RPI: ‘Selecores de pagina para dreccionamiento directo, Solamente RPO se uta en el PICTEF84. RP se puede ulizar como un bite propésto general, To: Time uto Bitdefnaizacion del temporzador. ‘Se coloca en O cuando e cicuito de vigincia Watchdog tralia la temporizacin, PD: Power Down o Bitde bajo consumo, Se coloca en 0 por la instrucién SLEEP. Z_—_Zeroo ite cero. Secolaca en cuando et resutado de una operacin ica oarnéticaes caro. De: Digit Carry 0 Bit de acarreo de cit. En operaciones artmeéticas se activa cuando hay acarteo entre el bit y el 4 Caryo Bite acarreo. En instrucciones aritméticas se activa cuando se presenta acarreo ‘desde el bitmas significa del resutado Figura 8.6 Registro de estado Corn rea ste Mercontees cexcrr: @ de reinicializacién y los bits de seleccién de los bancos de memoria, Este concepto se estudiard en la siguiente leccién: La memoria en los mi- crocontroladores PIC. El registro de estado puede servir para almace- nar los datos de una instruccién, es decir, puede trabajar como cualquier otro registro. Si el registro de estado sirve de destino para una instruccién que afecte los bits C, DC 0 Z, entonces se deshabilita la escritura en estos tres bits. Esos son puestos en uno 1 en cero de acuerdo a la Idgica del dispositive y a Jas operaciones que ejecute. De hecho, los bits TO y PD no son escribibles. El resultado de una instruccién que tenga como destino el registro de estado, puede arrojar un resultado distinto al esperado. Por ejemplo, si se ejecuta la instruccién CLRF ESTADO se bo- rrarin los tres bits més significativos y Z se pon dré en uno, Esto deja al registro de estado con 000n ninnn (donde n significa: no cambia). Registro: OPTION (OPCION) Es recomendable que solo se utilicen las ins- trucciones BCE, BSE, SWAPE y MOVWF para alterar el registro de estado, ya que estas instruc- ciones no afectan los bits 2, DC o C. En la tabla 1 se muestran otras instrucciones que no afectan los bits de estado, El registro OPCION Este es un registro fundamental para estable- cer las condiciones con las que vaa trabajar nues- tro programa. En él podemos llevar a cabo ope- raciones de lectura y escritura, Conticne varios bits de control que configuran médulos como los temporizadores, las interrupciones y las re sistencias de pull-up internas del microcontro- lador, figura 8.7. Los bits PSA, PSO, PSI, PS2, INTDEG y RTS configuran el funcionamiento del temporizador interno (esto lo estudiaremos mds adelante), el bit RBPU permite que habilicemos una resisten- cias de pull-up internas conectadas al puerto B. PSA ee “st | RBPU | TE RTS RTE PSO bit7 bito Direccién: 8th Condicién de reset = 111111110 RBPU: Port Pul-up Enable o Habiitacin de pull-up del puerto B. ‘0: habia is pull-ups iternas 1:las deshabilta INTEDG: INT interupt Edge Select o Selector deflanco de fa interupcién INT (0: lanco de bajada 1: flanco de subida TS: MRO Signal Sourceo Fuente de seal de THRO. (cio de intrucciones interno (Temporizador) 1: transicién en el pin RAA/TOCK (Contador) RTE: MRO Signal geo Flanco de la seal TMRO 0: neremento en transicin de bajo a alto 1; incremento en transicién de alto abajo PSA: —_Prescaler Assignment o Asignacisn de! preescalador (0: TRMO (Contador/Temporizador) 4: WOT (Circuito de wiglancia) PS2,1,0: Prescalr Value Valores de preescalador Figura 8.7 Reoistro OPCION LA MEMORIA EN LOS MICROCONTROLADORES PIC Conocer cémo esté estructurada la memo- ria dentro de los microcontroladores es un paso fundamental para desarrollar aplicacio- nes éptimas y aprovechar al maximo lo que estos circuitos integrados nos pueden ofre- cer. En esta leccién analizaremos la disposi- cién y manejo de las memorias RAM y ROM internas de los microcontroladores PIC. cars pictco str Meoconvolsres ORCI: vy rou Podemos resefiar dos bloques principales en los que se divide la memoria en los microcontro- adores PIC: la memoria de programa (ROM) y la memoria de datos (RAM). También existe una memoria muy importante denominada la EPROM de datos; ella sera tema de estudio en la siguiente leccién. Como vimos en la leccién anterior, cada bloque cuenta con su propio bus de acceso, de manera que ambos pueden consul- tarse durante un mismo ciclo del reloj. La memoria de datos, a su vez se divide en dos bloques: los registros de propésito general y los registros de funciones especiales (SFR: Special Function Registers). Los registros de pro- pésito general son los que el usuario tiene a su disposicién para ubicar las distincas variables de su programa, mientras que los registros SFR con- trolan muchas funciones del microcontrolador y de sus médulos periféricos. El contador de programa El contador de programa (PC) es un registro de 13 bits que especifica la direccién en la memoria de programa de a instruccidn que debe buscarse para ser ejecutada. El byte bajo del PC se deno- mina registro PCL y sobre él se pueden realizar procesos de lectura y escritura. El byte alto se co- noce como registro PCH, contiene los bits 8 al 12 <12:8> del PC y no puede leerse ni escribirse de manera directa. La memoria de programa El contador de programa de los microcontrola- dores PIC de rango medio puede direccionar un espacio en la memoria de programa hasta de 8K y 14 bits de longitud. Como todas las ins- trucciones son de palabra simple, un dispositi- vo que posea una memoria de programa de 8K x 14 bits tiene espacio para albergar 8K en ins- trucciones. Esto facilita al usuario establecer si un dispositivo tiene suficiente memoria de pro- gtama para una aplicacién determinada. Esta aclaracién es importante hacerla debido a que, al trabajar en un dispositivo de CPU CISC y Cerne sta Von Neumann, una memoria de programa de 8K puede llegar a tener sélo alrededor de 4K para almacenar instrucciones, La memoria de programa en los microcon- oladores PIC se divide en cuatro paginas de 2K cada una (Oh-7FFh, 800h-FFFh, 1000h-17FFh, y 1800h-1FFFh), figura 9.1. Dependiendo de la referencia del microcontrolador PIC, se determi- nna qué porciones de este mapa de memoria po- see internamente, Para ello debe referirse ala hoja de datos del PIC especifico con el fin de estable- cer su memoria disponible. Para saltar entre las paginas de la memo- ria de programa, se deben modificar los bits altos del contador de programa (PC). Esto se hace escribiendo el valor deseado en un re- gistro SFR denominado PCLATH (Program Counter Latch High). Sin embargo, si se eje- cutan instrucciones secuencialmente el con- | 6x} 4K] 2X] Cee Cat ot) Cee (Pagina 1) Daas ad (Pagina 2) Pac) (Pagina 3 " 1 Figura 9.1 Memoria de programa @ LEAK: ca y220 00 meonoon 4) En dpositvos hasta de 2K de mamaria de programa. yea ‘000 ont + DODO TELL isa : TF ‘Memoria de programa maa 2K" diecciones aa a reson ‘b) Dispositives hasta de 4K de memoria de programa tO | ‘Memoria de | rit 0 “4 diecciones (12-bitrango de dreeciones) BAS FF ot Figura 9.2 Trabajo del contader de programe al accede ala memoria de programa tador de programa puede llegar a sobrepasar los limites de la pagina sin ninguna interven- cién del usuario, Todas las actualizaciones que se hacen sobre el registro PCH afectan inme- diatamente al registro PCLATH. Para dispo- sitivos con menos de 8K el acceso a una posi- cién por encima de las establecidas fisicamen- tc originard una sobreposicién. Esto es, en un dispositive de 4K acceder a la direccién 17EFh en realidad direcciona la 7FFh. Dis- positivos de 2K 0 menos no requieren pagi- nar la memoria de programa. Una memoria de programa de 2K s6lo nece- sita de un contador de programa de 11 bits para acceder a cualquier direccién (2" = 2048 = 2K), figura 9.2a. Un microcontrolador con una me- moria de programa de 4K necesita de un conta- dor de programa de 12 bits, figura 9.2b. Este iltimo tipo de microcontroladores utiliza un contador de programa de 13 bits, permitiendo ‘manejar hasta 8K de memoria de programa sin cam- biar para nada la estructura dela CPU. Los disposi- tivos de 2K 0 4K ignoran los bits mas significativos del contador de programa durante los procesos de brisqueda en la memoria de programa. Existen dos direcciones dentro de la memoria de programa que reciben un trato especial por pat- tede la CPU. Cuando la CPU inicia su operacién desde su estado de nse, su contador de programa automaticamente toma dl valor de cero, Esta direc- cién se denomina vector de reset dcbido a que a ella llegaré la ejecucién del programa cuando ocurra un estado de reset, En ste punto se borrar cl contenido del registro PCLATH, Esto significa que cualquier salto hacia la arse si mcertttoes GACH: & eae tn et Memoria de programa Sea Pea Figura 9.3 Ubicacion en fa memoria de programa direccién del vector de rser (Oh) llevaréa a pagina 0 dela memoria de programa. Esto lo podemos apreciar en la figura 9.3, donde el contenido de la direccién 00H esa instruccién goto PRINCIPAL. La segunda direccién especial es la 004H, aque se carga automaticamente en el contador de progra- ma en el momento en que ocurre una interrupcién. Estadireccién se conoce como vector de interrupeién Gaando el PC toma la direccién de veetor de inte- rmupcidn, el registro PCLATH no se modifica. Como se muestra en la figura 9.3, una instruccién goto SERVICIO_INTERRUP se puede asignar a esta posicién para quela CPU saltea una subrutina don- dese establezca qué haceral aparecer la interrupci Ja cual puede estar en cualquier punto del espacio de la memoria de programa. ‘Como veremos mas adelante una de las téc- nicas més utilizadas dentro de los microcontro- ladores es el manejo de tablas. Dentro de la me- moria de programa es conveniente ubicarlas en el rango de direcciones de 005H a OFFH; estas 250 posiciones son mas que suficientes para la mayoria de las aplicaciones. El programa PRINCIPAL iniicia su ejecu- cién cuando el PIC sale del estado de reser y contimia funcionando hasta que una de las fuen- tes de interrupcién ha aparecido y requiere aren- cién inmediata; en ese momento la ejecucién del programa PRINCIPAL se suspende tempo- ralmente. La CPU empieza a ejecutar la subru- tina del servicio de interrupcién cuando se car- ga automaticamente el contador de programa con 004H, Cuando se completa la ejecucién del servicio de interrupcién, la CPU retorna al mis- ‘mo punto donde abandoné la ejecucién del pro- grama PRINCIPAL. La escritura de programas se complica un poco cuando entre cl cédigo principal, tablas, subrutinas ¢ interrupciones, se ocupa mas de 2K. a0 0 ver 0 * wee 43! 11 bits 3 (rango x POLATH,3 = 0. ode TT 0. | eon de a Crue de Contador de f) TF direcciones de 12 bits) ‘Programa 800 PCLATH,3 = 1 mF Figura 9.4 Direccionamiento wsado por lamado a subrutinas @ Serr Crs pee re Macon Como se muestra en la figura 9.4, los bits 0 al 10 de la instruccién call se cargan dentro del contador de programa y los bits 4 y 3 del registro PCLATH se cargan en los biés 11 y 12 del conta- dor de programa, Mientras la memoria de pro- grama utilizada sea menor a 2K los bits 4 y 3 del PCLATH pueden ser dejados en 00H, de mane- ra que los 11 bits de direcciones en la instruccién call identificarn la direccién de inicio de cual- quier subrutina ubicada hasta la direccién 7FFH. Para programas de mds de 2K es necesario asegurarse de que el bir3 del PCLATH se ponga en cero 0 en uno de acuerdo a la porcién de la memoria de programa que estemos utilizando, cada vex que se lama una subrutina, La instruc- cién GOTO también tiene un campo de diree- ciones de 11 bitsy requiere un tratamiento idén- tico, ver figura 9.5. ‘ORG @x500 BSF PCLATH,3 CALL suB1_P2 jSelecciono pégina 1(800r-FFFH) j Tam subrutina vbicode en la ;pdginai (800h-FFFh) ‘ORG 0x900 4 susi_pi: jsubrutina Ulamada en 1a ;pgina 1 (800h-FFFH) jretorno al Lanado de 1a jsubrutina en 1a pagina @ 5€000h-7FFh) Figura 9.5 Ejemplo del lamado de una subrtina en la pina 1 desde la pagina La pila (stack) La pila es un espacio de memoria que contiene la direccién de retorno antes de que ocurra un salto dentro de la ejecucién de un programa. Al mo- mento de ocurrir un salto dentro de un progra- ma en la pila se almacena la direccidn en donde se estaba llevando a cabo la ejecucién, comando el valor del contador de programa. De esta ma- nera, la CPU cuando termina de ejecutar la su- brutina, puede consultar en la pila la direccién de retorno para continuar con el desarrollo nor- mal del programa. El espacio de la pila no forma parte ni de la memoria de programa ni de la me- moria de datos y para acceder a sus posiciones se utiliza un registro especial conocido como pun- cero a la pila (stack pointer), en el cual no puede escribirse ni leerse, Los PIC de rango medio poseen una pila (en hardware) de 8 niveles y 13 bits de ancho; esto quiere decir que permite la combinacién de has- ta 8 llamados de subrutinas e interrupciones. El contador de programa es puesto en la pila cuando se ejecuta una instruccién de llamada a subrutina CALL 0 cuando aparece una interrup- cin, El valor presente en la pila es rescatado cuan- do se ejecuta una instruccién de retorno como RETURN, RETLW o RETFIE, En ninguno de estos dos casos se modifica el PCLATH. Después de que la pila se ha almacenado en ocho ocasiones, el noveno almacenamiento so- breescribe el valor que fue almacenado en la pri- mera ocasién. El décimo almacenamiento so- breescribird el valor almacenado en la segunda cocasién, como se muestra en la figura 9.6. Es importante resaltar que no existe ningin ie en el registro de ESTADO que nos indique cuando se ha Ilenado la pila, de manera que es labor del programador verificar que dentro del programa no se hagan mas llamadas a subrutinas que las soportadas por el microcontrolador. PLA ery ir) cy er irs or iinet Figura 9.6 Comportamiento de a pl PT stuns ‘Comportamicnto del Contador de Programa (PC PIC La figura 9.7 muestra cuatro situaciones en don- de podemos estudiar el comportamiento del contador de programa (PC). La situacién 1 muestra como se carga el PC al escribir en el PCH PCL = is 87 0 5 PCLATH<4:0> 8 ‘incorporando un resutido dea ALU ‘en PCL ‘Siuacin 2: compertaminto ante ne instucién GOTO PCH PCL 12.1110 87 0 abpoumesss [1 om pontoon Po ctOt> PCLATH ‘Stuscin 3 natuccn CALL Pia (13-bit x8) registro PCL ( y por consiguiente el PCLA- TH<4:0> --> PCH), el PCH no puede modifi- carse (escribirse) directamente pero puede mo- dificarse cuando varia PCL, y cualquier modi- ficacién que sufta PCH se refleja inmediatamen- te en el PCLATH. La situacién 2 muestra como se carga el PC durante una instruccién GOTO (PCLA- ‘TH<4:3> > PCH) y vemos como los bits 3 y 4 del PCLATH (establecidos por el usuario) afectan el contenido del contador de programa. Como vimos anteriormente, de esta manera accede- ‘mos a paginas superiores en la memo- ria de programa. La situacién 3 mues- ra como se carga el PC durante una instruccién CALL (PCLATH <4:3> ~> PCH), cuando el PC se ha cargado en la cima de la pila (stack) y como, al igual que con Ia instruccién GOTO, el PCLATH afecta al contador de pro- grama. La situacién 4 muestra como se carga el PC durante una instruccién de retorno (RETURN), donde el PC es cargado con el valor que hay en la cima de la pila. En muchos programas en lenguaje censamblador es necesario construir ta- blas de datos para distintas aplicacio- nes. Uno de los métodos mds comunes para acceder a estas tablas es sumar un valor determinado al contador de pro- grama (ADDWF PCL). Cuando invo- camos una rutina de tabla el PC toma esa direccién inicial y al sumarle un va- lor fijo llega a la posicién de la tabla indicada por dicho numero. En un caso como éste, al sumarle un mimero de 8 bits, la tabla s6lo podré llegar hasta 256 posiciones de longitud. Cualquier escritura que se haga so- breel contador de programa (PCL), ori- Figura 9.7 comportamiento det contador de programa ginaré quc los 5 bits bajos de PCLATH & RCI 120 prcteo sore merscontindores se carguen en PCH. La Memoria de Datos Como habfamos mencionado anteriormente, esta ‘memoria se divide en dos partes fundamentales: el drea de registros con funciones especiales (SFR: Special Function Registers) y el area de registros de propésito general (GPR: Genenal Purpose Register). Teoria Los registros de propésito general representan rea disponible para que el usuario almacene sus datos y desarrolle sus operaciones. Los registros con fanciones especiales controlan la operacién del dis- positivo; por ejemplo, poseen los puertos y los re- gistros de control para establecer el funcionamien- oon 0 THF] 100 180 orm ain ‘OPMION REG 1010 18th oan aah pew | 102 182 03h aan stavus | 1031 183 on ean 5n__| tosh 164 sh eon 1051 1651 8 on Por | to6n 168 om sm PORTE | 107 187 ah sen PORTE | r08n 188 oan 8h 109 189 oan ean PoLaTa | roan 18a oan 8h twrcon | 103 188 oon cn toch 180 oh 0h 00h 180 oe CI 106 188 om om 10m 18m 10h 90m 10h 190% 11m sin an 91h 1m 9 112 192 1% son 13 198 14h on 114 94h 18h 88h 115 1961 16h 96h 116 1961 1m sm a 197 18h eh 18h 198 19 an 119 199% tah oan 118 19m 18h 260 118 198% 10h en nen 190 10h 200 1108 1900, teh eh 11h 198 1 om 1m 19h 20n 00 Fegitos de | 1200 140 Fn a 1m Ms | ‘Fo ‘Banco 0, zen Fn Fon THY 1 ‘Banco ‘Banco 1 ‘Banco 2 Banco 3 Figura 9.8 Estructura general de la RAM Cro domes ee mac eaeeanTCe daxrr: @> to de cada uno de los pines como entrada 0 como salida. Contienen también registros que permiten Ja entrada y salida de datos para la variedad de mé- dulos del microcontrolador, como temporizadores, puertos seriales, conversores andlogo-digitales, etc. ‘También contienen bits de control que seleccionan el modo de operacién de los médulos del micro- controlador, al igual que pueden habilitar o desha- bilitar su funcionamiento. Estructura en bancos La memoria de datos (RAM) de los microcontrola- dores PIC se ha dividido en cuatro bancos. Cada uuno de ellos contiene registros SER y GPR. Para poder trabajar con cualquiera de estos registros, hay aque estar ubicado dentro del banco correspondien- te, La conmutacién entre bancos requiere configu- rar los bits RPO y RPI del registro de estado (STA- TUS <7:5>) de acuerdo a lo mostrado en la tabla 9.1. La figura 9.8 muestra un mapa general de la RAM para los microcontoladores PIC, que corres- ponde a una organizacién estindar para todos los DOS Oks gistros con el cual [Banco | Died | lndrecto sc vaa trabajar. | accedido | (RPI:RPO) | (RPI:RPO) ° 00 En general, [ieapeaiien ay & mover valores deunngimte: [2 [18] cia oto, el valor |_3 1 debe pasarsea tra- Tabla 9.1 Configuracin defo bits vvés del registro de oy Pr trabajo (W). Esto significa que para cualquier movimiento dedatos en- tre registros se requieren dos ciclos de inseruccién. ‘Toda la memoria de datos puede accederse di- recta o indirectamente. El direccionamiento direc- to requiere de la configuracién de los bits RPO y RP1. Eldireccionamiento indirecto requiere la uti- lizacién de un registro especial conocido como FSR (File Select Register) y el bit IRP (Indirect Register Pointer) que hace parte del registro de estado. Me- diante ellos se puede acceder a los bancos 0,1,2 0 3 de la memoria de datos. dispositivosde esta familia. Los 4g ‘ ° registros que se encuentran en 7 Owen remgexcnn (TTTTTTSESDN "= smn en cualquier dispositive. Los 48RD °9! [9 i emis registrosdependen dela estado 14 cantidad de periféricos que po- ireesnes [goa] 1] 0] 1]0]0] A sea el PIC; por eso conviene — secvas ‘irar en las hojas de dats las Ta hex caracteristicas de cada disposi- tivo en particular. En la estructura de los registros que se muestra en la figura 9.8, se puede apreciar PO ene que ellos poseen direcciones 3ST 4° en 8 bits que van desde la di- Doon reccidn OOH hastala FFH.EL “Geis [1] [oh] modo de direccionamiento 3 directo utiliza sélo 7 bits de truccién para identificar la direccién de un registro, el octavo bit de la direccién debe venir de un bit (RPO) que selecciona el banco de re- Q Lofolsfo ole 80 aq" * Tox FF Figura 9.9a Modo de direccinamiento directo @ LBA: 00200 1 norntoten informaciin del cédigo verre 5 Orato cbdig0 LUO} eer ‘Selector de banco Selector dea posicion Le] we a Memoria de datos 7h 7 anon inca Barco? Sanco Figura 9.90 Esquerma general ce modo de drecoonamieno recto En la figura 9.9a se muestra la utilizacion del direccionamiento directo para acceder al registro ubicado en la direccién 14H 0 94H, dependiendo del valor de RPO, y en la figura 9.9b se muestra un diagrama general de este tipo de direccionamiento, en el cual observa- mos como los 7 bits del eédigo operativo de ccm rseooee oon on oth ain oan 82h on aah oan aan on 85h on 86h om 87h oh 88h och 80h omh aan osh 8h ‘och ach 7eh Fm Figura 9.10 Mapa de a memoria RAM de microcontroladores PIC de 18 pines la instruccién (OPCODE) son utilizados para direccionar las posiciones de memoria y los bits RPO y RPI del registro de estado, pueden ser utilizados para direccionar o seleccionar los distintos bancos. Cada banco se extiende hasta 7FH (128 bytes). Las posiciones mas bajas de cada banco se reservan para los registros con funciones es- peciales (SER). Debajo de los SER se encuen- tran ubicados los registros de propésito gene- ral. Es de resaltar que algunos registros SFR del banco 0 se han puesto también en otros bancos (posiciones espejo) para facilitar su ac- eso, En la figura 9.10 se muestra un mapa de memoria de datos correspondiente a algunos microcontroladores PIC de 18 pines, en don- de podemos apreciar algunos registros quema- nejan la ubicacién en espejo. Por ejemplo el re- gistro de estado (STATUS) se encuentra ubica- do en las direcciones 03h y 83h. Direccionando cualquiera de estas dos posiciones podemos ac- ceder y trabajar con dicho registro. Direccionamiento indirecto Este modo de direccionamiento sobre la me- moria de datos es apropiado en casos donde las direcciones de memoria que se manejan dentro de una instruceién no son fijas, es de- cir cuando se tiene el caso de que queramos trabajar con datos que se encuentren distri- buidos a lo largo de varias posiciones de me- moria. En este caso el direccionamiento in- directo nos brinda una manera répida de ac- ceder a todos esos datos, utilizando un regis- tro especial (FSR) como apuntador a la posi- cidn en la memoria de datos que se quiere acceder. Como este apuntador es un registro en RAM, sus contenidos pueden modificarse dentro del programa y de esta manera apun- tara muchas posiciones distintas; esto puede ser muy titil cuando trabajamos con tablas de datos ubicadas cn la memoria de programa; un ejemplo de este manejo lo podemos apre- ciar en el proyecto 5 de este curso titulado Aviso Luminoso con Diodos LED. Curso prictco sobre Micoconrolaores xix: @ Mee stew ne cena recon fe Contenios Co Instuccién orentada a bito a byte BancoO 13 oh a hex = {__Accesa cualquier posicion en todo i tt espaco de Srecciones * ‘Figura 9.11 Modo de direccionamiento indirecto En ese proyecto se escribié una serie de datos. _ Si intentamos leer manualmente el regis- en diversas posiciones de la memoria de progra- tro FSR, solo lecremos 00H, y si intentamos ‘ma, los cuales debian it mostrandose secuencial- escribir un dato sobre él, resultara un estado ‘mente en la pantalla de diodos LED. Para resolver _ de no operacién (NOP). Podemos generar di- ese problema, simplemente se acudi al registro recciones hasta de 9 its, concatenando el bit FSR para que hiciera un recorrido por todas esas. IRP (STATUS <7>) con los 8 dts del registro casillas y pudieramos tomar el dato, FSR, como se muestra en la figura 9.12. En este modo de direccionamiento, nP 7 Registro FSR o la direccién (en 8 bits) del registro que se O I va a acceder, se escribe en un registro es- pecial (FSR) que sirve de apuntador a cualquier punto del mapa de memoria RAM. Después de haber escrito en ese registro, se puede consultar otro registro ott especial llamado INDF el cual acceders 0h oon al registro usando el contenido del FSR como apuntador a la posicién de memo- Merwori do ria deseada por el operando, figura 9.11. datos ™ 7 Cualquier instruccién que utilice el re" gistro INDF puede acceder al registro apuntado por FSR. Figura 9.12 Drecconamiento increcto concatenanco eit RP Selector de banco Selector de posicones LA EEPROM DE DATOS EN LOS MICROCONTROLADORES PIC En la leccién anterior estudiamos los bloques de memoria RAM y ROM de los PIC. Ahora estudiaremos la memoria EEPROM de da- tos. Esta es una memoria que ocupa un blo- que separado de las dos anteriores y que ha representado la solucién a muchos problemas dentro del disefio electrénico. Al final habla- remos un poco de las memorias seriales que también ocupan un lugar relevante en una gran variedad de sistemas electrénicos. aro prictia ste icecontotaeres AGRA. & eyes cone en los microcontr Hemos visto las distintas tecnologias que tie- nen los microcontroladores para su memoria de programa: FLASH, EPROM, EEPROM, OTP etc. Una ver se ha programado un microcontrolador, independiente desu tecnologfa, la memoria de pro- grama puede ser considerada como una memoria ROM, ya que no podemos escribir sobre ella en el transcurso normal del sistema, a pesar de que lucgo podamos retirarla del circuito y programarla nuc- ‘vamente. En muchos casos vamos a necesitar, por ejemplo, recolectar datos del mundo exterior y al- ‘macenatlos, para lo cual necesitaremos una memo- ria en la cual podamos grabar los datos y tener la certeza que permanecerin alli y no se perderan. Existen muchos dispositivos EEPROM dis- ponibles en el mercado. Estos se pueden clasifi- car en tes tipos generales: EEPROM seriales, EEPROM paralelas y microcontroladores con EEPROM de datos internas, como por ejemplo los PICI6E84, 16F870 y 16F87X de Microchip. Analicemos el funcionamiento y uso de las memorias EEPROM que se encuentran en algu- nos microcontroladores PIC y de las memorias EEPROM seriales, por ser estas iltimas muy co- ‘munes en muchas aplicaciones. Memorias EEPROM internas La memoria EEPROM de datos puede leerse y es- se durante la operacién normal de un sistema. En esta memoria se pueden almacenar datos y va- riables para que no se pierdan cuando se desconec- ta la alimentacién del sistema. Analizando los re- querimientos de la aplicacién, puede ocurrir que esta memoria sea suficiente y no se tenga que recu- rir a memorias externas. Este tipo de memorias soportan hasta 1.000.000 de ciclos de escrituraborrado y pueden guardar la in- formacién sin alterarla por mas de 40 afios. Esta me- ‘moria no se encuentra en el espacio normal de archi- vos de registro; en lugar de eso, debe ser direccionada indirectamente a través de registros especiales, En la actualidad los microcontroladores PIC 1Gxx ofrecen hasta 256 dyzes de memoria EEPROM; ver tabla 10.1. Fees 128 on- 7m 256 on h Tabla 10.1 Tamato del EEPROM cl datos y su rango deorecciones Algunos dispositivos programadores pueden gtabar la memoria EEPROM de datos. Esta ‘memoria puede ser leida o eserita durante la eje- cucién del programa, siendo un bloque comple- camente separado de la memoria de programa y de los archivos de registros (RAM), y puede usarse para almacenar cualquier tipo de datos. El rango de direcciones de esta memoria es ac- cedido colocando la direccién en un registro espe- cial (EEADR) y comunicando los datos por medio de otro registro especial llamado EEDATA. Los da t05 son leidos o escritos en un dyte al tiempo. Un sélo bir no puede ser leido o escrito. Se usan cuatro regiscros de funciones especiales para leer y escribir en la EEPROM de datos, los cuales se muestran en la tabla 10.2 JEECONY 0x88 ->direcién 8 del tanco 1 ECON _ oxB9 Tabla 10.2 Registos especiales para o manejo de le EEPROM de datos El tiempo de escritura es de aproximadamen- te 10 milisegundos y es controlado por el tempo- rirador que hay dentro del cireuito integrado, En realidad ese tiempo resulta muy largo para la velo- cidad del procesador, por este motivo existen va- rios bits en otro registro especial denominado EECONT para supervisar la completa y correcta terminacién del ciclo, figura 10.1. Analicemos los registros asociados al manejo de esta memoria: EEADR. El registro de 8 bits EEADR es capaz de direccionar un miximo de 256 posiciones. El rango de direcciones utilizable lo podemos ver en la tabla 10.1. @ ir RD: Lectura “Se pone en uno cuando se va realizar un ciclo de lectura dela EEPROM, Luego asa a cer automaticamente. WR: Escritura 1: Se pone en uno cuando se nica un ciclo de escrtura en la EEPROM. Cuando se ‘completa el ciclo pasa a cero automattcamente WREN: Permiso de asertura 1: Permite a escrture en la EEPROM 0: Proibe a escrtura |WRERR: Seializador de enor de esertura 41: Se pone en uno cuando una operacin de eseritura ha terminado prematuramento 0: La operacién de escrtura sea completago crrectament LEI: Sefiaizador de final de operacién de escritura 1: Cuando este sefaizador se pone a 1 inaica que la operacién de escritura se ha ‘completa con éxto. Se pone a0 por programa, (0: La operacion de escritura no se ha completado. Figura 10.1 Registro ce contro de la EEPROM de datos EEDATA. Esun registro de 8 bits que se usa para pasar datos desde y hacia la memoria EEPROM de datos. FECON2, Este no es un registro fisico, sin em- bargo la direccién 0x89 es asignada a él, Al leerlo todos sus bits son cero. Sélo se emplea como un dispositivo de seguridad durante el proceso de cescritura de la EEPROM, para evitar las interfe- rencias en el largo intervalo de tiempo que preci- sa su desarrollo, En él se escriben dos palabras de control y forman parte del ciclo de escritura EECONA, Este es el registro de control y tie- ne la funcién de controlar las operaciones en la EEPROM; su distribucién de bits se muestra en la figura 10.1, y su descripcién cs la siguiente. Los bits de control RD y WR inician la lee- tura y la escricura, Se deber tener en cuenta que estos bits s6lo pueden ser colocados en uno (no se pueden colocar en cero) por software para que inicien el ciclo de escritura/lectura. Estos se lim- pian automaticamente al completarse un ciclo de lectura/escritura. Una operacién de escritura es vilida cuan- do el bit WREN se pone en uno. WREN se limpia cada vez que se enciende el sistema. El bit WRERR se pone en uno cuando un ciclo de esc tura se interrumpe por un reset de- bido al pin MCLR 0 al watchdog. Después de un reset, por medio de un programa, se puede che- quear el bit WRERR y reiniciar el ciclo interrumpido de escritu- ra, Las direcciones y los datos se mantendrén sin cambios en los registros EEADR y EEDATA. Ciclo de lectura Se inicia un ciclo de lectura colo- cando la direccién que se va aac- ceder en el registro EEADR y po- niendo el bit RD = I en el regis- tro EECON1. En el siguiente ciclo de instru ién, los datos estardn disponibles en el registro EEDATA y permaneceran allf hasta que se reali- cce una nueva lectura o escritura en la EEPROM. EEADR se localiza en el banco 0 (RAM) y EECONI en el banco 1, de manera que se re- quiere seleccionar cada banco dentro del eédi- g0, figura 10.2. Figura 10.2 Diagrama de fyjo del ciclo deletura en la EEPROM ‘de datos Ga TCIC eres rovln direccion —; definir direccién @ leer romnF ceode { informar To direccion + al registro bsf — status,rp@ —; banco 1 sf eecont,rd jit de Lectura bef status,rp® j bonco 0 movf eedata,n datos hecia Ciclo de escritura El ciclo de escritura comienza cargando en EEA- DRla direccién dela posicién que se va aescribir y con el registro EEDATA el valor que se vaa grabar. Después se debe afiadir una secuencia de instr ciones que inician la escritura, en la cual participa el registro EECON2. Este registro, que en realidad no se halla establecido fisicamente, slo asume fun- ciones de seguridad en el proceso cargsindose en él dos valores concretos: 55H y AAH. El tiempo de estos pasos es un aspecto critico, de manera que se recomienda que se siga esta secuencia. Lasinterrup- ciones deben deshabilitarse mientras se ¢jecuta este procedimiento, El bir WREN en EECONI debe ponerse en uno para habilitar el WRITE. Esto pre- viene escrituras accidentales en la memoria EE- PROM de datos. El bit WREN debe ponerse en cero en todas las ocasiones, excepto cuando se eje- cuta WRITE, ver figura 10.3. Alescribir un dato en esta memoria, se bo- ra automdticamente el dato anterior y se graba Figura 10.3 Dlagrama de fyjo del ciclo de escritura en la EEPROM ;- MEDD ELA EON porto ou Gireceten Ss bate ou ei su 8 te eu inicio bet Status.rye,sbonee 3 ete eottaor owt tris Ser" Set, roesbaco © sovte Seap00018 owe byte sbyte de Sivisn pacha grobar owt Gireccion Gail) Gecriuure See Stotuesrse csercomtets Bitac Seco hyte goto escrcanplets EP Stereos nowt porto snostrar ato er el puerto © direceion.e stotus.roe ‘boreal date de Yo EEPROM bef status roe mov Gedata,w toy Gcritura mov direccionm —itone Be fate. oviw ons from Secon? Br econtsar WR 3a te Scant aren bof stotus.ned bone oa susie Nena espaarecro8 Jparenooe, eas IL TTA00 JenistaL 4 ne ‘Figura 104 Codigo de eercicio de lcturay escrtua en la EEPROM CO Serr: Curso practico sobre Microcontroladores Figura 105 Dagrama esqvomaten de ecuay esertra ena EEPROM de atos debe hacer para aplic: quieran bus PC (este es un método el nuevo. El tiempo de escritura es controlado porel temporizador (timer 0) del PIC. Este tiem- po puede variar segiin las condiciones de voltaje y temperatura, al igual que entre diversos tipos de circuitos integrados Alcompletar el ciclo de WRITE, el bit WR se pone en cero automaticamente y se activa la bandera de escritura completa en EE. El progra- ma puede detectar si el ciclo de WRITE se ha cumplido habilitando esta interrupeién, miran- do la bandera EEIF o el bit WR. Los bits EEIF y WREN deben ser limpiados por programa. En la figura 10.4 vemos un ejemplo de manejo de lectura y escritura en la EEPROM y su diagrama esquemitico se ve en la figura 10.5. Una buena precaucién consiste en verificar si la escritura de la EEPROM ha sido correcta, para lo cual se suele restar el dato escrito con el que existe en el registro EEDATA. Si no se ha producido error, el sefalizador Z pasa a valer 1. Memorias EEPROM seriales La tecnologia de las memorias seriales ha surgi- do como una solucién para sistemas que requic- ren bajo tamafio y poca potencia. Entre sus prin- cipales ventajas se cuentan: * Se pueden conectar ficilmente con micropro- cesadores 0 microcontroladores, incluso algu- nos de ellos tienen pines dedicados a esa labor. + Transferencia de datos de manera serial, lo que ie permite ahorrar pines del microcon- trolador; al igual que ocupan poco espacio y consumen poca potencia. Cuando se ha decidido por el uso de este tipo de dispositivos, el paso __ siguiente es seleccionar uno de los dos protocolos posibles de comunicacién con la EEPROM serial (20 3 hilos) La eleccién de los dos hilos se jones que re- de comunicacién de datos serial que estudiare- ‘mos més adelante), inmunidad al ruido y dispo- nibilidad limitada de pines. La eleccién de los tres hilos es conveniente en casos de requerimicn- tos limitados de protocolos, un protocolo SPI (otro método de comunicacién serial), alta fre- cuencia de reloj 0 en aplicaciones de 16 bits. Bus de tres hilos. En este grupo se encuentran los dispositivos con la nomenclatura 93XXXX. En ellos se requieren cuatro pines. Bus de dos hilos. La nomenclatura comin es 24XXXX y 8SXXXX, ver tabla 3. El protocolo PC utiliza comunicacién bi-diteccional maestro/ esclavo. Tanto el maestro como el esclavo pue- den operar como transmisor 0 como receptor. La operacién del dus debe ser manejada por el ‘maestro, quien genera la sefial de reloj serial y las condiciones de inicio de detencidn. Estas memorias tienen un pin o terminal llamado SCL que recibe los pulsos generados por el maestro, y otto llamado SDA que ma- neja el flujo de datos bidireccionalmente. Este dispositivo no requiere de un pin habilitador, ya que en este esquema la transferencia de in- formacién s6lo SE puede iniciar cuando el bus esté libre. Cada memoria tiene su direccién de- terminada mediante los pines AO, Al y A2; en una red s6lo responder la memoria cuya di reccién coincida con la direccién que va enca- bezando la trama de informacién. De Se ORO Sales + sv i) 24.001 ’ 1 2 + fo Vv yl 4 iw fu esa Ld fag 2 les sols] Velie i ale cy res. pa 8 volt a8 i I} nak a = |e [3 | ee) PICTGFB4 Cuando un microcontrolador desea entablar comunicacién con la memoria, debe enviarle una serie de Bits que lleven la siguiente informacién: 1 Se envia el bit de arranque 2. El cédigo 1010 (propio de estas memorias) 3. La direccién del dispositivo (A2, Al, AO) 4, Un bitque indica que se desea escribir (‘0') en la memoria Después de esto, la memoria debe enviar un reconocimiento para informarle al micro- controlador que recibié la informacién. Di- cha sefial, llamada ACK, consiste en poner el bus en un nivel bajo (lo hace la memoria). Después el microcontrolador debe enviar los bits que corresponden a la posicién de me- moria que se quiere leer o escribir; nuevamen- te la memoria envia un reconocimiento. El paso siguiente depende de la operacién que se vaya a ejecutar. Ejemplo de aplicacion En este ejemplo se hard un contador de 0 a 9 con uh interruptor pulsador y un display de sie- te segmentos, figura 10.6. El ntimero que se Figura 10.6 Eempio de! manejo de una memoria serial muestra en el display se va a almacenar simul- taneamente en una memoria 241.C caso, los pines de la direc tierra, al igual que el pin WP. La resistencia de 4,7 Kohm conectada al pin SDA es necesaria dado que dicho pin tiene salida de colector abierto. El display se conecta al puerto A y el pulsador al pin RBO, figuras 10.6 y 10.7. 1. Eneste in se conectaron a El programa lleva el control de la cuenta deci- smal y almacena en la memoria el mismo dato que se envia al display, El cédigo de este ejercicio esta disponible en nuestra pégina en la internet, en el enlace Curso prictico sobre microcontroladores. Figura 10.7 Monta ce ejrcicio & GCI x20 picts sore merocorandores Una de las herramientas més titiles que nos proporcionan los microcontrolado- res es la posibilidad de manejar inte- rrupciones. Las técnicas disponibles para manejarlas deben entenderse muy bien para poder aprovechar al maximo los recursos y posibilidades que nos pueden brindar estos dispositivos. Curso prictco sobre Merocontrotadores MSAK U'T.:. a7 Tiere rary Una interrupcién es un evento que obliga a tun sistema procesador a desatender por un mo- mento la accién que se encuentre ejecutando dentro del desarrollo normal de un programa y llamar a una subrutina, la cual usualmente se denomina rutina o servicio de interrupcién. Las fuentes de interrupcidn mas utilizadas incluyen cambios de nivel, flancos de subida 0 de bajada en algunos pines y desbordes en los temporizadores, es decir, cuando se llenan com- pletamente (FFH) y pasan de nuevo a 00H. La cantidad y el tipo de interrupciones depen- den de cada referencia de microcontrolador; la lista es la siguiente: * Por el pin INT (denominada interrupcidn ex- tera). Es cuando al microcontrolador ingresa un flanco por un pin determinado (INT) * Por desborde del temporizador TMRO * Por cambio de nivel en el puerto B (pines RB7:RBA). * Debida al médulo comparador * Debida al puerto paralelo esclavo * Debida al médulo USART * De fin de conversién del médulo AID + Debida al médulo LCD * De fin de escritura en la memoria EEPROM de datos * Por desborde de los temporizadores Timer! y Timer2 * Debida al médulo CCI * Debida al médulo SSP Cuando aparece una interrupeién, el pro- cesador guarda en la pila (stack) la dis la instruccién en donde se encontraba y el con- trol del programa se dirige hacia la direccién donde se encuentra la rutina de interrupcién. Cuando éta termina, recupera la direceién de la pila y vuclve al lugar exacto donde abandond el programa. cccién de En el mapa de memoria de programa de los microcontroladores PIC existe una diteccién asig- nada (0004H) para ubicar la rutina, Cuando se @ Ser Pee ett | origina un estado de reset (0 estado de volver a inicializar el sistema), el Contador de Programa dirige la CPU a la diteccién 00H; un programa que incluya interrupciones generalmente se es- tructura como se muestra en la figura 11.1 (ORG 00H GOTO MAIN ORG 04H GOTO INT_SERV MAIN: sprograma principal HINT_SERV: jrutina de interrupcién Figura 11.1 Ubicacén normal del rutina de interupcién Al retornar a la direccién donde se en- contraba antes de la interrupcidn, se puede perder la informacién de algunos registros, como el de trabajo (W) y el de estado, por lo cual es responsabilidad del programador ha- cer una copia de ellos ‘Tal vez la manera mas adecuada de hacer esta operacién es a través de un segmento de cédigo dispuesto en el interior de un MA- CRO. En [a figura 11.2 se muestra un ejem- plo en donde se almacenan y restauran los re- gistros W y ESTADO. El registro W_TEMP debe definirse en todos los bancos y en la misma posicién tomando como referencia la direccién base (por ejemplo, 0x70, Ox7E en el banco 0). Los pasos que se siguen para dar solucién a este problema son los siguientes: - Almacenar W en el banco actual ‘Almacenar el registro ESTADO en el banco 0 . Ejecutar la rutina de interrupcién Restaurar ESTADO (y el bit de seleccién de banco) 5. Restaurar W Cada uno de los cipos de interrupcién puc- den habilitarse 0 deshabilirarse, el usuario es quien controla las fuentes de interrupcién a través de un registro especial llamado INTCON, figura 11.3. Curso préctico sobre Microcontroladores MOVWEW_TEMP sCOPIAR W EN UN REGISTRO TEMPORAL GUARDAR EL ESTADO NO ES TAN SENCILLO sYA QUE MOVF ESTADO,W AFECTARA LOS BITS jDEL MISMO REGISTRO ESTADO, PERO LA SINSTRUCCION SMAPF NO LOS AFECTA jPOR ESO LA PODEMOS UTILIZAR 'SWAPF ESTADO, 1. sGUARDANDO EL REGISTRO ‘SWAPF ESTADO, 0 3DE ESTADO MOVWF ESTADO_TEMP jLUEGO DEBEN SER RESTAURADOS. ‘SWAPF ESTADO_TEMP,1 ;RESTAURANDO ESTADO ‘SWAPF ESTADO_TEMP 0 MOVWE ESTADO. ‘SWAPEW_TEMP, 1. ‘SWAPFW_TEMP, ;RESTAURANDO W Figura 11.2 Ejempio donde se ilustra como guardar las capa de segura Es importante aclarar que los microcontro- Jadores que solo cuenten con una interrupcién de médulo periférico (por ejemplo el 16F84), han reemplazado el bit 2 (PEIE) por otros como el EEIE o el ADIE, que corresponden a interrup- ciones como la de la EEPROM de datos. ‘También hay que tener en cuenta que en al- ‘gunos microcontroladores el bir 1 (INTE) no se encuentra contemplado, Por estas razones es conveniente verificar el mapa real del registro INTCON para cada tipo de microcontrolador. (Cada una de las interrupciones puede usarse sola o se pueden habilitar varias, dependiendo de la aplicacién. En cualquier punto del programa, 1 usuario puede desactivar alguna de estas inte- rrupciones borrando el bie correspondiente: BCF INTCON, INTE; int. externa BCF INTCON, RBIE; int. en RB BCF INTCON, TOIE; int. por el TMRO Cuando ocurre un estado de reser todos es- tos bits coman un valor de cero (limpiados). Para habilitar cualquier interrupcién, es necesario activar un bit (GIE) que se deno- mina el habilitador general o global. Es decir, las interrupciones se habilitan si se escribe BSF INTCON,GIE o se deshabilitan si se escribe BCF INTCON,GIE. Registro: INTCON bt7 bio Direccién: Bh ‘condicién de reset —_0000000x» GIE; Global Interrypt Enableo Habiltador general de {ntarrupciones. 0: deshabita todas ls interupciones. 1: habit las iterrupciones ‘Peripheral interupt Enable Bito Habilitacién de {nerrupciones debidas a los modulos peifércos (0: a deshabilta 1a habilita TRO interupt Enable o Habitacién de iterrupcion del temporizador TMRO. 0: a deshabilta 5: lahabiita INT Interupt Enable o Habiitacin del interupeién INT. 0: la deshabitta la habilta ‘ABE interupt Enable Habltacén de la nterupcén RBI, 0: a deshabitta, 1: lahabilta TTMAO Overiow Interupt Flag o Bandera de la interrupcion por sobrefujo del THRO. ‘Se coloca en 1 cuando el TMQ pasa de OFF a 00h; ata debe ser puesta a 0 por programa, {NT Interrupt Fag o Bandera de interrupcin INT. Se coloca en 1 cuando la interrupcién INT (RB<0>) ‘cure; ésta debe ser puesta a 0 par programa, ‘RB Port Change Interrupt Flag 0 Bandera de Interupcién por cambio en el puerto B. Se coloca en 1 cuando una de as entradas RB<7:4> ‘cambia; ésta debe ser puesta a 0 por programa. a i ‘Figura 11.3 Registro ITCON ‘Figura 11.4 Funcionariento de a habitactin dels intrupciones mucin eeoae Para entender este concepto, podemos hacer una analogia con un circuito serie, fi- gura 11.4, Asumamos que GIE, RBIE, INTE y TOIE son interruptores en un circuito eléc- trico y una corriente quiere circular desde el punto A hasta el procesador. Para que este fenémeno sea posible el interruptor GIE debe estar activado, al igual que cualquiera de los bits que habilitan a cada uno de los tipos de interrupcién. Cuando se ha configurado correctamen- te algun tipo de interrupcidn, existe una ban- dera asociada para cada tipo que se pone en “uno” cuando ella se ha presentado. Para de- terminar el tipo de interrupcién basta leer cada una de esas banderas. En el momento que ocurre una interrup- cién, el procesador limpia el bie GIE impi- diendo que ocurra una nueva interrupeién. Este bit se habilita de nuevo con la instruc- cién RETFIE cuando se retorna de la rutina de interrupcién. El programador no debe pre- ocuparse por esa habilitacién ya que esto ocu- tre automdéticamente. Interrupcién externa La interrupcién externa se genera cuando lle- gauna sefial externa al pin INT. El bit 6 del registro OPCION determina si esta inte- rrupcién la generard un flanco de subida o un flanco de bajada. Cuando aparece un flan- co adecuado en el pin INT, la bandera INTF (bit del registro INTCON) se habilita, Esa bandera debe desactivarse mediante un cé- digo en el programa dentro de la rutina de interrupcidn, antes de habilitar de nuevo esa interrupcién jonalmente, si el dispositivo tiene otros periféricos que puedan originar interrup- ciones, entonces poseerd internamente algunos registros adicionales que permitan habilitarlas y otros registros donde se almacenen los bits que actuaran como banderas indicadoras. De- pendiendo del dispositivo, los registros son: + PIELy PIRI + PIE2 y PIR2 Estos registros no mantienen una ubica- ccién estindar para cada uno de sus bits. Cada tipo de microcontrolador posee algunas varia- ciones sobre la ubicacién de ellos dentro del registro. Por esta razdn, cuando hablemos de uno de los bits de estos registros no daremos su posicién exacta. Dependiendo de la refe- rencia del microcontrolador PIC, se debe bus- cat su posicién en las hojas de datos. Oy ea) tay oe oy my aay oy oy Gay sy Oe; aTy a] ay Oe; Ty cy coy Ow) (ESI ee ee Fete oer see Sat ene 5 i ‘en0o0an ‘Figura 11.5 Diegrama de temps det comportamiento det mrcracontrolador frente a una interupcién INT & GIR. cu pict sov Mercoresiees En el futuro es muy posible que se desa- srollen médulos adicionales que puedan gene- rar interrupciones, de manera que no seria raro encontrar més adelante pares de registros como el PIR y el PIE3. En apartados siguientes don- yeste prograna cuenta el nimero de Heransiciones en la entrada REO/INT jy el resultado lo muestra en 4 LED ;colocados en RB4..RB7 List pa16c84 #include CONFIG 11H CONSTANT BASE_VAR = CH CONTADOR EQU ~ BASE_VAR+1 RG 00H GoTo INICIO ORG = 04H GOTO SERV_DE_INT INICIO: BSF STATUS, RPO MOVLW 1 MOVWF TRISB BCF STATUS, RPO; BANCO 0 CLRF CONTADOR BCF —PORTB,4 BCF —-PORTB,S BCF —PORTB,6 BCF —PORTB,7 BSE OPTION, INTDEG BCF —_INTCON, INTF [BORA BANDERA DE INTERRUPCION BSF _INTCON, INTE; e 5ENMASCARA INT. EXTERNAS BSF —_INTCON, GIE sHABILITO INTERRUPCIONES PT1: SLEEP c Goro. Prt SERV_DE_INT: INCF_ CONTADOR, F BTFSS CONTADOR, BCF PORTE, 4 BTFSC CONTADOR, BSF PORTB,4 BTFSS CONTABOR, 1 BCE PORTB, 5 BTFSC CONTADOR, 1 BSF PORTE, 5 D BTFSS CONTADOR, 2 BCF PORTE, 6 BTFSC CONTADOR, 2 BSF PORTE, 6 BTFSS CONTADOR,3 BCF PORTE, 7 BTFSC CONTADOR, 3 BSF PORTB,7 BCE INTCON, INTF 3LIMPIA LA BANDERA CORRESPOND. RETFIE END Figura 11.64 Cédigo del eiemplo 1 Aiac) de hablaremos sobre los temporizadores TMR1 y TMR2, notaremos la influencia de estos re- gistros PIE y PIR Existe un término conocido como laten- cia de la interrupcidn, que se define como el tiempo que transcurre desde que aparecié la interrupcién (la bandera se ha puesto en uno) hasta el momento en que la instruccién ubica- da en la posicién 0004H empieza a ejecutarse, este tiempo es de 3 TCY (ciclos de instruccién) para interrupciones sincrénicas (como por ejemplo las provenientes de un temporizador) Para interrupciones no sinerénicas (nor- malmente las externas), como la INT 0 la del cambio en el puerto B, el tiempo de latencia estd entre 3 y 3,75 TCY (ciclos de instruc- cidn), figura 11.5. En esta figura podemos observar el proceso que ocurre desde que se presenta una interrupcién we oe Figura 11.60 Circuito de alicaci del ejemplo 1 Registro OPCION ary ars ars. Selector de Manco {Fence de sutida Oi Fanco de beeda Figura 11.7 Configuacion del flanco que se va alr para pin IT Curso practico sobre Microcontroladores descr. & Uae rae or et tl originada por un flanco de subida por el pin INT, La bandera asociada se activa al siguien- te ciclo Qy permanece en ese estado hasta que no sea borrada. Desde alli hasta que el micro- controlador llega a la direccién 04H, han transcurrido de 3 a 4 ciclos de instruccién, El bit GIE que estaba en alto (de lo contrario no se hubiera podido haber leido la interrupcién) €s puesto en bajo automaticamente por la CPU para evitar leer otras interrupciones mientras. ejecutamos la actual. La mejor manera de en- tender el manejo de las interrupciones es a tra- vés de un ejemplo. Ejemplo de interrupcién externa El programa que observamos en la figura 11.6a, cuenta el niimero de transiciones positivas en el pin RBO/INT (pin 6) de un PICIGE84 y muestra dl resultado de la cuenta en cuatro diodos LED colocados en las salidas RB4 a RB7, figura 11.6b. En la parte A del programa se configura el puerto RBO/INT como entrada y los demés pines del puerto B como salidas. El bie INTDEG del regis- tro OPCION, figura 11.7, debe ponerse en “uno” para que la interrupcién externa ocurra en el flan- 0 positivo dela sefial en RBO, o ponerseen “cero” para que la interrupcién ocurra en el flanco nega- tivo dela sefal. Luego, el bir INTE se activa, bloque B del programa, Cuando el procesador entra en estado de reset, codas las banderas se limpian autométi- camente; sin embargo, es mejor ser precavidos y ponerlas manualmente en “cero” (no todas las marcas de microcontroladores ejecutan un reset tan limpio como los de Microchip). Finalmente, el bir GIE se pone en uno para habilitar las interrupciones y luego el programa entra en modo SLEEP, bloque C del programa. Al ocurrir la interrupcién, el contador de programa se almacena y la ejecucién del pro- grama se direcciona a la posicién 0004H, en donde nos ubicamos en la direccién de la ruti- na de interrupcién. Mientras nos encontramos ejecutando una rutina de interrupcién, el bit GIE sera deshabilitado por lo cual no se atiende a nin- guna otra interrupcién hasta que no salgamos de esa rutina (esto puede ser una desventaja ya que es posible que en un disefio especial deseemos esa caracteristica). En larutina de interrupcién, bloque D, el contador se incrementa y se visualiza en los diodos LED. En este caso se usé una técnica un poco dispendiosa para activar o desactivar los bits ya que en el siguiente ejemplo se usar el bit RB3 para otros propésitos. El bit bandera asociado con la interrup- cién externa se limpia para permitir que el procesador se entere de que la peticién de in- terrupcién ha sido atendida. La instruccién RETEIE hace varias cosas. Ella habilita de nue- vo el bir GIE y configura el contador de pro- grama a su antiguo valor (el que tenia antes de [a interrupcidn). El procesador entra en esta- do de SLEEP hasta que ocurra una nueva tran- sicidn en el pin RBO/INT. El estado de SLEEP es una posibilidad que brindan algunos microcontroladores, por el cual se entra aun modo de bajo consumo; este con- cepto lo estudiaremos en una leccién posterior. Interrupciones por cambio en un pin RB E] PIC16F84, al igual que muchos otros, per- mite establecer como fuente de interrupcin el cambio de nivel en algunos pines determina- dos. En el PICIGF84 (al igual que en los 16C554/556), la interrupcién se genera en los pines RB4, RBS, RBG y RB7. Esta caracteristi- ca puede usarse como una buena técnica de aho- ro en el consumo de potencia de un sistema, El procesador se puede poner en reposo (en modo SLEEP) y se despierta s6lo cuando el , usuario cambia el estado de alguna de esas en- tradas, El procesador entonces ejecuta determi- nadas tareas y luego vuelve a reposo. El procedimiento general para activar este tipo de interrupcién es similar al que se sigue cuando se va activar la del timer0 0 la inte- rrupcién externa (INT). Se debe activar al bit RBIE del registro OPCION y luego activar el bir habilitador global de interrupciones (GIE). La operacién interna del procesador, en este tipo de interrupcién, consiste en leer el nibble alto del puerto B y hacer una copia; la interrupcisn se genera cuando la lectura del nibble alto del puerto B difiere de esa copia. Dentro de la rutina de interrupcién es im- portante que se lea el puerto B para actuali- zar la copia. Para hacerlo, utilizamos las si- guientes instrucciones: BCF MOVE INTCON,RBIF PORTB,W Se observa que se limpia la bandera de inte- rrupcién en RB, pero el estado del nibble alto del puerto B atin sigue siendo diferente ala anti- gua copia, por eso el procesador inmediatamen- te activard la bandera RBIF y se activaré de nue- vo la interrupcién. Por esta razén el cédigo ante- rior es incorrecto, la manera adecuada es asi MOVE BCE PORTB,W INTCON,RBIF Al ejecutar MOVF PORTB,W, [a antigua copia del nibble alto toma el estado actual y hue~ go se limpia la bandera, De esta manera, la si- guiente interrupcién ocurriré cuando el nibble alto del puerto B cambie de nuevo. Problemas comunes al trabajar con interrupciones Ahora analizaremos algunos inconvenientes que se pueden presentar al trabajar con inte- rrupciones, con lo cual posiblemente ahorre- mos muchas horas de trabajo. cars pitica ste Micocontlceres CRGACUT: Problema 1: al desactivar las interrupciones gedmo asegurarse que realmente lo estin? Si tenemos un programa donde debemos atender las incerrupciones mientras se ejecutan varias tareas (TA- REA_1), pero no deseamos que se atiendan interrup- cones mientras se ejecutan otras tareas (TAREA_2), se puede pensar en el cédigo de la figura 11.8. De manera inesperada fuimos interrum- pidos mientras ejecutébamos el cédigo de la TAREA_2. Por alguna razén_ la instruccién BCF INTCON,GIE no esté haciendo su tra- bajo. ;Que pasd entonces? zocurrié una inte- rrupcién mientras se estaba ejecutando BCE INTCON,GIE? Cuando ocurre una interrupcién, la ins truccidn que se esté ejecutando en el momen- to termina de cumplirse y luego el programa se dirige a la direccién 0004H donde se en- cuentra la rutina. Al ejecutar RETFIE el programa retor- nard a la primera linea de TAREA_2 con las interrupciones atin habilitadas. Por eso el bit GIE debe limpiarse, pero debido a que la eje- cucién de la rutina de interrupcién causa que dicho bir se ponga en uno, cuando ejecuta- mos la rutina TAREA_2 las interrupciones atin se encuentran habilitadas. La solucién se muestra en la figura 11.9. LAZO: TAREA_L: BSF _ INTCON, GIE jSE_REALIZAN TAREAS YACEPTANDO_INTERRUPCIONES LAS _TAREAS VAN EN ESTA 3PARTE DEL PROGRAMA BCF _ INTCON, GIE AHORA SE DESHABILITAN TODAS LAS JINTERRUPCIONES TAREA2: SE REALIZAN VARIAS HTAREAS SIN ATENDER TNTERRUPCIONES. SESAS TAREAS VAN EN ESTA PARTE DEL PROGRAMA GoTo LAZO Figura 11.8 Cédigo de problema 1 tAz0: TAREA1: BSF INTCON, GIE jREALIZA VARIAS TAREAS ACEPTANDO SINTERRUPCIONES: ‘APAGO_INTERRUPS: BCF__INTCON,GIE;APAGO EL GLOBAL BTFSCINTCON, GIE GOTO APAGO_INTERRUPS TAREA_2: SREALIZA VARTAS TAREAS SIN ATENDER INTERRUPCIONES. GOTO LAZO Figura 11.9 Solucién al problema 1 Notemos que el Ait GIE se ha limpiado y ve- rificado, para estar completamente seguros de que scha limpiado correctamente. El proceso debe re- petirse cuantas veces sea necesario para que esté deshabilitado, Asi, si una interrupcién ocurre mientras se eje- cuta BCF INTCON,GIE, la rutina de servicio de interrupcidn activard ese bit, pero el programa con- tinuard con la instruccién BTFSC INTCON,GIE, donde derecta que GIE esté activado y por lo tanto se debe hacer algo para apagarlo, De esta manera el programa sélo llegaré a TAREA_2 después de que se ha constatado que el bit GIE ha sido limpiado. Problema 2: bancos de regittros: squé pasa cuando estamos ejecutanda un programa donde necesitemos atender interrupciones enando estemos en el banco 0 6 en el banco 1? Alinicio de la rutina de interrupcién, los regis- tros Wy ESTADO se almacenan en W_SEGUR y ESTADO_SEGUR. Asumamos que estas va- riables son 20H y 21H. Sila interrupcién apare- ce cuando nos encontramos en el banco 0, ellos se almacenan en las direcciones 20H y 21H. Pero si la interrupcidn ocurre cuando nos encontra- mos en el banco 1, esos registros se almacenan en las direcciones AO y A1H. Nuestro servicio de interrupcién debe conmu- tar al banco 0 y luego restaurar W y ESTADO, Ue elie ue ue ca cele u cg |e pero en realidad recuperamos los valores que se buscaron en AO y Al. En el caso particular de un 16F84, esto no es un problema grande, ya que la RAM del usuario se divide en dos bancos los cuales uno es espejo del otro. Esto es, 20H y AOH de hecho estan en la misma posicién. El problema real es cuando se utilizan microcon- troladores donde los bancos no son espejos en- tre ellos. En ellos 20H y AOH son registros com- pletamente diferentes. Para solucionar ese problema, se pueden per- mitir interrupciones s6lo cuando nuestro progra- ma se encuentra trabajando en el banco 0. De hecho, usualmente utilizamos el banco 1 para configurar los registros tri-estado lo cual toma muy poco tiempo, yen muchos casos, deshabili- tar las interrupciones durante este lapso de tiem- po no nos trae ningun problema, figura 11.10. ;voy al banco 1 APAGO_INTERRUPS BCF INTCON, GIE sDESHABILITO SINTERRUPCIONES BTFSC INTCON, GIE GOTO APAGO_INTERRUPS BSF STATUS, RPO;BANCO 1 ZTRABAJO CON TRISA 0 TRISB BCF STATUS,RPO;BANCO 0 BSF INTCON; GIE 5AHORA’ HABILITO HINTERRUPCIONES Figura 11.10 Problema 2 Comentarios finales ‘Todos las observaciones que aqui se analizaron, pueden resultar muy obvias después de ver su so- lucién, Peto si no la conocemos seguramente gas- taremos varios dias averiguando que pas6. Cuando se desarrollan productos (sobre todo de calidad comercial) es muy importante en- tender los problemas que se puedan presentar. En ese proceso de enrendimiento se pueden cemplear varios dias (meses, afios o tal vez nun- ca). Cuando no se logra un entendimiento to- tal del problema, es cuando empiezan a fallar los productos con el transcurrir del tiempo. Como hemos visto en lecciones anteriores, den- tro de los microcontroladores existen unos mé- dulos que podemos utilizar para funciones exac- tas de medicién de tiempo, llamados temporiza- dores. En esta leccidn analizaremos estos elemen- tos internos presentes en los microcontroladores PIC. En la seccién de programacién, desarrolla- remos ejemplos practicos para el manejo de es- tos importantes elementos. caro péctco sore Meroconvosiore MgncaT:: Y Cie Sieeeomarec rn eto En la familia de los microcontroladores PIC aparecen tres médulos temporizadores denomi nados: TimerO (TMRO), Timer! (TMR1) y Ti- ‘mer2(TMR2). Posiblemente el Timer! sea el ms versitil ya que puede usarse para monitorear el tiempo entre las transiciones de una sefial ocu- de entrada o para controlar de manera precisa el tiempo de transicién en un pin de salida, El Timer0 puede utilizarse para contar eventos externos (transiciones de seftales) 0 ge- nerar interrupciones cuando ha ocurrido un niimero deseado de eventos. rridas en un Existe la manera incluso, a través de un mé- dulo interno denominado prescalador, de leer entradas a una rata de velocidad de hasta 50 Mhz, es decir, que podemos lograr mucha mas velocidad que cuando leemos normalmente entradas por los piness este ejercicio lo analiza- remos en el proyecto del frecuencimetro inclui do en este curso. El Timer? tiene mucha mis libertad en su funcionamiento y ademés de temporizador, puede usarse para manejar el perfodo de una sefial de salida en formato de modulacién por ancho de pulso (PWM). En este tipo de seftal, la salida de un pin permanece en estado I6gico alto durante un porcentaje determinado de cada periodo. El porcentaje se controla escribiendo en el registro CCP (Capture/Compare!PWM), y el petiodo de la sefial de salida se controla por el Timer2. Este tipo de sefiales es muy utilizado en el control de motores, luces, ete; el médulo CCP Jo analizaremos en detalle en la siguiente leccién. Temporizador 0 (Timer0: TMRO) Este temporizador puede entenderse como un registro de 8 bits, con el cual podemos hacer operaciones de lectura o escritura en cualquier momento. Puede incrementarse automdtica- mente ya sea por medio de los ciclos internos del reloj o por medio de pulsos externos que entran por un pin especifico del microcontro- fry lador y nos sirven para crear bases de tiempo muy precisas o para contar eventos externos. Por este motivo a este médulo se le ha de- nominado temporizador/contador, ya que puede configurarse para que sirva de temporizadoro que actiie como contador de eventos. Cuando el Timer0 inicia su operacién, se incrementa con cada ciclo de maquina o con cada pulso externo introducido por cl pin RA4/ TOCKI; la eleccién de cual va. ser la fuente de sefial se configura en el registro OPCION. El registro TIMERO (de 8 bits) se va llenando has- ta llegar a FF; si en ese momento Ilega otro in- cremento pasa a 00 y justo ahi puede generar una interrupcién, con lo cual podemos generar una base de tiempo confiable El mimero de veces que el contador llega a cierto valor puede ser contado usando otro regis- tro. EL TMRO es un médulo auténomo, de ma- nera que el procesador puede estar ejecutando cualquier tarea mientras que el temporizador ‘TMRO se encuentra trabajando. Las posibles salidas que podemos obtener del TMRO son dos: la primera, es la lectura del re- gistro TMRO (H'01"), el cual podemos leer en cualquier momento y tomar decisiones sobre esa lectura, y la segunda, es generar una interrup- cidn por desborde del registro, es decir, cuando se llena tomando el valor de FF y pasa 2 00. El registro OPCION (OPTION) cuya es- tructura la estudiamos en la leccién 8 de este curso, es el que v funcionamiento de este médulo de tempo Gién. El bit 5 (TOCS) lo configuramos para que el TMRO funcione como temporizador (se incremente con cl reloj interno de la maquina) © como contador (se incremente con los pul- sos externos lefdos por un pin determinado del microcontrolador llamado TOCK). Para detec- tar cudl es el pin que corresponde a esta fun- Gidn en cada tipo de micro, debemos referir- izamos para configurar el ®& CITE cure, .r:ct00 0 meroconriatores Moc) Divisor dela Entradas entrada Salas Pin de entrada aR Temporizador/Contador Figura 12.1 Esquema en bloques del THRO nos a las hojas de datos. Con un cero (0) en este bite! TMRO funciona como temporizador,y con un uno (1) funciona como contador. Hay que tener en cuenta que si el TMRO se ha configurado como contador, él sélo fun- cionard con flancos, no con niveles; es decir, que sélo contard las transiciones de cero a uno (flanco de subida), o de uno a cero (Flanco de bajada). Por esta razén se le debe decir al TMRO qué transicién queremos que cuente através del bir 4 del registro OPCION deno- minado TOSE; poniendo este bir en cero (0), el TMRO contaré todos los flancos de subida y poniéndolo en uno (1), el TMRO contaré todos los flancos de bajada, Para modificar los contenidos del registro OPCION, existen dos opciones: la primera consiste en ubicarnos en el banco correspon- diente, cargar W con el mimero que llevaremos a OPCION y pasar los contenidos de W a di- cho registro mediante la instruccién MOVWE OPCION, luego se debe retornar al banco inicial para continuar trabajando normalmen- te, La segunda no requiere movernos de ban- co, simplemente consiste en dar la instruc- cién especial OPTION, la cual movers in- mediatamente los contenidos que tengamos en ese momento almacenados en el registro W al registro OPCION. La fuente de sefial hacia el TMRO puede ser sometida a un proceso de divisidn de fre- cuencia a través de un médulo denominado el prescalador, figura 12.1. En este médulo la frecuencia de entrada es dividida por un valor determinado por los bits 0, 1 y 2 del registro OPCION, que corresponden al va- lor PSO, PSI y PS2, segdn la tabla 12.1. La cuenta o la temporizacién del TMRO puede hacerse sin la intervencién del prescalador; para hacerlo, debemos poner un uno (1) en el bit 3 del registro OPCION: PSA. Para tener una lectura confiable cuando vamos a trabajar con una sefial de reloj exter- na, es mejor tener en cuenta las siguientes re- comendaciones: 1. Sino se va a utilizar el prescalador, la entrada debe permanecer en alto (o en bajo) durante al menos dos (2) periodos de oscilacién del reloj del microcontrolador (Tose). 2. Sisevaa utilizar el prescalador, el periodo de en- ‘tada debe ser de al menos cuatro (4) Tose dividi- oPcION Tabla 12.1 Valores configurados en el registro (OPCION para eprescalador Cr Figura 12.2 Esquema del funcionamiento del TWAO dos por el valor del prescalador,y los niveles altos y bajos deben ser mayores a 10ns de duracién. Si existe una operacién de escritura sobre el TIMERO, el incremento se inhibe por los siguientes dos ciclos de instruccién. Esto puc- de compensarse ajustando el niimero cargado en el registro. El prescalador Como ya se mencion6, el prescalador es un mé- dulo interno que divide la frecuencia de reloj de entrada al temporizador. Para ejecutar esta tarea utiliza como factor de divisién el ntimero confi- gurado en OPCION en los bits 0, 1 y 2. De esta manera el usuario puede jugar con este factor de divisién para lograr un intervalo de tiempo preci- so (en el caso de que trabaje como temporizador). En este punto cabe resaltar que para ajustar un intervalo de tiempo (por ejemplo 1 segundo) se puede manipular, ademds del prescalador, el tipo de oscilador externo que mas se ajuste; en el pro- yecto Reloj Digital con PIC presente en este curso “observaremos como se creé un intervalo exacto de un segundo mediante un cristal de 1.87MHe. La tinica manera de no prescalar el tempori- zador es asignarlo al perro guardién (watchdog) Se trata de un registro de 8 dies que cumple con una labor muy especifica (como veremos mas adelante) al cual podemos asignar este factor de division, Algunos autores mencionan que cuan- do se asigna al TMRO funciona como prescala- dor y cuando se signa al watchdog funciona como postescalador. Sin embargo en muchas fuentes bibliograficas se conoce simplemente como pres- calador sin distinguir si hace el trabajo de pre de post. El manejo del watchdag lo analizaremos detenidamente en una leccién posterior. ‘Veamos ahora algunas recomendaciones para el uso del TIMERO. 1, Configurando el TIMERO, Los pasos son los siguientes: + Asignar el prescalador * Configurar el temporizador colocando los bits adecuados en el registro OPCION * Para inicializar el temporizador, simple- mente debemos escribir un ntimero en el re- gistro TIMERO, o borrarlo. Cuando se ha cargado con un ntimero el temporizador cuenta desde ese niimero, figura 12.2. * Una vez ha emperado a trabajar no es po- sible detener al TMRO. Salida 1,2 16 ar ra Pid Figura 12.3 Diagram de bioques del TMR2 @& Ser: Coro rte sobre Mercator + Eltemporizadorse mantendsé contando siem- pre y cuando no se haya borrado 0 escrito me- dianteinstrucciones del programa o cl microcon- trolador no se haya inicializado de nuevo. + El cemporizador/contador debe ser recar- gado después de cada sobreflujo para repeti- dos intervalos de tiempo. Si esto no se ha he- cho, FF resultard en cada ocasion. 2. , Céimo nos damos cuenta que el timer0 esti haciendo algo? + Mediante repetidas lecturas en el registro, © chequeando un bit de ese registro. + Mediante interrupcién en el momento del sobreflujo de FF a 00. Asf es como nos damos cuenta que el temporizador ha ter- minado de contar. La bandera de interrup- cidn es la salida. El Timer2 El Timer2 es un temporizador de 8 bits que s6lo puede configurarse para que su fuente de sefial sea el reloj interno, de manera que sdlo sirve como temporizador. Cuenta con un mé- dulo prescalador, un médulo postescalador y un registro para el ajuste del periodo. El pres- calador divide el tren de pulsos que le llegan por un valor determinado (1, 4 0 16). El diagrama de bloques del TMR2 es el que se aprecia en la figura 12.3. Como pode- mos observar, el TMR2 se incrementa por el reloj interno (fosc/4) desde 0x00 hasta el nui- mero establecido por el registro del periodo (PR2). Si en ese momento ocurte otro incre- mento, la cuenta pasa de nuevo a 0x00. El registro del periodo se denomina PR2, el cual es de 8 bitsy sobre él podemos hacer opera~ ciones de lectura o escritura, de manera que po- demos modificar el momento del desborde. En el registro PR2 configuramos un niime- ro determinado el cual es vigilado permanente- mente por un médulo de comparacién, y cada ver que el valor contenido en el TMR2 concuer- Lie) da con el valor contenido en el registro del pe- tiodo, se origina un pulso hacia el postescalador. En él se ejecuta una nueva divisién de la salida del comparador y pucde activar la bandera de interrupcién dentro del registro PIRI (recor- demos de la leccién 11, que el registro PIR es propio de cada tipo de microcontrolador segiin las interrupciones que posea internamente, ra- 26n por la cual, el lector debe ubicar en cada hoja de datos, dénde se encuentra la bandera del TMR2 dependiendo del microcontrolador). De la misma manera, cuando el valor del TMR2 es igual al registro PR2, la salida del comparador inicializa de nuevo el TMR2, lo cual es muy utilizado para la generacién de PWM cuando se usa el médulo CCP (lo ve- remos més adelante), al igual que en aplica- ciones seriales (SSP). Las posibles salidas del TRM2 son la leceura que se puede hacer en cualquier momento del registro TMR2 0 la bandera de interrupcién ori- ginada por el TMR2, la cual se genera cada vez (que se igualan PR2 y TMR2. EITMR2 puede activarse o desactivarse en cual- quier momento, mediante un biede control ubicado Registro: T2CON. CONTROL Timer2 a oe bit7: Selee desde 0 bit6-3: TOUTPS3 - TOUTPSO o bits de seleccién de la salda del 12 poses 1-16 postescala itz: Tteon obras serail Timer? 4: Timer? esta encendido O:Timer2 est a bit1-0: T2CKPS1 - T2CKPSOo bits de seleccin del prescalador del rescala {i= prscaltr et en 16 Figura 12.4 RegistroT2GON para el contro cel TIMER2 SGU eee Ses nue eee RON | 2GRST | T2ORSD cn el registto T2GON. Los valores presentes en el prey postescalador se borran por tres razones funda ‘mentales: la escritura sobre TMRR2, una escritura so- bre T2CON, 0 por un estado de reset, que cuando ocurre, llena a PR2 con unos. En la figura 12.4 vemos el registro de con- trol del TMR2; alli podemos ver el bit 2 deno- minado TMR2ON con el cual activamos o des- activamos el funcionamiento del temporizados, los bits 3 al 6 que configuran el valor que va a tener el postescalador y los ts 0 y 1 los cuales establecerdn el valor del prescalador. Veamos los pasos para configurar el modo de operacién de este temporizador; en la figura 12.5 aprecia- mos una tabla con todos los registros asociados al manejo del TMR2, En el registro T2CON debemos seleccionar cl valor del pre y postescalador y la activacién del ‘TMR2. Para habilitar la interrupcién de este médulo debemos activar el bir TMR2IE del re- gistro PIE1; la ubicacién de este bir dentro del registro no siempre es la misma. Depende de la referencia del microcontrola- dor que estemos usando, por eso es conveniente verificarlo en las hojas de datos. Del registro de control de interrupciones INTCON debemos activar los bit: 6 y 7 que co- rresponden al habilitador global (GIE) y al habi- litador de interrupciones de otros perifé (PEIE). La bandera indicadora de la aparicién de esta interrupcién se encuentra dentro del re- gistto PIRI y se denomina TMR2IF; cuya ubi- Figura 12:5 Registros asocados con ef manejo del TMA2 cacién también depende del microcontrolador. En la figura 12.6 observamos un oddigo para inicializar el TMR2. El timert El temporizador Timerl es un médulo de 16 bits quese divide en dos registros de 8 bits (TMRIH y TMRIL), sobre los cuales se pueden ejecutar ope- raciones de lectura y escritura. Este par de regis- CLRF T2CON DETENGO AL TMRZ, PRESCALADOR = 1:1, POSTESCALADOR = BORRO REGISTRO TMRZ DESHABILITO LINTERRUPCIONES, SALTO AL BANCO 1. DESHABILITO INTERRUP- CLRF THR2 ; 3 CTONES DE MODULOS CLRF INTCON BSF STATUS, RPO ; CLRF PIEL PERIFERICOS. REGRESO AL BANCO 0 BORRO BANDERAS DE INT. 3 PERTFERICAS POSTESCALADOR= 1:15, 3 PRESCALADOR = 1:16 3 TIMER2 APAGADO TIMER2 EMPIEZA A 3 INCREMENTARSE ESPERO_DESBORDE BTFSS PIRL, THRZIF ; BCF STATUS, RPO CLRF PIRI MOVLW @x72 MOVWE T2CON BSF T2CON, TMRZON HHA OCURRIDO UNA INTE- RRUPCION POR TMR2? GOTO ESPERO_DESBORDE ;NO, CONTINUO CON ; EL Ciclo. 3 SE HA DESBORDADO EL 3 TIMER? BCF PIR1, TMRZIF ; ST, BORRO LA BANDERA 3 Y CONTINGO. Figura 12.6 Cécligo pare el manejo del TIMER2 9 LeACIT: courte ste cette = errs TWA = Not capture TW = Moto compar aa @. twos se incrementan desde 0000H hasta FFEFH y al pasar por este tiltimo valor, regresan a 0000H Al igual que el Timer0, el Timer! puede generar interrupcién por desborde, para lo cual requiere que un bit de habilitacién, presente en el registro PIE, se encuentre activado. El Timer puede ser empleado de diferen- tes maneras. En primer lugar, lo podemos uti- lizar de la manera tipica para leer los conteni- dos del registro TIMERI, en cualquier mo- mento del programa, figura 12.7a. La segunda posibilidad que se tiene es la de capturar (grabar) los contenidos del regis- tro TMRI para ser recuperados en el momei to en que un flanco sea lefdo externamente por el microcontrolador, figura 12.7b. Los pulsos que entran al TMR1 incrementan el contador. Cuando un flanco Ilega por el pin CCP, los contenidos son capturados y se activa una bandera de interrupcisn. El valor capturado se encuentra ahora disponible para ser lefdo. Los contenidos del TMRI pucden com- pararse continuamente con los contenidos de tun registro especial de comparacién, el cual ha Figura 12.7 Modes de funcionamiento del TIMER sido cargado previamente con algin valor. Cuando los contenidos del TIMERI se incre- mentan y Hegan a un valor igual al valor al- macenado en dicho registro de comparacién, se produce una salida, que puede ser un cam- bio de nivel en el pin de salida del médulo CCP, una interrupcién o ambos, figura 12.7 La utilizacién del médulo CCP permite leer el TIMER1 y almacenar el resultado para utilizarlo posteriormente cuando se detecta un flanco de entrada externo, todo esto mien- tras el microcontrolador est4 ocupado hacien- do otras tareas. Con el médulo CCP también es posible manejar un pin de salida cuando los contenidos del TIMER1 se incrementan hasta un valor de- terminado, de manera totalmente independien- te de otras tareas que el microcontrolador se en- cuentre ejecutando. Descripcién del TIMER1 En la figura 12.8 apreciamos un diageama ge- neral de la estructura del TMR1. Podemos no- tar que la fuente de sefial para el TIMER! pue- de ser una sefial externa para aplicaciones de cuenta, 0 los pulsos internos de reloj para apli- Bit del registro TICON Evento especial disparado desde ‘el médulo COP rr ro Pa Figura 128 Diagram de bloques del IMERY cre pret sat ieee Serr: & Minetes cues Registro: T1CON. Control det Timert it bite-3: inna ona Sonate eee 10: valor del prescalador are eae Fe Sea cea a tora TISYNC 0 bit de seleccion de la entrada externa de ee comme ee Heresies amet Esta es ignorada bit: bite: ‘itt: TMRICS 0 bis de solecciin de la unto para Timer! 11 entrada externa por el pin TTOSO/T1Ckt(Tanco subida) lo interno FOSCI4) ‘ito: TMRYON o bit de nabitacin del Timort 4: haoita Timer? 0: detiene Timert Figura 12.9 Registro do contol del TIMER? (T1CON) caciones de temporizaci6n, la entrada ingresa a un médulo prescalador que divide los pulsos de entrada por 1, 2, 40 8. La seleccién de la fuente de sefial para el TIMER1 se hace mediante un bir especifico del registro TICON, figura 12.9. Se trata del bit TMRICS con el cual se establece si la entra- da va a ser externa o van a ser los ciclos de reloj internos, De igual manera, a través del bir 0 denominado TMRION de este registro, po- demos activar 0 desactivar el TMR1 en cual- quier momento del programa y mediante los bits4y 5 (TICKPS1 yTICKPS0) se establecen los valores que tendré el prescalador para di- r la sefial de entrada. Cuando el TMRI se desborda, se activa un bir de bandera del registro PIRI y se ge- nera una interrupcién, si ésta tiltima se ha ha- bilicado previamente me pondiente dentro del registro PIE1. Los pul- sos externos deben entrar por un pin especi- te el bit corres- introladores Pl fico cuyo nombre dentro del encapsulado es TICKI, figura 12.10. Los pulsos externos que entran al TMR1 pueden ser de dos tipos. El primero, es por pul- s0s que entran por TICKI, asi el TMR1 se in- crementa en cada flanco de subida que se pre- sente en este pin (dividido por el valor especifi cado en el prescalador). Este modo de opera- cidn se habilita con el bit TMRICS pertene- ciente al registro TICON. Cuando se desea leer pulsos por el pin TICKI (bie 0 del puerto C), este pin debe estar previamente configurado como entrada. El segundo tipo de entrada al TIMERI es a través de un circuito oscilador conectado a los pines T1OSCI y T1OSCO, el cual puede ser hasta de 200 KHz, figura 12.11, La aplica- n clasica de esta conexién que se encuentra en gran cantidad de notas de aplicacién, es la creacién de un reloj de tiempo real utilizando este temporizador y un cristal de 32.768 KHz oared Figura 12.10 Entrada dol TRY TWRt ‘Figura 12.14 Conextén del TMAY con un ciculto oscllador para la crea de un rela de tiempo real > fw ‘HE. Curso préctico sobre Microcontrotadores MODULOS CcP (CAPTURA/COMPARACION/PWM) En la leccién anterior conocimos los médulos temporizadores de los microcontroladores PIC que son la base para trabajar con los médulos CCP. Ahora estudiaremos el manejo y funcio- Matrtadcma time oars, pueden ser de gran utilidad en muchas aplicaciones en electrénica. Hablamos en plural sobre estos mé- dulos debido a que en un microcontrolador pue- de existir més de un médulo CCP, TES ete ec) EI modo de comparacién permite manejar de manera muy efectiva la slida sobre un pin determinado del microcontrolador y el modo de captura permite hacer mediciones muy precisas delos instantes en que se producen algunos lan cos de entrada. Ambos modos se han disefiado para trabajar con el Timerl; si un microcontro- Jador posee varios médulos CCP funcionando en modo de captura 0 comparacién, ellos debe- rin compartir el mismo temporizador. El modo de PWM (modulacién por ancho de pulso) es ‘muy utilzado para controlar motores, imparas u otras cargas resistivas y esté disefiado para el ‘Timer2, de manera que ningéin owo temporiza- dor puede ejecutar esta funcion, ver Tabla 13.1. Cada médulo CCP contiene un registro de 16 bits el cual puede trabajar como registo de cap- tura de 16 diis, como un registro de compara- cidn de 16 bits 0 como un registro para generar PWM en 10 bits Todos los médulos CCP tra- Dajan pricticamente de la misma manera. Cada médulo CCP posee tres registros para los cuales utilizaremos nombres genéri cos, como se muestra en la Tabla 13.2. En ella vemos que, cuando dentro de cada registro colocamos una x, quiere decir que hablamos indistintamente del médulo 1 0 del médulo 2. En la Tabla 13.3 se muestran las interaccio- nes entre los médulos CCP; en esta tabla, CCPx es un médulo CCP y CCPy es otro mé- dulo CCP. En la figura 13.1 tenemos el regis- tro de control de estos médulos CCP con la funcién de cada uno de sus bits constitutivos. Modo de comparacién El Timerl junto con el CCP, pueden controlar de ‘manera muy precisa la salida de un pin del micro- Registro de control: CCPxCON BE ae oe ' cman core ‘bit7-6: Sin implementa Se leen como 0 ‘it3-0: CCPxM3:CCPxIMO. Bit de selecion del modo COPx (000; Capturacompara/apaga PHM (enc el médulo COP) 100: Modo de captra, cada anc de bejada 101. Modo de captura, cada fanca de sub (0110: Modo de captura de cada 4®lanco de subida 111: Modo de captra decaf 16° fanco de sutica 1000: Mado de comparacién rica pin OG ban, cuando la comparacion indica igual, poe et pin CCP en ato (aac el CEP) 1001: Mado dé comparacién Ina pin GOP ato, cuando a comparacén incica igual, poe el pin CCP en bajo se atv el COPF) 1010: Maco dé comparacion Generairtsrupcen por sofware uandola compar ine ule aca tBECDP, pn Cro se atecta) 1011: Mado de comparacén Disparador de eventos especiales (se activa el bit CPI) ‘hee Modo PWM Figura 13.1 Registro de contro de les méduios CCP controlador, independiente de las tareas que se en- cuentre ejecutando la CPU. Algunos microcontro- ladores como el 16C62A, el 16C64A y el 16C72 solo cuentan con un médulo CCP ellos solo pueden controlar los tiempos de salida del pin RC2/CCP1, mintras que los microcontroladores que poscen dos ‘médulos CCP pueden controlar tambien el pin RCL/ CCP2, Fl nombre que reciben estos pines nos indica la funcién alterna que cumplen, étaes la de pines de propésito general del puerto C, Recordemos de la Ieccién anterior que el Timer! incluye un prescala- dor que divide la frecuencia interna del rel por 1,2, 4 0 8 si seleccionamos la division por 1 obtendre- ‘mos la rsolucién mis fina para ajustar el tempo de sada de un flanco de salida. Esto significa que, con tun cristal de 4MHz, el tiempo de los flancos de un pulso puede controlarse con una resolucién de Lus. Tabla 13.1 Fuente de cada modo de operacion cor! | CCP2 [Comentario CCPxCON CCPICON | CCP2CON | Control de registro CCP CCPRKL CCPRIL | CCPR2L ‘CCP bajc Tabla 13.2 Nomenclatura genérica de fos regitros OCP ‘ & RICH: 20 sca sotr Meroconeltores Ueclac) sic cabo una accidn determinada por ron Ea) los valores esablecidasen los bits ea ours sala de control CCPIM3:CCP1MO wo} Sooo (CCPICON<3:0>); dicha ac- "Tr nt areata eae TH cin puede ser poner en alto, en 2: bajo o permanecer sin cambiar eH Es el estado del pin. Cuando se ori- i gina un desborde en el Timer! 49 snap coco nconpte © el comparador ha establecido 10 rowan COOC oncom igualdad entre el TMR1 y los re- Aare enue umjoy —_ 8ittos CCPRI, se origina un es- saan tado de interrupcién y se activa sem ta sca la bandera correspondiente en el coh registro PIRI. Si se cumple que & ae el habilitador global (GIE), el ha- biltador de interrupciones de pe- riféricosy los bits correspondien- min 6) comms) tes del registro PIEI se encuen- PIE ec Figura 13.2 CCP! en modo de comparacién En la figura 13.2 se muestran grificamente los pasos que se deben seguir para iniciar el médulo de comparacién CCP1; alli observamos los registros que se deben configurar: el TRISC, el TICON y el CCPICON. En este caso el valor almacenado en Jos registros CCPRIH y CCPRIL se compara cons- tantemente con los registros del TMRI, los cuales se incrementan progresivamente por su fuente de sefial. Cuando ambos son iguales, ademas de gene- rarse una interrupcién, en el pin CPI se lleva a tran activados, se generaré en la CPU un estado de interrupcién. Para microcontroladores que po- sean dos médulos CCP, circui- to y los registros asociados al CCP2se muestran el figura 13.3, peto su funcionamiento es pric- ticamente el mismo del circuito anterior; en esta figura podemos apreciar los registros exactos que se deben configurar en este caso, con las respectivas direcciones de cada uno de ellos. Cuando un microcontrolador posee mé- dulo CCP2 debe incluir en su mapa de memoria todos estos registros. Para microcontroladores PIC que poscan dos médulos CCP, si ambos médulos se usan para comparacién 0 captura, deben compartir el TMR1 y en este caso el TMR1 no debe modifi- carse (escribir sobre él). Pero si el TMRI sélo se Tabla 13.3 iteraccitn entre los médulos CCP CC Tse wary ipa ncticoPe sna. sai Troon’ io) TMT ON 1: habia entrada de conteo a TMA shania erraca de conten a TMI ceragon wD) EE ernie cao aha abrre tPF on corpuracn: 8: Sera irc spe 1 6 poweaeonAGlOGr nem Twngeor) LOE) TRON sane organ osc wee & = commoner) coma) PRI oc 4. zacién de la figura 13.2 se ha cumplido con el registro TICON cargado con H’01’, el registro CCPICON se ha car gado con H’09" y el pin RC2/ CCPI se ha puesto inicialmente «en bajo, entonces observemos el coédigo, en la siguiente pagina. En estas lineas de cédigo se configura inicialmente el modo decomparacidn, para iniciar un pulso que permanece hasta un ciclo después de que se habilita Ja entrada de sefial al TMRI. In- mediatamente después de que ese evento ha ocurrido, se con- figura el segundo comparador el cual desactiva el pulso. Si el TMRI esta siendo utilizado Ce MRF para otra funcién ademas de la de comparador, no podra dete- — eset cnet eke (eel as Cora casoel TMR1 sélo puede ser lei- enor do y a partir de esa lectura ob- tener dos valores para configu- as rare registro CCPRI, pata ini- Le ee ciar y detener el pulso. — yy CE ‘helen #80) nme Modo de captura \) —EEEEERE) Lacombinacién del Timerl con Figura 13.3 CCP2 en modo comparacin usa para una funcién, su uso se puede sintetizar en los siguientes pasos: 1, Detener su reloj (borrando el bit MRION del registro TICON) 2. Borrar el TMR1 3. Configurar el registro CCPRI 4, Iniciar de nuevo la cuenta del TMR1 ‘Veamos al siguiente ejemplo. Asumiendo que el'TMRI no se utiliza para ninguna otra funcién, originarun pulso positive de 100 usen el pin RC2/ CCP1 en un microcontrolador PIC funcionando con un cristal de4MHz, Asumamos que la iniciali- A CCPI 0 el CCP2 permite que PIC se utilice para determinar el tiempo en que ocurre un flanco de entrada. El Timerl y su prescalador pueden utilizarse para me- dir directamente intervalos de alto rango; la mejor resolucién en la medida se obtiene omitiendo el ‘uso del prescalador, De esta manera, con un cristal de 4MHez y omitiendo el prescalador, se pueden medir tiempos de aparicién de una entrada en el rango de 1us. Es importante tener claro que en el modo de captura, el pin CCPx debe estar configu- rado como entrada, En la figura 13.4 se muestra el circuito y los respectivos registros asociados al uso del ma- & GHENT: c1s0 proto sore Merocontoadores oe PUL TINTERRUPCTONES CE TLCONTARION ——_DETENCION DEL BTESC INTCON, GE $RELOD DEL TRL GOTO. PULSOL CLRF TMRIH BSF —TICON, TMRION. INICIAN LAS SENALES CLRF TRL AL THR CURE. CCPRI vovn 101 $CONFIGURAR SecuNOO woven #702" $COMPARADOR MOMIF CCPRAL vee ccPRLL BCE CCPICON, 0 ;CONFTOIRO PIN RCCL ast CCPICON —_;LIMPAR PIN RCL/CCPL A COMPARACTON ZEN EL SEGAEO puLson {COPA SCF INTCON,GIE_;0ESHABTLTTAVOS SF INTCON,GIE ;HABILITAR MUEVAMENTE IMOMENTANEAIENTE LAS {LAS INTERRUPCTONES nejo del médulo CCP1 *o) BEEEEEIE! jpn cacon en modo de captura. El tiempo entre dos flan- cos de entrada se deter- mina haciendo dos capturas y restando el tiempo que hubo entre ambas. Este modo de operacién consiste en ‘Encuair caso, activa (COPI en modo capture: 0. naps nears pce es una sald Sienna | ai (0 estaita end de corte a TMA coma 18) comm ws) que los registros o 1 feappuecseatne desis CCPRIH:CCPRIL 1 0 Sempnorcata tance otica mretmnceui capturan el valor de 16 1 1 Snpnoncac 1 treose bits presente en el regis- — mermrnnnRaerrt tro TMRI en el mo- mento en que se pre- senta un evento en el pin CPI. Este evento se selecciona con los bits Inerupan le" de control CCPIM3, CCP1M2, CCPIM1, CCIPMo (CCPICON <3:0>), entre las si- guientes posibilidades: “agent * Cualquier flanco de bajada * Cualquier flanco de subida * Cada 4° flanco de subida * Cada 16° flanco de subida En la figura 13.5 podemos observar el circuio y los registros asociados al funcionamiento y mane~ jo del médulo CCP2, para funcionar en modo de ccaptura; su procedimiento es similar al circuito para mangjar el CCP1, pero difiere en algunos registros STRIN(WOE) ——_TMRIL DE) Teta Adie PRI oc) es Comey MR oes Interupciones cope] [rvs Pe! wacy Figura 13.4 Médulo COP1 en modo de captura que se especifican claramente en esta figura. El cir= cuito de la figura 13.4 puede configurarse inicial- ‘mente para caprurar el tiempo del flanco de subida cargando el registro CCP1CON con H'05'. Cuando se ha ejecutado una capeura, se acti- vva el bie CCPLIF, el cual debe limpiarse mediante cel programa. Si se ejecuta una nueva captura antes de que el valor del registro CCPRI se haya leido, WOR TLDS Cre nu eet MULL) se perderd el valor cap- een turado anteriormente, tro PIRI, se debe activar 6 pin noiccr2 osuna salle cesta ead ce carao a THR Luego de borrar la ban- 000 dera CCPIIF del regis- di: "TwAIOn abt engage conten a THR el bit CCPLIE del regis- by" tro PIE1 para habilitar las interrupciones debi- fautmuer das al médulo CCP1 De igual manera los bits GIE y PEIE deben estar) | Salssiizg activados. Cuando apa, , sapnnciniy2 rece la interrupeién debi- do alla aparicién del lan- co seleccionado para el pulso de entrada en el pin RC2/CCPI1, se limpia la bandera CCPLIF. En este momento se borra el bie de CCPICON para con- figurar la caprura del Memon tiempo de ocurrencia del flanco de bajada de la en- trada. Finalmente el re- gistro de 2 bytes CCPRI tayo, se copia en dos posiciones de memoria RAM, Cuan- do ocurre la segunda in- terrupcidn, el primer va- lor capturado se resta del nuevo valor capturado para proporcio- nar el ancho del pulso. Cuando la medi- cién se ha culminado, se puede borrar el bit CCPME del registro PIE1 Modo de PWM En el modo de modulacién por ancho de pulso (PWM), el pin CCPx produce una salida PWM de 10 dit: Debido a que el pin CCP posee una funcién alterna como pin 1/O, se debe configurar por medio dela ins- truccién TRIS para que trabaje como sali- da En la figura 13.6 se muestra la salida de ‘modulacién por ancho de pulso (PWM) ofi- ‘ginada desde un microcontrolador PIC; allt se observan los principales elementos que se sua en pn CIPD cas, actvando bandera ‘CoP on mod capt: 00 tno cada tare ce taca silpnacicar 0 + Repo de cada ane desi cmRaH we) Coppa re) Pa ncarcre serge 030 TRING) TMRSL FOE) hea PR oc) ———E——e ache | CPE PRA 00} oe Pa TWIE tas interupciones TRIE {)) CEES ec COPE ree 83) Figura 13.5 Mésulo CCP2 en modo de capture Votios Cdn re a ‘oe ss {a} Forma de onde de la salida PWM ‘Figura 13.6. forma de onda de una seal PHM @ Sexr: Curso préctico sobre Merocontoladores distinguen en este tipo de ondas, a saber: el period, el ciclo y a frecuencia de a sefal de PWM. En muchas aplicaciones pricticas es necesario un periodo de la sefal corto. Por ejemplo, el circuito dela figura 13.7 utiliza una sala variable de PWM. para generar voltais entre 0 y 5 voltios, utilizando un filtro pasabajo para conformar un valor prome- dio partir dela forma de onda, Entre més corto sea lpetiodo de la PWM, més répido podri cambiar el valor promedio. Si los cambios en la sefial PWM se caracterizan por una frecuencia maxima, finax como se muestra en la figura 13.6b, se tien Figura 13.7 Circuito de conversion /A Yeary 20 Posten < 00400, s Jems e810 25 Figura 13.8 Manejo de una carga conmuteda goa fimax << feorte del filtro << f pwm Ta frecuencia de corte del filtro necesita estar por debajo dea frecuencia delaonda PWM, fpwm, para remover su componente fundamental y sus ar- ménicos en 3 fpwm, 5 fpwm, 7 fpwm, etc. y dejar solamente los componentes C mente. De esta manera, acortar el periodo de la se- fial de la PWM es la manera mds simple de acomo- ddr sefiales de frecuencia con un filtro que las deje pasar y remucva los efectos de la modulacién PWM. yue varien lenta- En algunas otras aplicaciones el filtrado es in- necesario, En la figura 13.8 se muestra un circui- to que puede usarse para controlar temperatura 0 Ja intensidad de una fuente de luz mediante un MOSFET; dispositive que para estos casos es ideal. Este elemento se caracteriza por poser una en- trada de alta impedancia que lo hace fil de ma- njar Para controlar adecuadamente un motor CC se necesita un atimero o magnitud y un signo; el signo nos indica la direccién hacia la cual va a girar el motor y la magnitud es la cantidad de ener- ‘pfa que se le va a aplicar al movimiento; en el cir- ‘cuito de la figura 13.9, el signo se origina por el pin RD6, Cuando dicho die se encuentra en alto y la salida de la PWM activada, la parte izquierda del cireuito se activa haciendo que la corriente flu- ya hacia la derecha. Si el dit 6 se pone en bajo y la salida de la PWM se encuentra activada, la co- rriente fluye de derecha a inquierda en el motor. El concepto del funcio- namiento de la PWM es el que se muestra en la figura 13.10. EI TMR2 es sometido a dos comparaciones con dos registros distintos, la primera escon el registro del ciclo itil ya segunda es con el registro del periodo. Cuando el TMR2y el ciclo titil son igua- les, la salida del pin CCPx se pone en bajo, pero el TMR2 contintia incrementindose ‘Figura 13.9 Control de un motor CC con un puente Hasta igualar al registro del pe- aro pricteo ste Merocntandores MCAT: & riodo; cuando esto ocurt, el pin CCPx se pone en alto y se borra el TMR2 para iniciar de nuevo. En ba figura 13.11 se muestra un diagrama en bloques del médulo CCP funcionando en modo PWM. El petiodo dela PWM seespecifica en el regis tro PR2 y se calcula mediante la siguiente formula: Periodo de (PR2) + 1] © 4° Tose (valor det prescalador de! TMR2) Cuando el TMR2 es igual a PR2, en el siguiente ciclo se presentan los siguientes eventos: * EILTMR2 es borrado se pone en alto iclo util de la PWM es almacenado en CCPRxL pasa a CCPRXH. Ciclo util de la PWM El ciclo util de la PWM se especifica en el registro CCPRAL y en los bits DCxBI:DCxBO (CCPx- CON«S:4>). Se puede lograr una resolucion hasta de 10 bits gracias alos 8 de CCPRxL ya los bits 4 y 5 de CCPxCON que acttian como los bits LSB. Este valor de 10 hits en definitiva queda en DCxB9:DCxBO. Para calcular el ciclo util nos po- demos remitira la siguiente formula: uo on pincer Toa i SALIDA Punt fn coPY ato ‘gual borra TMR2- re Figura 13.10 Concepto do fncionaniento de la saliéa PWM Madulos GCP (captura/comparacién/PWM) Ciclo Gtil de la PWM = (valor en los bits ‘DCxB9:DCxB0) + Tosc ¢ (valor del prescalador del TMR2) Los bits DCxB9:DCxBO pueden ser eseritos en cualquier momento, pero el valor del ciclo ttl no se en CCPRxH hasta después de que los con- tenidos de PR2 y TMR2 sean iguales, lo cual marca el final del periodo actual. En el modo PWM el registro CCPRxH solo puede ser leido. El registro CCPRxH yun latch interno de 2 bits configuran el buffer del elo ttl, el cual, al igualar el contenido del TMR2 lo con dos bts de su prescalador, borran el pin CCPx, estableciendo el final dl ciclo tit Configuracion de la PWM Para configurar el médulo CCP para que fun- cione en modo PWM se deben ejecutar los si- guientes pasos: 1. Establecer el periodo en el registro PR2 2. Establecerel ciclo ttl en los its DCxB9:DCxBO. 3. Configurar el pin CCPx como salida 4, Establecer el valor del prescalador del TMR2 y habilicar el Timer2 mediante el re- gistro T2CON. 5. Configurar el médulo CCP para el modo PWM. rr Cy oP Nota Ving de 8s cancatenado ‘on 2 bis cel pescado naa ‘teat ia base de tempo G10 is Figura 13.11, Diagrama de bloques ela PUM, & RICUT caro prctce sore mexoconrcesres La utilizacién de las comunicacio- nes seriales se encuentra por doquier en el mundo digital ya que nos ofre- ce una solucién econémica y de alta calidad para una gran variedad de aplicaciones Curso préctico sobre Merocontoladeres ERENT. Gzt>> En los sistemas con microcontroladores siem- pre existe la necesidad de conectar elementos in- ternos entre si como los microcontroladores con las memorias, con conversores A/D, conversores DIA, etc. o entre el microcontrolador y clemen- tos externos al sistema como teclados, displays ¢ rerfaces de potencia, entre otros. Crea Figura 14.1 Comunicacion en paralelo En términos generales, hay dos maneras de interconectar elementos electrénicos digitales: en paralelo y en serie. Se dice que una comunica- Cin es en paralelo cuando se conectan varias li neas entre los dispositivos (internos o externos) y los datos se envian simulténeamente por llas; cen la mayorfa de los casos, en valores miiltiplos de 8 bits (8, 16, 32, 64, etc.), figura 14.1. El otro tipo de comunicacién, la serial, se hace bé- sicamente por una sola linea (o muy pocas) y los bits se envian uno detrds de otro, figura 14.2. En el primer caso, la comunicacién es més répi- day ocupa muchas lineas o pines del microcon- trolador y en el segundo, es més lenta y utiliza pocos pines lo que nos permite realizar otras fun- ciones con los pines libres, Actualmente, debido a la alta velocidad que se ha logrado en la opera cidn de estos circuitos, la comunicacin serial es Ja mis utilizada ya que conviene mds ahorrar pi- nes, que tener en cuenta la velocidad de transmi- sién que se lograria con la conexién cn paralelo. 4 1 oF Joy loo | Figura 14.2 Comunicacién en sai o serial Las familias de rango alto de los microcon- troladores PIC tienen incorporados médulos in- temos de comunicaciones con sus pines 0 ter- minales especializados para esta funcién y sus co- rrespondientes instrucciones de programacién lo que facilita estos procesos. En las familias de bajo nivel (pocos pines), las comunicaciones se hacen por medio de los pines de entrada/salida (I/O) 0 ppuertos y los protocolos (reglas de juego) se de- ben establecer en el programa lo que hace un poco mds compleja su claboracién. TR WT. Figura 14.3 Comunicacién unitrecconal al duplex) Por otto lado, las comunicaciones seriales pueden ser unidireccionales (half duplex) o bidi- reccionales (full duplex). En las primeras se trans- fieren los datos en una sola direccién al tiempo y se utilizan dos cables, uno para la sefal y el otro para la masa o tierra, figura 14.3. Con este siste- ma hay que enviar primero los datos y después recibirlos o viceversa. Con las bidireccionales, se puede enviar y recibir informacién al tiempo y se requieten como minimo tres cables 0 pines, tuno para enviar, otto para recibir y otro para la masa o tierra, figura 14.4. En las comunicacio- nes seriales hay dos métodos principales: las co- municaciones sincrdnicas o sincronizadas y las asincrénicas o no sincronizadas lo cual explic remos més adelante. i Pe Figura 14.4 Comunicacin bidrecciona fa duplex) Otro factor que se debe tener en cuenta en Jas comunicaciones seriales es la velocidad de transmisidn de los datos la cual se mide en bits por segundo o baudios que es en realidad la ve- locidad con que cambian los estados de la sefial (de 1a00de 04 1), Aesta velocidad se le llama generalmente rata de baudios ( Baud rate) 0 sim- plemente rata. Por lo general, se utilizan ratas con valores normalizados de 2400, 9600 y 19200 baudios. Esto es muy importante ya que en una comunicacién serial entre dos o mis elementos, se debe conocer la velocidad de transmisién de Jos datos con el fin de que ésta se logre Para que dos equipos se comuniquen satis- factoriamente, ambos deben manejar un mismo conjunto de normas que indiquen los paréme- tros y la manera correcta de realizar Ja transmi- sién y la recepcién, Este conjunto de normas es Jo que se conoce con el nombre de protocolo. ‘Cuando efectuamos una comunicacién serial, los grupos de datos que se van a transmitir se ben descomponer en bits os cuales son trans! dos uno por uno desde el emisor hasta el recepcor cen donde se establece de nuevo el grupo original. Un cardcter lo podemos definir como la unidad minima de informacién compuesta de varios bits. El emisor puede generar unidades de informacién de més de 8 bits, pero como un microcontrolador PIC tiene una CPU de 8 bits, las unidades de informacién deben dividirse en varios segmentos de 8 bits para ser enviados por separado. El dispositivo receptor se encarga de ensamblar de nuevo los segmentos para recu- perar el mensaje original. Para propésitos de la transmisién, cada segmento de 8 bits se trata Teoria como un carécter, sin importar que no sea la unidad final de la informacién. El ejemplo més clisico de este caso son los conversores A/D de 10, 12 0 més bits. ‘Cuando se transmiten caracteres serialmen- te, los bits que conforman cada caricter se envian de manera secuencial, distribuidos en el tiempo. Cuando un dispositivo transmisor envia estos bits, cl receptor debe estar en capacidad de: * Determinar el momento exacto en que de- ben llegar. + Reconocer cuindo empieza y cuando termina cada uno de los bits. + Reconocer cundo empieza y cuando termina la serie de bits que conforman el carscter, Para facilitar el reconocimiento claro de todos los caracteres, se ha establecido un sistema de si cronizacién por medio de algunos bits de delimiea- ign y separacién, Como ya lo mencionamos, exis- cen dos métodos de delimitacién que definen los dos tipos basicos de transmisin de datos: la trans- misién sinerénica y la transmisién no sinerénica Transmision sincronica En este tipo de transmisién se asocia un pulso de reloj con cada bit transmitido. En este caso se requieren dos lineas de comunicacién (usualmen- te cables), uno para los bits de datos y otro para los pulsos de reloj.. El receptor puede reconocerficilmente los bis de datos debido a que ellos ocurren de manera si- multinea con los pulsos de reloj, de esta manera sabremos exactamente cuando leer los bits de datos correctos sin importar que la sefal de reloj no man- tenga una frecuencia estable, figura 14.5. ‘Figura 14.6 Transmision no sincrénica Cuando un dato se codifica en determinado inimero de bits, para separar los distintos caracte- resel receptor necesita contar bits,empezando con el primer bit recibido, Este tipo de tansmisin es adoptado por algunos estindares internacionales como el protocolo SPI, 12C y Microwite. Transmisi6n no sincrénica Este tipo de transmisién asocia unos bits especiales, a cada caricter conformando una estructura 0 pa quete; incorpora un bit justo antes de empezar cl caricter y otro bit después del carécter. Todos los bits, incluyendo los de la estructura, se envian a la misma velocidad (todos los bits con un mismo pe- riodo) y cuando llegan al receptor, éste ya sabe que el primer bir recibido corresponde al bie de estruc- turay que después de él, en intervalosfijos de tiem- po, encontrari los bits de datos, figura 14.6. Tanto el emisor como el receptor deben tra- bajar ala misma velocidad; es decir, a la misma rata de bits; como el primer diees quien informa Ja aparicién de un paquete y después de él se Jocalizan los bits de datosa una rata constance, el cardcter puede ser enviado en cualquier momen- to, Por ello, este método se conoce como caric- ter no sincrénico y bie sincrénico, ‘Otro metodo para la comunicacién no sineré- nica consiste en transmitir a ratas de bi variables Este método no requiere una longitud fija de los caractetes ni de los bits de estructura, aunque a ve- ces se utilizan; este tipo de comunicacién lo uti- liza un protocolo denominado Dallas 1-Wire, Comunicaciones seriales no sincronicas Ya sabemos que la transmisién serial distribuye los bits en el tiempo y el receptor debe estar en ee Mees erie cciesseae es capacidad de reconocer cuando em- pieza un biy cuando termina. Si el receptor puede deverminar cuando llega el primer bie de un cardcter y conociendo el hecho de que cada bit posce un periodo fijo, el receptor puede anticipar cuando llegarin cada uno de los bits, Cuando no existen datos en el medio de transmisién, se dice que se encuentra en estado vacio desocupado y el receptor se encuentra esperando que llegue un dit Cuando llega el primer birel receptor lo reco- noce y espera un tiempo determinado para leer de nuevo el siguiente bie, este primer bit forma parte de la estructura y se le llama bie de sincroniza- idn, El receptor repite este proceso de lectura y espera hasta que se hayan leido todos los bits. El transmisor y el receptor poscen cada uno su propio reloj para medir el tiempo de cada bit 2Es posible que estos dos relojes en un momento dado se desajusten y rio queden completamente sincronizados entre sf? En realidad si, y siese es cl caso, se puede originar un desfase y crear pro- blemas como el del receptor esperando un diren el instante incorrecto, Este problema se resuelve sincronizando pe- riddicamente, haciendo fija la longitud del ca- ricter y transmitiendo nuevamente el bit de sin- cronizacién al ihicio de cada cardcter de tama- fio fijo. De esta manera los relojes sélo necesi- tan estar en fase durante un corto tiempo ya que ellos se ponen en fase nuevamente en cada bit de sincronizacién. Con un mimero fijo de bits por cardcter, el receptor cuenta los bits para delimiear cada ca- rdcter permitiendo recibir correctamente cada uno de ellos, sin importar que sean transmiti- dos a intervalos irregulares de tiempo (transmi- sién no siner6nica). Debido a que el primer bir de la estructura es un cambio del estado vacto al estado de ocupado, por lo menos un biten el estado vacio debe seguir al tiltimo bie del caréc- & AIT cai pice rd arecacbiatts ter, el cual también corresponde a un bie fun- damental para conformar la estructura, Protocolo serial no sincronico Este protocolo es utilizado por la mayorfa de Jos médulos especializados para comunicacio- nes (UART) que existen dencro de los micro- controladores en comu sincrénicas. La transmisién se describe en la figura 14.7: caracteres transmitidos a interva- Jos indeterminados pero a una rata fija de bir (cardcter no sincrénico, bit sinerénico). icaciones seriales no Segiin este protocolo, el estado vacio dela trans- misi6n es un 1 ldgico, y se le conoce como estado de marca. El estado de ocupado es un 0 légico y se le denomina estado de espacio. Al bir de sincroni- zacién sele llama bit de inicio y al bit de final dela estructura bit de parada. El bit de inicio es una transicién desde el estado de marca hacia el estado de espacio y el bir de parada es el estado de marca Sélo puede existirun bit de inicio, pero pue- den existir varios de parada. El protocolo especi- Figura 14.7 Estructura de carter fica que deben ser 1,1/2 0 2 bits de parada como minimo y 5, 6, 7 u8 bits de datos en el carécter. El caricter de datos se transmite empezando por el bit menos significativo y a continuacién del tiltimo bit de datos del caracter puede haber (au: que no es completamente necesario) un bitespe- cial denominado bit de paridad. El bit de paridad es un método bisico para Ja deteccién de errores en la transmisién, La pa- ridad es una caracteristica definida sobre cada cardcter de datos. Se determina por el niimero de unos (1) légicos en los datos. El primer paso cs decidir si se va a uabajar con paridad par 0 paridad impar. Para paridad impar el ntimero de unos en el cardcter de datos debe ser impar. Esto «3, se cuenta el ntimero de unos presentes en el cardcter de datos y sila cuenta es impar entonces el bitde paridad se pone en cero. Si el ntimero de unos en el cardcter de datos es par, entonces el bir de paridad se pone en uno para hacer el ni- mero de unos de nuevo impar, figura 14.8. [gual metodologia se aplica para el caso contrario, es decir para paridad par. ‘Bits de datos y ee eee = + Marca (1 l6gico) + Espacio (0 égico) Z Figura 14.8 Formato oe cardctor conoysite vee sree ACH @ (tettrionelestruticecince tcc a ..| Petes cod Entrada cor tea) eet eo) co Figura 14.10 intertz serial de dos hilos con ineas adicionales de control El canal de comunicacion ‘Muchas comunicaciones se desarrollan en dos vias y requieren de un transmisor y de un receptor al final de las dos vias del canal de comunicaciones. En muchos casos se acostumbra dar el nombre de equipo terminal a cada uno de los equipos de comunicacién y a las lineas de transmisién se les denomina ruta de los datos. La comunicacién en dos vias requiere de dos lineas, una para cada direccién de viaje de los datos. El transmisor de un terminal se conecta por medio de la Iinea A al receptor del segundo terminal y de la misma manera el transmisor del segundo terminal se conecta al receptor del pri- mero, figura 14.9. Ore DOE En la comunicacién por medio de dos cana- les, los datos pueden viajar en ambas direcciones simulténeamente, o pueden viajar en ambas di- recciones pero no simultineamente. Como ya Jo dijimos anteriormente, un canal de comuni- cacién que es capaz de operar en ambas direc ciones simulténeamente se denomina fil-duples; yun canal capaz de operar en ambas ditecciones pero no simultineamente se denomina half-du- plex, en estos dos casos la rata de los datos debe ser la misma en ambas direcciones. Un canal de tuna sola linea capaz de operar en una sola direc- idn se denomina canal simplex. Para un canal half-duples se debe hacer un sistema de control para prevenir que ambos ter- minales intenten transmitis al mismo tiempo 0 que un terminal envie cuando el otro no esti listo para transmitir. Este flujo de control requicre de otras lineas adicionales, utilizadas para controlar cde maneraadecuada el flujo de los caracterestrans- mitidos por las lineas de datos, figura 14.10. El estandar RS-232 Una aplicacién real de la comunicacién serial no siner6nica es la que se ha definido en el estindar internacional EIA RS-232. Se trata de una nor- ‘ma que define las caracteristicas fisicas que debe tener el canal y as funciones de las lineas de con- trol y de datos. No se enfoca en el formato de los datos, de manera que cada usuario es libre de cconstruir sus propios formatos, Dentro de esta norma, los equipos termina- Jes toman unos nombres especificos dependien- do de su labor dentro del canal de comunica- cin, ellos pueden ser: Equipo Terminal de Da- cE OTe Intertar S-232 Figura 14.11 Canal de comunicacién serial ie Lineas RS-232 (conector de 25 pines) Conector DB-9 IBM-PC Tabla 14.2 Conector RS-232 de 9 pines (08-9) tos (DTE) 0 Equipo de Comunicacién de Da- tos (DCE). Inicialmente podemos entender un DTE como una computadora y un DCE como un médem, figura 14.11. El estindar define 25 lineas con sus corres- pondientes ntimeros de pines dentro de un co- nector. De las 25 lineas 11 tienen que ver con la comunicacién no sincrénica y se pueden apre- ciar en las Tablas 14.1 y 14.2, donde se muestra la distribucién para conectores de 25 (DB-25) y 9 pines (DB-9). De la misma manera, segin el Peer Le a | 2 1 | Datostx | sala _| Entrada | Datos de sada | | 4. RTS | Peticon para enviar | Sada | Enitada | OTE quire enviar | [om oer | xt | see nnn ects [2A | mdceretancs | cance | Site | Aancneniaasperoe Tabla 14.1 Lineas RS-232 en un conector 08-25 cestindar, el equipo DTE debe tener un conector tipo macho y el DCE un conector tipo hembra. Estas lineas se puede clasificar en dos gru- pos: las de funciones de datos y las de funcio- nes de control. Solo hay dos lineas para fun- ciones de datos, por la linea 2 se transmiten los datos y por la linea 3 se reciben. Las de- més I{neas se utilizan para efectos de control del flujo de los datos y el nombre de cada una de ellas refleja su funcidn desde el punto de vista del equipo DTE. La interfaz RS-232 ha llegado a estandarizar Ja comunicacién entre dos terminales de datos por medio de un médem, un enlace de comuni- cacién y otro médem, figura 14.12. Caracteristicas eléctricas El estandar RS-232 se aplica a ratas de datos de hasta 20.000 bits por segundo y hasta 15,24 Intortaz 5-282 ‘Figura 14.12 Comunicacén seit por medio de un médem UitLeiT alas comunicactones seriales S-232' Salida RS-232 Figura 14.13 intorfaz RS-232 con un micracontrolador metros de longitud del cable, aunque esta longi- tud se puede extender por medio de unos dispo- sitivos repetidores de sefial que cortigen los nive- les de voltaje. Como estamos trabajando con comunica- ciones binarias, solo se Kan definido dos posi- bles estados para la sefial: marca y espacio. Una marca es un uno légico y su sefial de voltaje, para que sea comprendida correctamente, debe estar en el rango de ~3 hasta 15 voltios. Un espacio es un cero légico y su voltaje debe estar entre +3 y +15V para que el receptor lo pueda leer adecuadamente. Si una sefal se en- cuentra en el rango comprendido entre—3 y +3V se entiende como un estado indeterminado Cuando utilizamos comunicaciones seria- les externas en un microcontrolador, las sali- das digitales de 0 y 5 voltios deben acondi- cionarse para llegar a los niveles RS-232. Este problema se puede resolver ficilmente por medio de una configuracién de transistores 0 por medio de un circuito integrado especial, al cual se le entregan los niveles TTL y arroja los niveles RS-232, figura 14.13. De este tipo de integrados existe una gran variedad y mu- chas empresas fabricantes de circuitos los han desarrollado satisfactoriamente. El cédigo ASCII ‘Cuando queremos transmitir caracteres que los humanos podamos leer y entender, debemos co- dificarlos por medio de una combinacién de bits. El cédigo de texto de mas aceptacién se llama el cédigo ASCIL ASCII es un conjunto de caracteres codifi- cados en 7 bits que cuenta con 95 caracteres im- primibles y 33 no imprimibles. Los primeros in- cluyen letras mintisculas, maytisculas, los ntime- ros del 0 al 9, caracteres de puntuacién y otros. Los segundos se denominan caracteres de control y sirven para mangjar la comunicacién, Los caracteres imprimibles también se conocen como caracteres grificos lefbles por humanos y son codificados desde $20 hasta $7E como se muestra en la Tabla 14.3. Nibble bajo [© Jnr [son] rx] rx Er JeNaack)@et | bs [HT] UF] vr JF] CR SO) si j2iseli)- tals twlals ldo ietsd.|-|.17) 2 j4]ela}elclolelrle}nti| sx |uim)n)o| j6] fal oletalelt tol m tits | k[i)mial o] Tabla 14.3 Cédigo ASC > HIT: oops sancti Tinea’ ved me oma oa La mejor manera de aprender el manejo y el establecimiento de comunicaciones seriales con microcontroladores es a través de algunos ejem- plos bisicos. Ahora entraremos a analizar dos casos tipicos sobre microcontroladores PIC de 18 pines: las comunicaciones Half-Duplexy Full- Duplex. Daremos algunas rutinas basicas genéri- cas que no estin ligadas a ningdin microcontro- lador en particular y que pueden ejecutarse so- bre la configuracién de citcuitos mostrada en la figura 14.14, Comunicacién no sincrénica en microcontroladores Como ya lo mencionamos, los microcontrola- dores més pequefios no cuentan con médulos especializados de comunicacién (UART). Sin Figura 14.14 Esquema del crcuito para comunicacn selal embargo, esas funciones se pueden desarrollar con algunas lineas de c6digo. En muchas ocasiones, esta opcién representa una efectiva y econémica solucién, y por lo tanto debe ser considerada. El cireuito de la figura 14.14 puede utilizarse con ‘muchos microcontroladores PIC del8 pines y el objetivo siempre sera el de comunicarnos con una compu hard las veces de equipo DTE y quien debers estar ejecutando un programa terminal que per- mita monitorear todos los datos que transmita 0 reciba por este puerto. idora por medio de su puerto serial, que Siel lector no tiene amplios conocimientos en algiin lenguaje de programacién, no hay problema: Windows oftece el programa hyperterminal que lo podemos utilizar ficilmente. Curso prético sobre Mirocontroladores fexcrr: (UC OeCiees tems cicness er oP ; ESTE PRIMER MODULO RECIBE UN CARACTER DE 8 SBITS, 1 DE INICIO, 1 DE {PARADA Y SIN PARIDAD SRESULTADO FINAL: CARACTER RECTBIDO EN EL. REGISTRO REGREC REC_ASINC BCF BANDERA,1. ; LIMPIA BANDERA DE ERROR DE INICIO LINPIA BANDERA DE ERROR DEL PAQUETE 8 BITS DE DATOS + 1 DE PARADA. BCF BANDERA,O MOVLW 09 MOVWF CUENTABIT REC_ASINCL BTFSC PORTA,RECE ; LLEGO BIT DE INICIO? NO —> REGRESO ST => ESPERO UN ‘TIEMPO DE 1/2 BIT ZAUN SE TLENE EL BIT GOTO REC_ASINCL CALL MEDIO_BIT BTFSS PORTA, RECE de inicr0? GOTO REC_ASINC2 ; SI —> SALTO A REC_ASINC BSF BANDERA,1 NO > ACTIVO BIT 1 DE BANDERA GTO FECASINCFIN ;¥SALGO REC_ASINC CALL BIT ESPERO EL TIPO OE 1 BIT DEES UNTABIT,F 5 ACTUALIZO EL | CONTADOR E BITS ST NO HA TERMINADO EL PAQUETE SALTO. 2BIT DE STOP LIsTO? GOTO. REC_ASINGS BTFSS PORTA, RECE BSF BANDERA,O ; NO -> ACTIVO BIT 0 1 DE_BANDERA GD RECASINCNN} Y SALGO REC_ASINC3 BSF ESTADO,C 5 ACTIVO EL CARRY BTFSS PORTA,RECE ; TOM) EL BIT DE 3 DATO. ges 1? + NO -> BORO CARRY } ROTO EL CARRY CON EL BcF ESTADO,C 3 REGISTRO DE RX RF REGREC, F GOTO REC_ASINC2 } SALTO PARA ESPERAR EL SIGUIENTE BIT REC_ASINC_FIN RETLW @ 5 SALIDA ESTE SEGUNDO MODULO ENVIA UN CARACTER DE 8 3 BITS, 1 DE INICIO, 1 DE PARADA SIN PARIDAD ENTRA: CARACTER A SER ENVIADO EN EL } REGISTRO REGTX Y PORTA,1 DEBE ESTAR EN ALTO 3 AL SALIR EL PUERTO DE TK DEBE QUEDAR EN ALTO. /TRA_ASINC CF PORTA,TX ; BIT DE INICIO Gut BIT "ESPERO EL TIEMPO DE 1 err MOVLW 08: 58 BITS DEL CARACTER MOWE GENTASIT ;SE CARGA EN ESTE 3 REGISTRO ‘TRAASINCL RRF REGTX,F ROTA BIT A TRAV.S DEL CARRY BTFSC ESTADO,C SCARRY = 0? GID TRAASING ;NO -> C = 1, PAL =1 BCF PORTA,TX 3BIT DE DATOS’ = 0. sPAL= @ GTO TRAASING ;Y SALTO TRA_ASINC2 BSF PORTA,TX TRA_ASINCS CALL BIT __;ESPERA EL TIENPO DE 1 BIT DECFSZ —CUENTA_BIT, F 5 2YA SE ENVLARON 50S 8 BITS? GoTo TRAASINGL {NO —> IR POR EL sSTGUIENTE BIT BSF PORTA,TX {SI —> HACER EL BIT IE PARADA SESPERA EL TIEWPO OE 1 8IT CALL BIT RETLW @ } RETAROO UTILIZADO PARA TEMPORIZAR LOS BITS. RET Mov: CONTAB, W MOVE contac RETL MOV CONTAA,W. MOVIE ‘conran’ RET2 DECFSZ —CONTAD,F oro RET. DECFS2 CONTAC, F oro RET RETLW @ MEDIO_8IT MOvL 03" Movne conras Movi p'20" wovne CONTA CALL RET RETLW @ BIT MOvLW ors" wove conras Movi 0°43" mown CONTAA CALL RET RETLW @ ‘Figura 14.15 Rutias de recepcién y ransmisién no sinerénica & BICIT: 0120 piet00 re merconrators En la figura se puede apreciar que el micto- controlador se conecta a la computadora por medio de un transceiver, conformado por el cir- cuito integrado MAX232 y los pines de conexién entre este tiltimo y un conector para pucrto se rial tipo DB-25; como elementos de sefializacién se han conectado diodos LED en los puertos del microcontrolador. Comunicacion Half-Duplex En muchos casos la aplicacién de una comunica- cién Half Duplex es mas que suficiente para sa- tisfacer plenamente las exigencias de un sistema en donde se transmiten datos. Desde el punto de vista del receptor se pue- den dar dos casos: el primero, es cuando el mi- crocontrolador debe obligadamente esperar la lle- gada de un cardcter para poder ejecutar sus ta- reas, caso en el cual podemos hacer que el pro- grama se encierre en un ciclo hasta que llegue el caricter. El segundo caso se presenta cuando el microcontrolador posee un tiempo limitado para esperar el caricter (timeout), ya que debe estar pendiente de otras actividades. Los médulos de software mostrados en la figura 14.15, conforman las subrutinas de re- cepcién y transmisién. La velocidad de trans- isin es de 2.400 bps y cada carécter posee un formato compuesto por I birde inicio, 8 bits de datos y 1 bit de parada, figura 14.16. Bitde inicio LSB: -MSB Figura 14.16 Formato det cardcter Disponibles Bit de estructura ‘Error de Figura 14.17 Registro BANDERA tee Bite parada AG Cic) Recepcion Half-Duplex Con el objeto de tener el control sobre la trans- misi6n, se ha definido un registro de banderas (BANDERA) cuyos bits se activan 0 desactivan de acuerdo a los errores encontrados. Si el mi- crocontrolador detecta un biede inicio euya du- racién es menor al tiempo normal de 1/2 bit, lo — errr) aed En ce Figura 14.18 Diegrama de fyjo de la rutna de recepcién no sinernica curso préctice sobre stcrocontotadores GREAT: & Tet AS lones Seriales munica mas probable es que se trate simplemente de un ruido que aparecié en la linea y en ese momen- to se activa el bie | de BANDERA. Si por algu- na raz6n el bitde parada no llega en el momen- to exacto que se esperaba, se genera una nueva situacién de error y se activa el bie de BAN- DERA, figura 14.17. La estructura del programa es la que se muestra cn la figura 14.18, Alli podemos apreciar como ini- almente entra en un cido de espera del cual no sale hasta que se ha detectado la legada del primer bie tador 1 Retardo = (3 - Contadort » Contador? +5» ContadorB) Tiempo de! Ciclo de reli) Figura 14.19 Diagrama de fujo dela subrutina de retardo Al detectar la presencia de un cero I6gico en la linea, se presume que se trata del bit de inicio, se debe esperar un tiempo (1/2 bit) y de nuevo comprobar que ese nivel permanece en Ia linea; si la comprobacién no es exitosa se es- tablece un estado de error en la transmisién, activandose el bit | de BANDERA. Si se ha comprobado la llegada del bit de i pera el tiempo gastado por un bir para hacer la primera lectura; en este punto se ha esperado un tiempo de 1"/, bits desde que se detects el bir de inicio hasta que se ley6 el primer bit. A partir de ese momento se hacen 9 lecturas, cada una separada por el tiempo gastado por un bit Si la novena lectura es un uno légico se asume una lectura correcta y el valor lefdo se coloca en el registro REGREC. Si el noveno bit no co- rresponde a un uno, se configura un estado de error denominado error en la estructura y se activa el bit 0 del registro BANDERA. icio, se es El registro de recepcidn toma el dato de la transmisién por medio de un procedimiento en el cual el bit leido se coloca en el bit carry del registro de estado y se hace una rotacién del re- gistro REGREC. La subrutina de retardo la podemos apre- ciar en la figura 14.19. Se compone de un ci clo embebido dentro de otro ciclo que se repi- Rata | Tiempo de 1 bit | Tiempo 1/2 bit Bits/s (us) (us) 110 9090,89 4545.5, 600 1666.6 83,3 2400 167 208.3, 9600 1042 52,1 Tabla 14.4 Tiempos empleados para astnta veocidades ‘de transmisién ® AGRI: 20 pesto sore wiroconrotadores te un cierto ntimero de veces decrementado al- gunos registros. En la tabla 14.4 se muestran los distintos periodos de tiempos que emplean un bit, y 1/2 de bit para las distintas velocida- des de transmisién. La instruccién RRF: rote el contenido del regis- tro “f” ala derecha, usando el carry Sintaxis: RRF fd Los bits del registro f son desplazados una casilla hacia la derecha, y el bie que ocupaba la posicién cero es ahora el bie carry. Si d=0 el resultado final se guarda en W, sid=1 el resultado se guarda en f — Transmisién Half-Duplex Para desarrollar esta funcién se debe tener el cuidado de manejar la misma velocidad y for- mato de los caracteres que los utilizados en la recepcidn, pero en este caso no se han estable- cido banderas de error. El dato que se va a enviar serialmente debe estar almacenado en un registro denominado registro de transmision, La transmisién debe empezar colocando un cero légico por la linea de salida que corresponde al bit de inicio, luego espera el tiempo correspondiente a un bit para que el tiempo de dicho bit sea el apropiado y a partir de ese momento se hacen ocho rotacio- nes (a través del carry) del registro de transmi- sién, figura 14.20. Cada vez que se hace una rotacién a la derecha del registro de transmisién, cada uno de los bits de datos empieza a circular secuen- cialmente por el carry. De esta manera solo necesitamos chequear el estado de dicho bit para saber el estado que debe tomar la linea de transmisién en cada instante de tiempo, figura 14.21. Transmision no sincrénica oer Ed Ect oe Figura 14.20 Transmisin no sinerénica Aplicacin de las rutinas de recepcion y de transmisi6n no sincronicas Estudiemos ahora una situacién en la cual sim- plemente se recibe un byte caricter desde una terminal (PC) y ese mismo caricter se envia de nuevo hacia ella (es lo que se conoce como eco); para visualizar el proceso se puede utilizar el pro- grama hyperterminal de Windows 95/98. El diagrama de flujo del ejercicio lo podemos apre- ciar en la figura 14.22. comm Sak Pear) Poca ro Figura 14.21 Estabeciendo o dato de la linea do transmis Ca Ser del caracter Deshabita OTR Oey Figura 14.22 Sjrccio de comunicacion Cuando el sistema esté listo para recibir un ccardcter, activa la linea de DTR (Data Terminal Ready); al recibir el dato, el microcontrolador deshabilita la inea DTR (PA2) y envia el mismo carfcter hacia el terminal. Deshabilitar DTR equivale a decitle al terminal que no envie m: caracteres porque el microcontrolador esti oc pado y no vaa recibir més datos porque ahora es quien va a transmit. Este es un ejemplo muy sencillo de control del flujo de la comunicacién en una transmisién Half- Duplex; sicl microcontrolador recibe un bit de error en el registro bandera, retorna un caric- ‘SERTALL.ASM————— SEJERCICIO DE COMUNICACION SERTAL 3 2400 BPS, 1 BIT DE INICIO, 1 DE PARADA 3 ENTRADA DE DATOS: PAS 3 SALIDA DE DATOS : PAI, RADIXHEX LIST Pa16F84 QU QU QU QU RECE EQU 1x. EQU ESTADO = EQU PORTA = EQU TRISA —_EQU PORTE = EQU TRISB EU BANDERA EQU CUENTA_CHAR CUENTA_BIT EQU CONTAA QU CONTA = EQU CONTAC QU CONTAD —EQU. OF REGREC © EQU 10 REGTX = EQU ORG 0 INICIO CLRF PORTA BSF ESTADO,5 vovw B*@00@1111" MOVAF TRISA Novun x00 MOWWF TRISB BCF ESTADO, 5. BSF PORTA,2 BSF PORTA,1 CLRF BANDERA BCF PORTA,2 CALL REC_ASINC BSF PORTA,2 CALL BIT BTFSS BANDERA, GOTO LAZO1 Movin 10 MOVNF REGREC LAZO1 MOVE _REGREC,W MONE REGTX CALL TRA_ASING GoTo LAz0 INCLUDE OTR: PAZ SNA e A @ 1 3 Z @3 @5 85 06 86 oc QU 1C 2D 1E 1F eo jSALTA AL BANCO 1 3SALTA AL BANCO @ 3DESACTIVA DTR 3SALE ESTADO DE MARCA Lazo SACTIVA DTR ;DESACTIVA DTR 3ESPERA WN PERIONO De 4 BIT 5 dERROR EN LA ESTRUCTURA? sNAK 3¥ LO DEVUELVE LIB1.GRP END Figura 14.23 Gécloo fuente de ejercicio de comunicacion serial & REICIT C100 8cco sore Wrocoirlatores ter ASCII indicador de que reconocié el error. En las redes de comunicacién, cuando el emisor se ha enterado de este cardcter, puede tomar ac- ciones tales como enviar nuevamente el dato. El cédigo fuente del ejercicio lo podemos apreciar en la figura 14.23 El microcontrola- dor habilita la linea DTR para informar que est listo para recibir dacos y llama la rutina REC_ASINC para tomar el caricter. Al hacer la recepcién y sino se ha activado ninguna ban- dera de error, el dato pasa del registro de recep- cién REGREC al registro de transmisién REC- TX y se transmite. Recordemos que la rutina de recepcién en realidad lee el bit de parada cuando éste atin esté en la mitad de su periodo. Para evitar con- flictos es convenience esperar un periodo de un bit después de que se ha deshabilitado la linea DIR; de esta manera evitaremos algunos rics- gos como por ejemplo, que el microcontrola- dor envie datos cuando el terminal atin esta emitiendo el bi de parada. Comunicacién serial Full-Duplex Este tipo de comunicacién se caracteriza por de- sarrollar simultineamente los procesos de recep- cién y transmisién. Debido a que los micro- ae ot ES controladores son dispositivos que ejecutan una serie de instrucciones de manera secuencial a tra- vés del tiempo, este tipo de comunicacién debe implantarse dividiendo el proceso de recepcién y transmisién en distintas tareas. Como hemos visto anteriormente, la unidad bisica de trans- misién dentro de las comunicaciones no sincr5- nicas es el bis, si el tiempo empleado por cada una de estas unidades se divide en pequefios in- tervalos de tiempo, podemos hacer una buena simulacién de operaciones simulténeas de trans- misién y recepcidn. Para ello, simplemente se eje- cuta la tarea de recepcién en un instante de tiem- po y la tarea de transmisién en el siguiente ins- tante; este modo de trabajo es viable siempre y cuando se tenga un estricto cuidado en el con- trol de los tiempos, el cual se hace mediante su- brutinas de retardo basadas en ciclos anidados de programa. En la figura 14.24 podemos apre- ciar el manejo que se debe hacer del tiempo de recepcién y transmisin; allf podemos observar como el tiempo de cada bit se ha dividido en pequefios intervalos que sirven para definir el instante exacto en que deben operar cada una de Jas tareas. Observemos como la transmisién se lleva a cabo sélo a partir de que la recepeién ha reconocido satisfactoriamente cada uno de os bits de datos, mostrando una especie de intercalado cn la ejecucién de ambos procesos. ‘Figura 14.24 Temportescion dels areas ‘rb ike se taco Sex: Figura 14.25 Lazo de tareas Una segunda posibilidad para hacer la dis- tribucién de tareas en instantes de tiempo es con- figurando una interrupcién del temporizador, bajo la cual se ejecutan secuencialmente la re- cepcidn y la transmisign. Estudiemos un progeama de ejemplo donde podamos visualizar mejor estos esquemas. compone de tres partes o tareas principales: la tarea de recepcidn, la tarea de transmisién y | tarea del usuario, Todas ellas se ejecutan secuen- Gialmente por estar dentro de un ciclo que se ‘cumple indefinidamente, figura 14.25. Para fa- cilitar el desarrollo de este programa se creé pri- mero un archivo (full grp) con las distintas su- brutinas que se requieren para transmitir y reci- bir estilo Full-Duplex. Para controlar los distintos estados de la co- municacién se ha establecido un registro ban- deras denominado BANCOM, cuya distribu- ccién se muestra en la parte de abajo. En la figura 14.26 podemos apreciar el e6- digo del programa que desarrolla el método de las tareas para distintos instantes de tiempo, el cual podemos incluir dentro de nuestro pro- yecto particular. En este programa podemos distinguir claramente la manera como se cons- truyeron las dos tareas, Existe una tarea adi cional denominada la tarea del usuario. Ella contiene, como su nombre lo sugiere, los pro- cedimientos especificos que él requiere para su proyecto particular. En cualquier programa que utilice estas su- brutinas, la tarea del usuario debe primero che- quear la existencia de nuevos datos recibidos (ban- dera BANUDA) y sise ha recibido un nuevo ca- ricter debe moverlo hacia el registro de datos reci- biidos: de esta manera, el registro de recepcién del usuario queda disponible para nuevas lecturas. BIT BANDERA DE 0 Recibiendo (BANRECE) INDICACION 1 al recibir el bit de inicio Ol recibir el bit de parada 1 Ultimo bit (BANULB) ibir el iltimo bit de datos ibir el bir de parada I si no se recibié bir de parada en el décimo periodo, O por el usuario Lal recibir el bit de parada O por el usuario I si al recibir el dltimo bit de datos, la bandera no se activ O por el usuario 1 al inicio del hit de inicio al final del bir de parada | por el usuario al inicio del hit de inicio 1 al final del bir de parada O por el usuario 2 Eroren Ia estructam (BANEST) 3. Nuevo dato recbido (BANUDA) 4 Erroren la recepcién (BANRES) 5 Transmitiendo (BANTX) 6 Datos de transmisia listos (BANDATR) 7 Transmisién completa (BANTXF) EICIT: c1:0 ricco stra Microcontroladeres RECEPCION neva SeT ETAL JrREC BTFSS BANCOM,GANRECE ; ovo FREC2 DECESZ LAZORECE coro er BTFSC GANCOM,BANULE ; BANDERA DE ULTIMO BIT? GoTo FRECS ST > TRA FRECS BSF ESTADO,C ——; NO -> LEER BIT RF REGREC,F —ROTAR CARRY EN EL 5 BYTE OF RE oven 0 CARGO CONTADOR Move LAZORECE DECFS2 ROTABIT ——;ACTUALIZA CONTADOR. | SALTA ST SON 0cH0. coro RETAL 5 SINGS IR A RETAROO BTFSSBANCOM,BANUDA ; BANDERA DE NUEVO DATO + RECIBIDO?| BSF —_BANCON, BANRES ; BSF BANCOM, BAWULE ; ACTTVAR BANDERA DE + ULTING BIT Move REGREC,W MOVER BYTE RECTBIOO AL + REGISTRO DEL + RECEPCION DEL USUARTO, MOMNF RECE Fl coro RETAZ IR A RETARDO lrnece BTFSC PTOENT,PINENT ; IT DE INICIO? coro RETAS 1 NO-> RETARDO BSF BANCOM,BAIRECE ; ST =>ACTIVAR BANDERA + DE RECEPCION Monn 08 } INICIUIZAR CONTADOR OE } BITS OE RECEPCTON MovnE ROTABIT Mov @s MOV LAZORECE ——INICIALIZR CONTADOR } DE LAZOS DE RX coro ReTAS {IR A RETARDO races SBTFSC PTOENT,PINENT ; BIT DE PARADA? coro FRECS [BSF BANCOM,BANEST ; NO->ACTIVAR BANDERA + DE ERROR EN ESTRUCTURA rece CF BANCOM,BANRECE; LIMPIAR BANDERA DE 1 RECEPCION CF BANCOM,BANULE ; BORRAR BANDERA DE } ULTINO BIT RECT8TO [BSF BANCOM,BANUDA ; ACTIVAR BANDERA DE + NUEVO DATO RECT8ID0 coro Reva 1 EIR & RETARDO lere mop lreras coro Rt lx coro Re lke Goro ReTAS RETAA NOP GoTo RETAIL RETAL GOTO RB Rs COTO R¢ GOTO. RETAZ RETAZ NOP ‘TRANSMISION [THON TFS. BANCOM,BANTX ; TRANSMITTENDO? ‘coro TxoN2 NO» IR A TXON2 DECFS2 LAZOTX,F — ; SI-> ACTUALIZAR + CONTADOR DE LAZO SALTO GOTO RETAS 1 BIT AUN NO ESTA + COMPLETO. TR A RETARDO Movin 04 wowne LazoTx. ‘TWve OUT. INICTALTZAR + CONTADOR DE LAZO DDECESZ CNTBETK,F —; ACTUALTZAR CONTADOR DE BIT] ovo. TxOWs {NO SE HAN ENVIADO TODOS: + LOS BITS-->IR A {SIGUIENTE BIT ‘SCF —BANCOMBANTX SE HA ENVIAD TODS LOS BITS ‘BSF BANCOM, BANTXF; ACTIVE BNOERA TE Tx COLETA ovo RETAS ‘THON STFS. GANCOM,BANDATR; OATOS DE LA TX LISTOS? ovo RETA? NO -> RETAROD BSF SANCOM,BANTX. | DATOS LISTS. ACTIVA BALERA| Movin en MOVE CNTBITX ——; INTCTALT2AR CONTADOR rT MOvLN 64 Mowe Lazorx 5 OCALA comonR 0 Lz05 MOVE REGOAT,W ——; MOVER DATO DEL USUARIO AL REGISTRO DE Tx [CF BANCOM, BANDATR; LINPIAR BANOERA DE DATOS DE Tx L1STOS ETS BCF —PTOSAL,PINSAL; BIT DE INICIO coro TOK KONA BSF ESTADD,C RF REGTX,F MER BIT DE DATOS AL Cy} TKONS BTFSC ESTADO,C | CARRY = oT THONG CF PTOSAL,PINSAL ; SI -> BIT DE DATO = 0, } LIMPIAR PIN PAL coro TvoN7 THONG BSF PTOSAL,PINSAL ; PONER EN UNO PIN PAL Nor TKONT GOTO. THON 5 FINALIZAR LA 1% RETAS. NOP RETA7 GOTO ETA ers GOTO. ETS ETS GOTO. RETAS RETAG GOTO ETS ET GOTO. ET? E17 GOT. THONB TONS NOP 5 SALIR DE LA TRANSMESTON [LAS DECFSZ COMRET,F coro Laso RETIN 0. Figura 14.26 Subrutinas de recepcin y tansmisin ure prc sabre Mcecontoleores CAGACIT.: {=== COMMNICACION SERIAL NO SINCRONTCA=—=—= fp FULL DUPLEX ee RADIX. HEX UST P = 16Fe4 eu 8 Bw ew DEW ro EWU PO EQ 1 F + REGISTROS DE LA CPU HINOF eq 00 Irmo Eq aL Pu equ a2. estan equ 03 Irsk equ oe ora eq 05, ors eq 06 IEEDATA EQU 08 leewoR eq 09 lpcuarw equ 08 lircon equ 08 Joornes ew or FTRISA EQ 85 jrerss eq 86 leEcona eq 08 MEMORIA DE TRABAJO laancow eu 0c cower eq) 00 IReGREC EQ OF rece eq OF TaRES EW ‘GH; SOBEFLUGO EN LA RK BANTX EQU @5;BANDERA DE TRANSMISION BNOKTR EGU. 6;BANDERA DE DATOS LISTOS PARA Te ANT EQU PTOSAL EQU PINSAL EQU PTOENT EQU PINENT EQU Cr) INICIO CLRF PORTA ‘BSF PTOSAL,PINSAL; ENVIAR MARCA cURF PORTS BSF ESTADO,RPO Movin @9€9 MOWNF TRISA; CONFIGURANDO PINES PTO A cr ESTADO,RPO CURE Bancom BSF BANCOMBANTKE; ACTIVAR BANDERA DE TX + COMPLETA ovo FREC ‘include FULL.GRP BANCOM,BAMJDA ; NUEVO DATO RECTBIOO? er? RECE.W 5 SI-> TOMAR LOS DATOS RecreI00s Y LUEVARLOS AL REGISTRO OE TX } DEL USUARIO [CF BANCOM, BANUDA; BORRAR BANDERA DE NUEVO + DATO RECTBIOO TFS BANCOM, BANTKF; TX COMPLETA? GoTo RETAB CF BANCOM, BANTX; BORRAR BANDERA DE FIN 3 DE TK SF BANCOM,BANDATR; ACTIVAR BANDERA DE 5 DATOS DE TX LISTOS ecoaT \vamece equ 10 coro RETAS lrovasrreq 11 RET? GOTO RETAB Inecrx eq 12 cro a recor eq 13, a Noe Kazorx equ 14 RETAB_ NOP lomarrxequ 15, ovo. RETAS laawsu equ 16 RETA MOVLN 0°26" {BITS DEL REGISRO BANCOM Mowe coNRET laannece EQU._OSBANDERA DE RECEPCTON Au LasO IBAMULS EQU 1; BANDERA DE ULTIMO BIT coro 03 [BANEST EQU O2;BANDERA DE ERROR EN LA estRUCTURA | [03 GOTO FREC [BANUOA EQU _03;RANDERA DE NUEVO DATO RECTBIDO 0 De la misma manera, el usuario no debe mover ningsin dato al registro de transmisi6n hasta que esta tarea haya activado la bandera de transmisién completa (BANTXE). Todas las banderas se encuentran disponibles para el usuario; algunas de ellas son activadas 0 desac- tivadas por las distintas tareas, pero otras re- Figura 14.27 Cédigo fuente del eercicio quieren de la intervencién del programador para modificarlas Ejemplo de aplicacién de las ‘subrutinas El programa que podemos apreciar en Ia figura 14.27 aplica las subrutinas del programa anterior y - RICE: x20 prictcsstee Mexaconreteeres con ellas se encarga de recibir un caricter, prove- niiente de un terminal y lo devuelve (envia un eco) hacia este silkimo. Si el terminal envia continua- ‘mente caracteres, los cuales se devuelven de la mis- ma manera, se configura un sistema funcionando como Full-Duplex. El formato del carécter para este ejemplo es de ocho dits de datos, sin bit de paridad y un birde parada; los datos viajan a una velocidad dde 2.400 bps, siel cristal es de 4MHz. ‘Como se anoté anteriormente, el progra- ma hace un lazo cuyo tiempo de ¢jecucién equivale al tiempo de duracién de un bie di- vidido entre cuatro. Si estamos trabajando a una velocidad de 2.400 bps, cada bit er de 4126,66 microsegundos y por tanto el lazo se debe demorar 104,17 microsegundos, es decir 104 ciclos de instruccién (si se trabaja a 4MHz). La tarea del usuario tiene un nii- mero limitado de ciclos, de acuerdo a los empleados por las otras dos tareas; en la Ta- bla 14.2 se muestran algunos resultados que nos dicen cuantos ciclos se emplean para la tarea del usuario. Como se puede ver en la figura 14.28, la tarea del usuario indaga por la existencia de nue- vos datos recibidos; sino los hay, espera un tiem- po hasta que se completa el mimero de ciclos requerido y luego entrega el control a la tarea de Beli) Si se han recibido nuevos datos, el cardcter recibido se mueve desde el registro de datos reci- bidos del usuario hacia un registro denominado registro de datos de transmisin y se desactiva la bandera BANUDA(BAndera de NUevo DAto recibido) indicando al usuario que se ha tomado el nuevo carécter, Si el transmisor no se encuen- tra ocupado, se activa la bandera de datos de transmisién listos (BANDATR) lo que le indica ala subrutina de transmisién que puede empe- zar su trabajo. Después de esto el control del pro- grama pasa a la tarea de recepcidn, Tareas de! usuario 4 Mover dato Poi fore Borrar bandera de reret ‘recibidos recepcién mediante la instruccién goto frec: Cristal | Rata de |Ciclos por lazo Ciclos de las tareas MHZ bits de tareas del usuario 4 2400 104 62 4 | 9600 26 4 8 | 4800 104 62 12 | 9600 78 36 20 | 9600 130 88 Tabla 14.2 Cicos para la trea de usuario. us ricco sobre Meroconroadoes CHEMCHT:: Figura 14.28 Subrutha o tara del usuario

Potrebbero piacerti anche