P. 1
Manual iboard III a

Manual iboard III a

|Views: 131|Likes:

More info:

Published by: Thomas Enrique Landa Blanco on Aug 22, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

10/14/2015

pdf

text

original

Sections

  • 6.1. Registros asociados al conversor A/D
  • 6.2. El Registro ADCON0 (detalle de sus bits)
  • 6.3. El Registro ADCON1 (detalle de sus bits)
  • 6.4. Reloj para la conversión A/D
  • 6.6. Otras Consideraciones importantes al realizar una conversión A/D
  • 6.7. Comandos en alto nivel para la conversión A/D
  • 6.8. Pasos a realizar para una conversión A/D con interrupciones
  • 7.1. Transmisión Asincrónica
  • 7.2. Recepción Asincrónica
  • 7.3. Interconexión de microcontroladores PIC® a través de EUSART
  • 7.4. Generador de Baud
  • 7.7. Comandos en alto nivel para el manejo del USART/EUSART
  • 7.8. Configuración de los registros del USART/EUSART en alto nivel
  • TEMPORIZADORES “TIMERS”
  • 8.1. Interrupción por TMR0
  • 8.2. Registros asociados al TMR0
  • 8.3. Como trabaja la temporización del TMR0
  • 8.4. Pasos a seguir para la utilización del TMR0
  • 8.5. Ejemplo de utilización del TMR0
  • 8.6. El timer TMR1
  • 8.7. El timer TMR1 trabajando como Temporizador
  • 8.8. El timer TMR1 trabajando como Contador
  • 8.9. El timer 1 del PIC16F886 / 887
  • 8.10. Como trabaja la temporización del TMR1
  • 8.11. Pasos a seguir para la utilización del TMR1
  • 8.12. Ejemplo de utilización del TMR1
  • 8.14. Como trabaja la temporización TMR2
  • 8.15. Pasos a seguir para la utilización del TMR2
  • 8.16. Ejemplo de utilización del TMR2
  • 10.1. Descripción del protocolo de comunicaciones 1-Wire®
  • 10.2. Implementación del maestro 1-Wire® con el PIC16F876
  • 10.3. Topologías de conexión entre dispositivos en una RED 1-Wire®
  • 10.4. Conexión entre el PIC16F876 y los dispositivos esclavos
  • 10.5. Los iButton® 1-Wire®
  • 10.6. Ejemplo de aplicación. Lectura del serial de un iButton® 1-Wire®
  • 10.7. Cálculo del CRC-8, identificación de errores en la RED 1-Wire®
  • 10.8. Ejemplo del cálculo del CRC8
  • 10.9. Termómetro Digital modelo DS18B20
  • 10.10. Ejemplo de lectura de temperatura con un DS18B20
  • 10.11. Algoritmo de Search ROM
  • EL COPROCESADOR ATMEL™ ATTiny13s
  • 11.1. El coprocesador utilizado como Salidas Digitales
  • 11.2. El coprocesador utilizado como Entradas Digitales
  • 11.3. El coprocesador utilizado como Salidas PWM
  • 11.4. El coprocesador utilizado como Contador Digital
  • REFERENCIAS BIBLIOGRÁFICAS

iBOARD III

Sistema de Desarrollo para Microcontroladores PIC con interfaz USB

Marzo 15, 2009 © ROSO Electric Supply Teléfono (0241) 8426384 • Cel (0414) 4266490 www.roso-control.com • soporte@roso-control.com

iBOARD III

Sistema de Desarrollo para Microcontroladores PIC con interfaz USB

Autores:

José M. Rodríguez S. Ángel L. Villegas

Editor:

Ángel L. Villegas

iBOARD III
Sistema de Desarrollo para Microcontroladores PIC con interfaz USB
© El Editor Hecho el depósito de Ley
Depósito Legal ISBN 1ra. Edición Marzo 2009 Tiraje: 50 Ejemplares (electrónico). Este libro está destinado a su publicación gratuita en Internet y puede ser descargado en la dirección electrónica: http://www.roso-control.com
Para solicitar ejemplares (sólo en formato electrónico) comuníquese con:

José M. Rodríguez S. ROSO Electric Supply, C.A. Calle 127 C/C Av. 90-A Edificio Cotoperí 10-6 La Trigaleña, Código Postal 2001, Valencia – Venezuela. Teléfonos: +58 241 414 4266490 Email: jmrs@roso-control.com Prohibida la reproducción total o parcial de esta obra, por cualquier medio o método sin la autorización escrita de los editores. El uso del contenido de los códigos de programación presentados en la obra sólo está permitido para fines educativos y no comerciales. El autor no es responsable de ningún daño ocasionado a personas o cosas que resulten de una mala aplicación de los programas contenidos en la obra. La responsabilidad de tal utilización quedará entendida y aceptada por el lector o usuario de éstos códigos. Impreso en Venezuela

4. 7.0.0.2. 5. 6. 4. 1. 7. 1.12.10. 5. El Compilador Basic® PROTON® Características del Coprocesador ATMEL™ Descripción modular del sistema iBOARD III Diagrama electrónico del sistema iBOARD III CAPITULO 02 Instalación de “Drivers” Optimizando la velocidad de transferencia de información entre la iBOARD III y el computador ( PC ).2. Comandos en alto nivel para el manejo del USART / EUSART Configuración de los registros del USART / EUSART en alto nivel PAG. 6.8. CAPITULO 03 Descripción del sistema Interfaz de programación y alimentación USB El Microcontrolador La regleta de conexiones Periféricos de entrada y salida El Coprocesador ATMEL™ CAPITULO 04 Primeros Pasos Paso No. 5. 7. 05. 6. 2.3. 7.2. Configuración del cargador “Loader” Paso No.9.0. 7. 1.15.1. 1. 03. 06. Selección del puerto de comunicaciones serial Paso No.0. 3.2. 1.5. 6.7.hex Paso No. 7. CAPITULO 01 Descripción del sistema Requerimientos mínimos del computador Contenido del CD-ROM Características del sistema de desarrollo iBOARD III Características del microcontrolador PIC16F876 Capacidades del Hardware Capacidades del Software.0.9. 4.5.6.4. 4.1. 5.1.3.5.7. 1.1. 6. 5. 3. 5. 5.3.4. 5. 5.5.7.3. 4.4.8.6.4. 16 17 17 18 19 19 20 21 22 23 24 25 26 29 31 33 33 34 34 35 36 36 36 38 39 39 40 42 42 43 43 43 44 3. 3.1.8.1. Instalación del compilador Basic® PROTON® IDE Paso No. 4. 8 8 8 9 9 9 10 10 10 10 10 11 12 13 13 . 5. 4. Carga del archivo iBOARD_III_DEMO. 2. 5. 1. 16 16 7. 4.6.14. 02.2. 1.8. 4. 5. Lenguajes de programación más utilizados con microcontroladores Microcontroladores “BootLoaders” Características Principales del PIC 16F876 Anatomía de un microcontrolador PIC16F876 Arquitectura del PIC16F876 Organización de la memoria de programación del PIC16F876 Organización de la memoria de datos del PIC16F876 El registro de Estatus El registro de Opciones El registro de Interrupciones Interrupciones en el microcontrolador PIC16F886/887 Entrada – Salida Digital Puertos de Entrada/Salida (E/S) Comandos en alto nivel para el manejo de puertos de E/S Comandos en alto nivel para el manejo de Interrupciones CAPITULO 06 Conversión Analógica – Digital Registros asociados al conversor A/D El Registro ADCON0 (detalle de sus bits) El Registro ADCON1 (detalle de sus bits) Reloj para la conversión A/D Resumen de Registros utilizados por la conversión A/D Otras Consideraciones importantes al realizar la conversión A/D Comandos en alto nivel para la conversión A/D Pasos a realizar para una conversión A/D con interrupciones CAPITULO 07 El USART / EUSART de un microcontrolador Transmisión Asincrónica Recepción Asincrónica Interconexión de microcontroladores PIC a través de EUSART Generador de Baud Resumen de pasos a seguir para realizar una transmisión serial asincrónica a través de los registros del módulo EUSART. 6.8. 5.16. 5.2. 7. 6. 01. 5.0.11.4. Resumen de pasos a seguir para realizar una transmisión serial asincrónica a través de los registros del módulo EUSART. 3.5. 6. 6. 3. 1.0.3.6.13.3.1.INDICE PAG. Grabar programa en el microcontrolador Referencias sobre el primer programa Cargador “BootLOADER” CAPITULO 05 El Microcontrolador PIC® Clasificación de los microcontroladores según el bus de datos 1 1 1 1 1 1 2 2 3 4 6 6 5.6. Ejecución del entorno PROTON® IDE Paso No. 4. 1. 04. 5. 7.7.7.5.

12.8.4. 9. . 11. 8. TMR1 y TMR2 en forma simultánea CAPITULO 09 Comunicación Serial sincrónica I2C Características del BUS I2C Detalle de la comunicación I2C Direccionamiento y formato de transferencia de información Inicialización en modo maestro Transmisión en modo maestro Recepción en modo maestro Dispositivos I2C en el sistema de desarrollo iBOARD III Comandos en alto nivel para el manejo del protocolo I2C Memoria Eeprom 24LC16B Ejemplo de utilización de una memoria Eeprom 24LC16B Reloj en tiempo Real DS1307 Ejemplo práctico con reloj de tiempo real DS1307 CAPITULO 10 Protocolo de comunicaciones 1-Wire® Descripción del protocolo de comunicaciones 1-Wire® Implementación del maestro 1-Wire® con el PIC16F876 Topologías de conexión entre dispositivos en una RED 1-Wire® 47 48 48 48 48 48 50 51 51 51 51 52 52 55 55 55 55 57 58 58 59 59 59 60 60 61 62 62 63 64 64 67 67 68 69 CAPITULO 12 MODULO CCP/PWM. Comparación y TMR1 Registros asociados al módulo PWM y TMR2 Ejemplos de aplicación del módulo CCP1 en modo Captura Comando en Alto nivel para HPWM por hardware Comando en Alto nivel para PWM por software Ejemplo de HPWM y configuración a través de registros Ejemplo de HPWM y comandos en alto nivel Referencias Bibliográficas Anexo A. 11.9. 9.3.6. 12.7. 12.7.2. 12.11. 9. 9.3. 12. 10. 9. 12. continuación.INDICE.10. PAG. 10. 11.4.0.12.1. 10. 12. Pantalla LCD Anexo B. 9. 9.7.17.0. 9. 11. 8. 8.1.9.3.7.8. 10.11. 8. 12. 8.6.8. Uart/Scope/OPC®. Lectura del serial de un iButton® Cálculo del CRC-8.12. 8. 10.5.5. 8. 8.6. 10. Software cargador iLOADER.2.2. 8. 10.6. PAG. 12.10. 8. 10.4. 11.1. 12. 8.10.9.13.10. Conexión entre el PIC16F876 y los dispositivos esclavos Los iButton® 1-Wire® Ejemplo de aplicación. 10. 8.1. 9. 8.1.4.0. 8.0.5.3. 11. Captura.15.11. 8.5. 8.3. 9. 9.5.8. Comparación y PWM Modo de Captura Modo de Comparación Modo PWM Registros asociados a la Captura. 10.9. 8. 12. 10. identificación de errores en la RED 1-Wire® Ejemplo del cálculo del CRC8 Termómetro Digital modelo DS18B20 Ejemplo de lectura de temperatura con un DS18B20 Algoritmo de Search ROM CAPITULO 11 El coprocesador El coprocesador El coprocesador El coprocesador El coprocesador El coprocesador ATMEL™ ATTiny13s utilizado como Salidas Digitales utilizado como Entradas Digitales utilizado como Salidas PWM utilizado como Contador Digital utilizado como Conversor A/D 69 70 70 71 72 73 74 76 78 79 81 82 83 84 85 85 86 86 88 88 89 90 90 91 91 92 93 101 CAPITULO 08 Temporizadores “TIMERS” Interrupción por TMR0 Registros asociados al TMR0 Como trabaja la temporización del TMR0 Pasos a seguir para la utilización del TMR0 Ejemplo de utilización del TMR0 El timer TMR1 El timer TMR1 trabajando como Temporizador El timer TMR1 trabajando como Contador El timer 1 del PIC16F886 / 887 Como trabaja la temporización del TMR1 Pasos a seguir para la utilización del TMR1 Ejemplo de utilización del TMR1 El timer TMR2 Como trabaja la temporización TMR2 Pasos a seguir para la utilización del TMR2 Ejemplo de utilización del TMR2 Ejemplo del TMR0. 8.2.14. 9.16.4.2. 10.0. 9.

se complementan para conformar elementos de interfaz hombre – máquina. Tanto el software como el hardware incluyen las últimas innovaciones electrónicas para proporcionar a usted una herramienta poderosa. sólida y bien construida. los primeros pasos que el usuario deberá seguir para la instalación del software y el desarrollo del primer programa de aplicación. versa sobre la conversión A/D. El capitulo 6. Delphi® Borland. El capítulo 7 sobre la comunicación serial asincrónica con el USART / EUSART del microcontrolador. el sistema es acompañado del excelente compilador en Basic® modelo PROTON® y casi la totalidad de los ejemplos desarrollados en el manual. se detalla el funcionamiento del microcontrolador ATMEL™ incluido en el sistema de desarrollo. procesamiento. una gran cantidad de dispositivos pasivos y activos generalmente de montaje superficial.com. Adicionalmente. medición y almacenamientos de información. PowerPoint®. Sin embargo. Además del programa cargador tipo “bootloader” denominado iLOADER. pensada para resistir un trato duro y aún así brindar un acabado profesional. como por ejemplo: Excel®. Es un sistema completo que posee además de un microcontrolador. ventajas y aplicaciones del coprocesador. toma el voltaje de alimentación directamente del puerto USB del computador. por el contrario. Se desarrollan ejemplos para el manejo del reloj de tiempo real DS1307 incluido en el sistema y la memoria EEprom serial modelo 24LC16B. El capítulo 4. son capítulos informativos. El segundo capítulo explica en forma detallada como instalar los “Drivers” de la tarjeta iBOARD III para trabajar con los sistemas operativos Windows™ tanto Xp® como Vista®. fueron realizados con el compilador Basic® PROTON™. su utilidad y ejercicios de aplicación. El sistema de desarrollo no necesita ser alimentado con una fuente de tensión externa.Hex. C® y/o cualquier otro compilador que produzca la compilación del programa en formato Intel *. En el capitulo 5. Visual Basic®. cálculo. puede ser utilizado con cualquier lenguaje de programación para PIC®. Por último en el capítulo 11. programar. la cual. El capítulo 1. se desarrolla una breve introducción a la organización y arquitectura de los microcontroladores PIC®.INTRODUCCIÓN El sistema de desarrollo para microcontroladores modelo iBOARD III. se incluye una herramienta de mayores prestaciones y tecnología denominada servidor de datos OPC™. fue escrito con la finalidad de utilizar el sistema de desarrollo directamente con el compilador Basic® PROTON®. se encuentra en continuo proceso de actualización por parte del fabricante. el usuario encontrará una explicación más detallada de cada módulo funcional del sistema de desarrollo iBOARD III. mientras que en el capítulo tres. A medida que se desarrollan los capítulos. el usuario contará con una interfaz completa UART/SCOPE que le permitirán visualizar la información proveniente del microcontrolador en forma de texto y en forma gráfica. Usted podrá entonces. alimentar a sus circuitos electrónicos directamente de la salida de voltaje del programador hasta 400 ma de carga por puerto USB sin inconvenientes. con la cual. El primero de ellos describe al sistema de desarrollo. usted podrá configurar. etc. En el capítulo 9 se aborda la comunicación serial sincrónica en especial el protocolo de comunicaciones I2C. El capítulo 10. El iBOARD III. verificar e implementar diseños electrónicos digitales utilizando como base a los microcontroladores PIC® de las familias serie F modelos 16Fxxx y 18Fxxx. fue totalmente diseñado para explotar al máximo las prestaciones del sistema y cumplir con las exigencias actuales en el diseño de sistemas digitales.roso-control. Mayor información teórico práctica sobre el uso y aplicación de los microcontroladores PIC® está disponible para su consulta a través de la página web www. El sistema de desarrollo iBOARD III. visualización. un protocolo de comunicaciones de avanzada tecnología muy utilizado en la actualidad. ya sea. es una plataforma educativa de avanzada tecnología. esto se hizo con la finalidad de estandarizar el método de enseñanza de los microcontroladores PIC®. El software que acompaña al sistema iBOARD III. El capítulo 8. los ejemplos aumentarán el nivel de complejidad tanto de conexiones en hardware como de descriptores en software. Se incluyen ejemplos para el manejo de los puertos de entrada – salida del microcontrolador. le permitirá exportar en tiempo real variables internas del microcontrolador a cualquier aplicación compatible Microsoft™ con capacidad de comunicación OPC™.2 y 3. . Basic®. Visual Studio. sus partes y capacidad del hardware incluido. hace una explicación sobre los periféricos tipo “Timers” internos que posee el microcontrolador. es una síntesis del protocolo de comunicaciones 1-Wire® de Dallas Semiconductor. los cuales. haciendo especial énfasis en los elementos de entrada y salida.

está basado en el muy utilizado microcontrolador PIC16F876. Códigos de ejemplo y diagramas esquemáticos. Reloj de tiempo real (RTC) I2C modelo DS1307 con salida de onda cuadrada y entrada para batería de respaldo. Manual de uso y referencia del microcontrolador PIC16F876. Hasta ocho (08) posibles fuentes de interrupción. iBOARD III.A. Conexión a Internet (opcional para actualizar la versión de los programas incluidos en el CD-ROM y descargar nuevos ejemplos disponibles en la RED).2. • Suministrarle un conjunto de ejemplos e instrucciones de utilización que harán de su experiencia con el iBOARD III todo un éxito. Todos los terminales de E/S del PIC están disponibles para el Protoboard. Código de ejemplo para el microcontrolador PIC16F876. Cuatro (04) salidas digitales con LEDs pre-conectados a los terminales RC2 . 1. Memoria EEPROM I2C modelo 24LC16B de 2K x 8 Bits. Puerto de comunicaciones USB. 8 K x14 Words de memoria de programa Flash re-programable. Unidad de CDROM. 1. Alimenta al protoboard directamente desde la tarjeta impresa hasta 400 ma. Capacidades del Hardware • • • • • • • • 384 bytes de memoria RAM. Coprocesador ATMEL™ de 8 bits. Características del microcontrolador PIC16F876 El microcontrolador incluido en el sistema de desarrollo iBOARD III. Características del sistema de desarrollo iBOARD III • • • • • • • • • • • • • • Interfaz de programación USB. 256 Bytes de memoria Eeprom. tomaremos un tiempo para revisar el contenido del material que acompaña al sistema de desarrollo: • • • • • • • • Tarjeta de desarrollo iBOARD III. Pantalla LCD estándar de 2x16 caracteres. Convertidor Analógico/Digital de 4 canales y 10 bits de resolución. Antes de continuar. Dos (02) módulos CCP (Capture/Compare/PWM).3. CD con programa de instalación y documentación adicional. 1 . 1. Especificaciones del PIC16F876 (Microchip™) en inglés. Cable de programación USB. Se conecta de forma sencilla a cualquier protoboard estándar. 1. Pantalla LCD de 2x16 pre-conectada y lista para trabajar. Especificaciones técnicas del DS1307. Requerimientos mínimos del computador • • • • Procesador Pentium 266 Mhz o superior con Windows XP® ó Vista®. • Guiarlo durante el proceso de instalación del software incluido en CD-ROM. Microcontrolador PIC16F876 con resonador 20 MHz. Microcontrolador PIC16F876 con resonador de 20 Mhz incluido. TMR1 y TMR2). completo y destacados de su gama. Un (01) USART (comunicación serial).RC5 del microcontrolador PIC a través de un interruptor tipo mini DIP. 24LC256 y pantalla LCD. Compilador en lenguaje Basic® PROTON® versión DEMO. potencialidades y ventajas del iBOARD III.CAPÍTULO 1 DESCRIPCIÓN DEL SISTEMA El propósito de éste manual es: • Presentar las características. Incluye un LED de color verde para indicar la alimentación del sistema.1. Cuatro (04) entradas digitales con pulsadores N.4. Tres (03) Timers o temporizadores (TMR0. 1. lista para conectar directamente al PC. probado como uno de los PIC más robustos. No requiere de transformador y/o fuente externa de alimentación. conectadas a los pines RA0 … RA3 del microcontrolador PIC. Sistema de desarrollo para microcontroladores PIC®. Incluye un LED de color rojo para indicar la actividad del puerto USB. Pulsador de “RESET” para reiniciar al microcontrolador.. CD con programas de aplicación. Contenido del CD-ROM • • • • • • Programa de instalación del iBOARD III.. “Drivers” para interfaz de puerto USB.5.

Generación de múltiples tonos y sonidos de alarma. Dos (2) puertos como salidas programables PWM de 37. Aritmética en punto flotante para las variables así definidas. 2 .roso-control. I2C de Phillips Semiconductors. Funciones incluidas para facilitar el manejo de “string”. inicialmente. podrá adquirirlo como una opción a través del fabricante.1 Volts para la conversión A/D y comparación. los cuales vienen incluidos junto al sistema. Referencia interna de 1. Medición de pulsos. El Compilador Basic® PROTON® • • • • • • • • • • • • • • Programación en alto nivel. estructurada y modular en lenguaje Basic®. 11 se detalla la operación completa del microcontrolador ATMEL™ como coprocesador. Por software. Facilidad para la definición y manejo de memoria RAM. el programa iLOADER®. frecuencia y conteo de eventos. como contadores de freq. 3-Wire de Dallas-Maxim. NOTA: El sistema de desarrollo iBOARD III. el fabricante se reserva el derecho de incluirlos en la medida de que el software para su utilización ya esté disponible. Manejo directo de pantallas LCD alfanuméricas y gráficas. SPI de Motorola. el sistema utiliza por defecto con el PIC16F876 y el compilador Basic® PROTON® IDE Lite. • Manejo de los protocolos de comunicación serial: 1-Wire ® de Dallas Semiconductors. Cuatro (4) puertos digitales prog. Manejo total de interrupciones para todos los periféricos incluidos. Manejo de pulsadores e interruptores de forma fácil y eliminando rebotes. El fabricante está desarrollando el software necesario para utilizar al coprocesador como elemento central en la conexión de sistemas de desarrollo a través de una red de comunicaciones.com. En el capítulo No. iBOARD III.7. Acceso a los registros internos del microcontrolador para lectura y/o escritura. USART directamente conectada al puerto USB del PC. Características del Coprocesador ATMEL™ El microcontrolador ATMEL™ viene totalmente preprogramado para realizar las siguientes configuraciones y tareas como coprocesador: • • • • • • • Cuatro (4) puertos digitales programables como entradas y/o salidas. Igualmente. Si usted recibió un sistema de desarrollo sin el microcontrolador ATMEL™. • Amigable IDE de programación. EEprom y Flash.1. trigonométricas y lógicas incluidas. Tres puertos (3) como comparadores analógicos. Funciones matemáticas. Sistema de desarrollo para microcontroladores PIC®. se podrá descargar en forma gratuita y sin restricciones desde la página www. hasta 1 MHz. Capacidades del Software. puede generarse la PWM por cualquier pin del microcontrolador. Este programa es un extra y no es imprescindible para la puesta en funcionamiento del sistema de desarrollo iBOARD III. 1. Sin embargo. no todos los sistemas de desarrollo incorporarán el microcontrolador ATMEL™.6. y cualquier lenguaje de programación. Manejo de motores servo y de paso mediante comandos especializados.5 KHz. Dos puertos (2) como entradas analógicas 10 bits. Manejo de tablas y estructuras condicionales de repetición y decisión. definición de variables y modificadores de formato. Comunicación serial RS232 por hardware a través de los pines RC7/RC6 del microcontrolador. Y muchas otras características que hacen de este uno de microcontroladores más poderosos y a la vez sencillos de usar para casi cualquier aplicación que usted pueda imaginar. puede utilizarse con cualquier microcontrolador compatible de Microchip™ serie PIC16Fxxx y PIC18Fxxx. 32 Bytes de memoria RAM disponibles al usuario para lectura / escritura.

iBOARD III.1. PARA CONEXIÓN DE LEDS AL MICROCONTROLADOR BORNERA DE CONEXIÓN AL PROTOBOARD MICROCONTROLADOR ATMEL 8 BITS LED’S Y PULSADORES PULSADOR DE RESET Figura 1.768 KHz PARA RELOJ DE TIEMPO REAL HUECOS PARA EL MONTAJE EN TABLERO RELOJ DE TIEMPO REAL DS1307 LED BICOLOR VERDE / ROJO RESONADOR 20 MHz CONECTOR MINI USB CONECTOR EXTRAÍBLE PARA LA LCD MEMORIA EEPROM 2K X 8 BITS SWITCH MINI DIP 4X N.8. Fotografía del sistema de desarrollo iBOARD III.1. Descripción modular del sistema iBOARD III MICROCONTROLADOR PIC16f876 PANTALLA LCD 2X16 CARACTERES CONVERTIDOR USB A SERIAL FT232 XTAL DE 13. Sistema de desarrollo para microcontroladores PIC®. 3 .O.

Diagrama electrónico del sistema iBOARD III Figura 1. 4 .2. Esquema electrónico del sistema de desarrollo iBOARD III. iBOARD III.1. Sistema de desarrollo para microcontroladores PIC®.9.

iBOARD III. 5 . Esquema electrónico del sistema de desarrollo iBOARD III. continuación.Figura 1. Sistema de desarrollo para microcontroladores PIC®.3.

6. Note que la figura 2. Modifique la propiedad “Temporizador de Latencia” a un valor igual a 3. Donde la x es el puerto serial asignado en su computador. es un archivo del tipo ejecutable.2. Seleccione “Administrador de dispositivos”.1. Ventana de instalación de los “Drivers” para la iBOARD III.2(c) muestra incluso el puerto serial COM(8) seleccionado como puerto virtual.exe.1. 4.4. Optimizando la velocidad de transferencia de información entre la iBOARD III y el computador ( PC ). como se muestra en la figura 2. iBOARD III. Antes de conectar la iBOARD III al computador. se suministran en un CD entregado junto al equipo bajo el archivo denominado: CDM 2. conecte la iBOARD III al puerto USB del computador. la propiedad “latencia” ó retardo en la comunicación entre la CPU y la iBOARD III es ajustable por el usuario. Es de hacer notar la gran variedad de CPU’s y tarjetas de memoria con diferentes velocidades de procesadores y tecnologías. de inmediato deberá observar una secuencia de ventanas que aparecen indicando al final. diseño los “Drives” para la iBOARD III.5. usted deberá hacer doble clic . 2.04. Haga doble clic sobre el icono donde aparece el USB Serial Port (COMx). el cual. requiere de la instalación de los “Drivers” suplidos por el fabricante para su correcto funcionamiento. Por ello. Diferentes mensajes observados durante la instalación del sistema de desarrollo iBOARD III. con su ratón en el archivo de instalación de los “Drivers”.. En este caso el PC instaló la iBOARD III seleccionando para su funcionamiento el puerto (COM8). 6 .Abra el menú propiedades del sistema “Hardware” a través del panel de control de Windows®. esto con la finalidad de lograr una optima sincronización entre ambos equipos. 1. Haga doble clic sobre “Configuración del Puerto” y “Opciones Avanzadas”. La propiedad latencia la podemos ajustar de la siguiente forma: Figura 2. Sistema de desarrollo para microcontroladores PIC®. De esta forma usted ya optimizó la transferencia de información entre el PC y el sistema de desarrollo iBOARD III.1 anexa. Figura 2. la iBOARD III. esto se puede observar en la figura 2. esto se puede observar en la figura 2. que la instalación del nuevo hardware ó tarjeta iBOARD III ha sido completada en forma satisfactoria.06. Una vez instalados los “Drives”. 2. de forma que fuesen compatibles con la totalidad de los PC existentes en el mercado. Los “Drives” requeridos. momentáneamente se ejecutará en forma automática la instalación de los “Drivers”. esto se puede observar en la figura 2.CAPITULO 2 INSTALACIÓN DE “DRIVERS” Al igual que todos los accesorios USB actuales.3. esto se puede observar en la figura 2. 3. El fabricante.

3. Figura 2. Menú configuración avanzada del COM del sistema operativo Windows™. Menú Propiedades del sistema/Hardware/Administrador de dispositivos del sistema operativo Windows™.Figura 2.5. iBOARD III. Menú Configuración de puerto del sistema operativo Windows™. Sistema de desarrollo para microcontroladores PIC®. Figura 2. Figura 2.6.4. 7 . Menú Administrador de dispositivos del sistema operativo Windows™.

el cual.2. se presenta en un encapsulado de 28 pines tipo DIP 0.CAPITULO 3 DESCRIPCIÓN DEL SISTEMA Para describir funcionalmente al sistema iBOARD III vamos a dividirlo en cinco bloques operativos bien definidos: • • • • • Interfaz de programación y alimentación USB El microcontrolador PIC La regleta de conexiones Los periféricos de entrada y salida Coprocesador ATMEL™ Los componentes que integran la interfaz de programación son: • • • • Un circuito integrado convertidor USB / RS-232 TTL modelo FT232. Un diodo LED de color verde que indica el voltaje de alimentación. iBOARD III.2. Un diodo LED de color rojo que indica la actividad del puerto USB. 3. 3. Interfaz de programación y alimentación del iBOARD III.1. MP3 y muchos otros dispositivos USB) para programar al microcontrolador.2. Figura 3. Sistema de desarrollo para microcontroladores PIC®.3”. Se le ubica en la parte superior izquierda del sistema y está acompañado de un pulsador de “RESET” y un resonador de 20 Mhz como se muestra en la Figura 3. Figura 3.1.1. Ubicación del microcontrolador. 8 . Un conector USB tipo mini 5P que permite utilizar cualquier cable USB mini estándar (como los usados en cámaras. Los elementos que conforman a este bloque se muestran resaltados en color rojo en la Figura 3. El Microcontrolador El microcontrolador incluido en el sistema de desarrollo iBOARD III es el PIC16F876. Interfaz de programación y alimentación USB Se encarga de ajustar los niveles de tensión del puerto USB a los niveles aceptados por el microcontrolador (0 . resonador y pulsador de RESET del iBOARD III .5 Vdc) y de tomar la alimentación de +5V necesaria para el funcionamiento del sistema de desarrollo.

Nota Importante. iBOARD III. Un reloj de tiempo real (RTC) modelo DS1307. con todos sus terminales de comunicaciones y operación disponibles. El Coprocesador ATMEL™ Es un microcontrolador de 8 bit’s fabricado por la casa ATMEL™ muy eficiente y veloz. Además posee 56 bytes de memoria NVRAM totalmente libres. Referencia (5) en la figura 3. puerto C.3. los cuales se utilizan como entradas digitales.3. PWM. “expansor” de puertos E/S.RC4 y RC5 del microcontrolador. Estos no pueden ser removidos del sistema y reflejan en todo momento el estado de los pines mencionados. Este RTC almacena y actualiza la hora y fecha de una manera muy exacta. 3.3.3. La regleta de conexiones Abarca toda la parte inferior del sistema y sirve de soporte al mismo. Periféricos de entrada y salida El iBOARD III.3. Referencia (7) en la Figura 3. Los LEDs son indicadores visuales muy llamativos utilizados en casi todos los equipos electrónicos. Referencia (3) en la Figura 3.3. En ella se encuentran claramente identificados todos los pines del microcontrolador además de los terminales de alimentación +5V y GND. números.3. bits <5:2>. • • • • Figura 3. estos son: • Un banco de 4 LEDs pre-conectados a los terminales RC2. bits <3:0>. Sistema de desarrollo para microcontroladores PIC®. +5V es una salida de 5 Vdc aunque puede utilizarse como una entrada de 5 Vdc si no se desea alimentar al iBOARD III desde el puerto USB del PC. evitar daños que pudiese ocasionar sobre el puerto USB del PC.RA2 y RA3 del microcontrolador. en funciones de ajuste y selección de configuraciones. un pin que genera una señal cuadrada de frecuencia programable ideal para generar bases de tiempo exactas y construir temporizadores. Se lpuede conectar una batería de respaldo para mantener la hora y fecha actualizándose durante años sin estar el sistema iBOARD III.RC3. ha sido incluido para funcionar como coprocesador del microcontrolador PIC 16F876. Los pulsadores son ampliamente utilizados en los dispositivos electrónicos. Este tipo de memorias son muy empleadas para almacenar configuraciones y llevar un registro histórico de fallas o de valores de una variable medida con el microcontrolador. La función de este interruptor es la de conectar y/o desconectar física y eléctricamente los LED’s de los pines del microcontrolador. Referencia Figura 3. los cuales.RA1.3. La comunicación con la memoria Eeprom 24LC16B y el RTC DS1307 se hace por medio de un protocolo serial llamado I2C que sólo requiere de dos líneas para su funcionamiento.3.4. Para poder alimentar con una fuente externa regulada de +5Vdc por el pin +5V. Referencia (1) en la Figura 3. cuenta con un grupo de periféricos muy utilizados en aplicaciones industriales. puerto B. a fin de. Referencia (6) en la Figura 3. 3. están conectados en serie con cada uno de los LED’s descritos en el punto anterior. Un banco de 4 pulsadores pre-conectados en los terminales RA0. Un conector para pantalla LCD. permitiéndole funcionar como reloj/calendario. puerto A. Ubicación de la regleta de conexiones del iBOARD III .3. Referencia (4) en la Figura 3. permiten desplegar texto. 9 . convertidor A/D y funciones futuras de comunicación en RED. Una memoria EEPROM de 2K x 8bits que puede ser re-escrita más de un millón de veces y puede almacenar datos durante más de 50 años aún sin estar alimentada.5. bits <7:1> del microcontrolador. mensajes y con un poco de creatividad hasta gráficos. Las pantallas LCD son los periféricos de salida más llamativos. • Dip-Switch mini de cuatro (4) posiciones. deberá primero desconectar el cable de conexión USB al sistema iBOARD III. el cual.3. Referencia (2) en la Figura 3. La pantalla LCD del iBOARD III se encuentra cableada en los pines RB1 al RB7.

para ello es necesario que ubique claramente cada uno de los componentes. 03: Ahora realice la configuración del cargador de programas (Loader). MikroBasic®.2. MBASIC®. Paca de experimentación “Protoboard”. haciendo “click” en el icono creado en el escritorio por el programa de instalación ó a través del menú Inicio\todos los programas\. Paso No. 10 . Abra la carpeta 20 Compilador y ejecute el instalador como aparece en la figura 4.4. Figura 4. Paso No. Pantalla de instalación del compilador PROTON®. Sistema de desarrollo para microcontroladores PIC®. Abra ésta carpeta y se encontrará dos sub-carpetas denominada 10 Manual y 20 Compilador. el sistema viene por defecto con el compilador versión Basic® PROTON® IDE Lite.. en el directorio Ejemplos.2. PBasic®.3. como aparece en la figura 4. • • • Sistema de desarrollo iBOARD III.1.2. Esto no significa que éste sistema de desarrollo se pueda utilizar única y exclusivamente con el Basic® PROTON®. incluido. sea C. Pascal. usted puede instalar en la base de 28 pines cualquier microcontrolador de la serie 16Fxxx y 18Fxxx compatible de microchip™ y editar su programa con el compilador de su preferencia.\30 Compilador.3. En el CD incluido junto al sistema de desarrollo. Placa de experimentación “Protoboard” (no incluido). Por supuesto. ver figura 4.1. En ésta sección explicaremos en forma detallada como cargar un programa de ejemplo (incluido en el CD del iBOARD III) en el microcontrolador PIC16F876. 01: Instalación del compilador Basic® PROTON® IDE Lite. El microcontrolador PIC16F876 incluido en el sistema de desarrollo iBOARD III. etc. 04: Seleccione ahora el puerto de comunicaciones serial donde se instaló previamente el sistema de desarrollo iBOARD III. 4. viene pre-cargado con el código “boot loader” para Basic® PROTON®. 4.3. 4. Para ello seleccione la opción Loader… del menú View. iBOARD III.. Cable de programación mini USB 5P. se encuentra el instalador del compilador Basic® PROTON® en la Carpeta . Paso No. Paso No. 4. siga las instrucciones indicadas en pantalla.CAPITULO 4 PRIMEROS PASOS Vamos a comenzar a desarrollar actividades en nuestro sistema. Como referencia puede ver la figura 2.1. 02: Ejecute el entorno PROTON® IDE. como aparece en la figura 4.4. Figura 4. incluido.

Pantalla inicial del IDE PROTON®. iBOARD III. Selección del puerto serial de conexión al iBOARD III. Menú de configuración del cargador (Loader). 4.4. 05: Abra el archivo CAP_04_Ejemplo_01. Figura 4. Sistema de desarrollo para microcontroladores PIC®. Figura 4.Figura 4. Paso No. que se encuentra en el directorio 32 Ejemplos\CAP_04\01\ en el CD entregado a usted. Figura 4.5. 11 .hex a través de el Menú File/Open .3.6.5. Pantalla de selección del archivo de ejemplo.

Paso No. como se muestra en el círculo ubicado en la figura 4.7. 6: Presione el icono de grabar programa en el microcontrolador. 12 .8.7. sin embargo. Ahora abra el programa CAP_04_Ejemplo_01.4. esto se muestra en la figura 4. Pantalla del menú de programación del IDE PROTON®. Fotografía de la ejecución del programa CAP_04_Ejemplo_01. utilizando el comando FILE\Open del menú principal del IDE Basic® PROTON® y podrá visualizar el programa codificado en un lenguaje de alto nivel como el Basic® PROTON®.hex Cargado en el PIC16F876 del sistema de desarrollo iBOARD III. Figura 4. Referencias sobre el programa DEMO Entendemos que esta es la primera vez que usted está cargando un programa al sistema de desarrollo iBOARD III.10. Este sólo es un ejemplo para mostrar la operatividad del sistema hardware – software sobre todo a aquellas personas que tienen ya algo de experiencia en el mundo de los microcontroladores y están ansiosos de programar aplicaciones. iBOARD III. Figura 4. 4. en los capítulos posteriores se explicará en detalle la teoría del funcionamiento de los microcontroladores PIC®. no se preocupe si no entiende el código o parte de el. Figura 4. y quizás es su primera experiencia con los microcontroladores.9.bas. Sistema de desarrollo para microcontroladores PIC®. Pantalla final presentada por el IDE del PROTON®.7.6.

lo cual.2 Coloca en PORTB. de uso general Declaracion de var. 1 ' Comando para Print At 1. Para que éste programa pueda ser ejecutado por el PIC® primero hay que compilarlo. 2.10. "Sist.hex Este formato es un estándar usado por los microcontroladores PIC®. XTAL = 20 ' Define la velocidad del resonador Declare Declare Declare TRISB. Figura 4. encenderán los Led's correspondientes a la posición corresp.8. iBOARD III. Por defecto.1 como Salida Dig.2 = PORTA. sean efectivamente almacenados en dicho microcontrolador. éste archivo está compuesto de “Tokens” Bytes binarios codificados en formato Intel *.2 a la pantalla LCD conec. permite programar al microcontrolador conectado en un puerto de comunicaciones con el programa realizado por el usuario. deberán ser cargados inicialmente con un pequeño código de programa denominado “boot loader”.hex) lo denominaremos de ahora en adelante código objeto. Retardo de 100 ms Main: Print $FE.5 = PORTA. "iBOARD III" ' Lleva DelayMS 2000 ' Pausa For Contador = 0 To 255 ValorF = ValorF + 0.3 DelayMS 100 Next GoTo Main End Figura 4.4. al PORTB.4 = PORTA. para ello.1 Print At 2. Nosotros recomendamos utilizar el programador de nuestra casa comercial modelo iPROG18.2 PORTB.hex.4 LCD_ENPIN PORTB. DEC1 ValorF PORTC.1 = 0 = 0 ' ' ' ' ' ' ' ' ' ' ' Pines de conexión Pin de Datos LCD Pin de Enable LCD Pin de RS LCD Declara a PORTB. un cero (0) Lógico Los microcontroladores PIC16F87x(A) y PIC18Fxxx(x) pueden escribir su propia memoria de programa (Flash) sin necesidad de utilizar un programador externo. En contrapartida. Declara el Puerto C como salida dig.bas) está escrito en lenguaje de alto nivel Basic®. Cargador “Boot LOADER” ' CAP_04_Ejemplo_01.3 conec. 13 .bas ' Ejemplo básico de utilización del sistema iBOARD III con LCD ' ------------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado ALL_DIGITAL = True ' Config.3 = PORTA.bas En el Paso No.1.11 se observa la ventana principal del programa MicroCode Loader. usted cargó al microcontrolador el código compilado del programa CAP_04_Ejemplo_01.3 LCD_RSPIN PORTB. 5. de uso general Inicializa la variable en cero Declara el Puerto A como entrada dig. Sistema de desarrollo para microcontroladores PIC®. genera el archivo compilado con el mismo nombre pero con la extensión . El programa cargador “MicroCode Loader” es un ejemplo de esto.3.11.2 PORTC. ya sea fuera de circuito y/o tipo ICSP. el microcontrolador PIC16F876 incluido en el iBOARD III.2 LCD_DTPIN PORTB. es necesario que el microcontrolador a utilizar ya haya sido pre-programado con el código “boot loader”. esto se deberá realizar con un programador para PIC®. "Valor = ". el programa CAP_04_Ejemplo_01 . En la figura 4. Dim Contador As Byte Dim ValorF As Float ValorF = 0 TRISA = $FF TRISC = $00 Declaración de var. ya ha sido preprogramado con el código “boot loader”. 1.bas con la extensión (.0 PORTC. Desarrollo" ' Lleva Print At 2. El código escrito en Basic® lo denominaremos código fuente y el codificado (.hex. limpiar pantalla LCD el cursos a posic. al PORTB. Antes de utilizar el programa MicroCode Loador. al PORTB.4 conec. el cual.1 PORTC.1 el cursor a posic. todos los puertos como dig.4 de 2000 ms ' ' ' ' ' ' ' ' ' Ciclo iterativo "For" éste segmento de código mostrará en la pantalla Si presionan los pulsa_ dores. Listado de la codificación del programa CAP_04_Ejemplo_01. Fotografía de la pantalla principal del programa MicroCode Loader.4. permite que tanto el código del programa objeto de usuario como el valor de los registros en EEprom transmitidos al microcontrolador desde un puerto de comunicación serial y/o USB.

El funcionamiento del “boot loader” se puede explicar de la siguiente forma. se observa la conexión de USART del microcontrolador con el convertidor FT232 USB a SERIAL TTL. El programa de usuario comienza aquí 4. se encuentra el archivo correspondiente al código “boot loader” (16F876_20. carpeta 12 Bootloader.12. si existe un programa cargador como el MicroCode Loador y en ejecución.2. iBOARD III. En un programa escrito en “assembler” se deberá escribir: Para microcontroladores PIC16Fxxx ORG 0 GOTO StartOfProgram ORG 4 StartOfProgram . Todos los registros de la memoria EEprom y del microcontrolador están disponibles al usuario.9. es necesario. el mismo. 14 . el programa pre-programado en el microcontrolador “boot loader” realiza un chequeo de comunicación a través del USART del micro. deberá ser cargado en el microcontrolador PIC16F876 a través de un programador estándar. el programa MicroCode Loader no se podrá comunicar con el microcontrolador.6. debido a que el código “boot loader” reside en la parte superior de la memoria Flash. Si este programa no se carga en el microcontrolador. del diagrama electrónico de conexiones previamente mostrado en esa figura.hex).7 y el de transmisión el pin PORTC. se utilizan las cuatro primeras palabras de programación o localidades de la flash del microcontrolador denominadas vector de interrupción. Open Hex File Se utiliza para cargar en memoria del programa MicroCode Loader un archivo del tipo *.En el CD incluido con el sistema de desarrollo. Fotografía del menú principal del programa MicroCode Loader. El programa de usuario comienza aquí Para microcontroladores PIC18Fxxx ORG 0 GOTO StartOfProgram ORG 8 StartOfProgram . Al energizar al microcontrolador. indicarle que la primera instrucción a ejecutar sea la indicada por el código contenido en el “boot loader” . En la figura 1. se le da el control del microcontrolador al programa MicroCode Loader. Para hacer esto. El software MicroCode Loader se comunica con el microcontrolador a través del USART del microcontrolador. BARRA DE HERRAMIENTAS DEL MicroCode Loader: Figura 4. Se debe tener especial cuidado cuando usted programa directamente en assembler. si no se encuentra ninguna actividad en el puerto de comunicaciones. es necesario un salto (Jump) a ésta dirección. el microcontrolador ejecutará el programa que tiene contenido en su memoria flash. o al hacer un “reset” del microcontrolador. El código (firmware) “boot loader” reside o se almacena en las últimas 256 palabras de la memoria de programación (Flash) del microcontroladores de la serie PIC16F y/o en las últimas 336 palabras de la memoria de programación (Flash) de los microcontroladores de la serie PIC18F.hex Sistema de desarrollo para microcontroladores PIC®. al energizar el microcontrolador. Los PIC16F87x tienen ubicado el USART de recepción (Rx) en el pin PORTC.

“Run User Code After Programming”. Loader Serial Port Mediante esta caja de texto. programar sólo la memoria Eeprom. tanto en el área del código de Programa como en la Memoria Eeprom. Verify Mediante esta opción se puede comparar el código interno del microcontrolador (área de programa y Eeprom) con el mostrado en la pantalla del programa MicroCode Loader. programar sólo el área código de programas. ejecutar el código o programa del usuario después de programar al microcontrolador. “Load File Before Programming”. verificar después de programar. Otras opciones están también disponibles a través del menú principal. 15 . hace que el programa “boot loader” termine su funcionamiento y se ejecute el programa almacenado en la memoria flash del microcontrolador. muestra el tipo de microcontrolador utilizado. Nota: se puede también realizar la verificación del área de programas y de la memoria Eeprom por separado utilizando las opciones “Verify Code y Verify Data”. se realiza una verificación normalmente del programa contenido en el microcontrolador. La opción se puede desmarcar en forma individual referida a las áreas de programación en forma independiente.Program El botón “program” se utiliza para cargar el archivo *. se selecciona el puerto de comunicaciones a utilizar por el programa MicroCode Loader y es donde físicamente estará conectado el microcontrolador PIC®. Es importante seleccionar correctamente el puerto serial a utilizar. ya sea la memoria de programa “Verify Code When Programming” ó en la Eeprom “Verify Data When Programming”. Loader Information Muestra la información acerca de la versión del “firmware” ó “bootloader” utilizado. Sistema de desarrollo para microcontroladores PIC®. Read Al presionar el botón de leer. la verificación asegura que tanto los datos contenidos en la memoria de programa como en la Eeprom se cargaron correctamente. Se puede eliminar la opción de verificación desmarcando esta opción en el menú del programa. Run User Code El botón de “Run User Code” al ser presionado. Cuando se programa el microcontrolador. En este caso mostrará PIC16F876. “Program Code”. Erase Al presionar el botón de borrar (Erase) se borrará toda la información contenida en el microcontrolador PIC. al mismo tiempo. tales son: • • • • • “Verify After Programming”. cargar el archivo antes de programar. el programa MicroCode Loader leerá tanto la memoria de programación como los registros de la Eeprom del microcontrolador utilizado. si esto no se realiza el programa MicroCode loader presentará en mensaje de error. Como referencia puede ve la figuras 2. “Program Data”.hex en el microcontrolador. El puerto de conexión serial a utilizar debe coincidir con el que previamente se seleccionó para la conexión del sistema iBOARD III. iBOARD III. Si la verificación es correcta ambos códigos deberán coincidir.4 de este manual.

5. Fuente: Tomado de la páginas web de los fabricantes. MBASIC®. Familia de microcontroladores fabricados por Microchip™. de muy bajo costo y tamaño reducido.2. Compiladores más utilizados en la actualidad. aplicaciones militares y almacenamiento masivo de datos. iBOARD III. máquinas y herramientas y en las áreas de la instrumentación digital entre otras. La casa microchip™ fábrica las series PIC24xx y los dsPIC33xxx.microchips. Se dedican a proyectos muy avanzados. “asembler” Lenguaje C. Sistema de desarrollo para microcontroladores PIC®. Aplicaciones típicas: inteligencia artificial. PBASIC® PASCAL JAVA Figura 5.2. • • • • • • • • • • • • • • • Es un sistema digital cerrado RAM de poca capacidad interna (bytes ó Kb) Memoria de programa pequeña (algunos Kb) No se requiere de decodificadores de E/S o de memoria Velocidad de operación de algunos MIPS Orientados a operaciones de E/S Costo de desarrollo e implementación reducido Muy fáciles y sencillos de utilizar Circuitos simples y tendencia a la modularidad Por lo general dan cabida a un sólo programa y el soporte de tareas múltiples (de existir). Algunas características similares a un microprocesador. C++ Basic®. gran diversidad y versatilidad. Los PIC® son los microcontroladores de 8 bits más usados por el mercado mundial. Microcontroladores de 16 bits: Prestaciones superiores a los microcontroladores de 8 bits. con más de 2000 millones de unidades vendidas/año. Se fabrican en grandes volúmenes y sus aplicaciones típicas: pequeños automatismos y juguetería Microcontroladores de 8 bits: Son los más utilizados en la actualidad.CAPÍTULO 5 EL MICROCONTROLADOR PIC Es un chip (Circuito integrado) que contiene un computador completo junto a diversos recursos auxiliares con prestaciones y capacidades limitadas. Se aplican típicamente en el procesamiento digital de señales. Clasificación de los microcontroladores según el bus de datos (bits) Microcontroladores de 4 bits: Son los más sencillos en todos los aspectos técnicos y prestaciones asociadas.1. Microcontroladores de 32 bits: Mas complejos y costosos. es limitado Dos o tres modos de direccionamiento Casi todos son RISC Tiempo de aprendizaje/desarrollo reducido Para el Año 2002 se habían vendido 49.1. de muy bajo costo. Se aplican generalmente en todos los automatismos modernos y sistemas simples de control. Lenguajes de programación más utilizados con los microcontroladores • • • • • Ensamblador. electrodomésticos. 16 . Fuente: Tomado del “site” del fabricante www. En el año 2008 la empresa Microchip™ fue líder mundial en Ventas 5.com Figura 5.000 Millones de piezas.

sean efectivamente almacenados en dicho microcontrolador. PicAXE®. no necesitará pagar por éste firmware. Fuente: Tomado de www. Así. sin costo adicional. fue inicialmente preprogramado con un firmware. VB6®. permite que tanto el código del programa de usuario como el valor de los registros en EEprom transmitidos al microcontrolador desde un puerto de comunicación serial y/o USB. indirecto y relativo • Power-on Reset (POR) • Power-up Timer (PWRT) • Oscillator Start-up Timer (OST) • Watchdog Timer (WDT) con oscilador interno RC • Protección de código programable medio código o completo • Modo SLEEP para ahorro de energía • Fuente de reloj seleccionada por software • Programación en circuito “In-Circuit Serial Programming (ICSP)” • In-Circuit Debugging utilizando dos pines de conexión • Acceso a la memoria de programa desde el procesador en tiempo de ejecución para una lectura y/o escritura de datos • Voltaje de operación desde 2. si usted llegara a cambiar el PIC16F876 que viene incluido en la unidad por otro virgen. El PIC16F876 que viene incluido en el sistema iBOARD III.8. a estos microcontroladores inicialmente hay que cargarles un pequeño código de programa denominado “boot loader”. Delphi® y Java™. BASICX®. el fabricante recomienda utilizar los programadores de la casa matriz tanto por puerto serial iP3 ó iP3B como por puerto USB como el iPROG18. de este manual. sin embargo. Para realizar ésta actividad. cargar sus programas infinitas veces sin necesidad de que tenga que comprar un costoso programador. le permite a usted. Basic® Micro ATOM®. el cual. Visual Studio.5V • Capacidad de drenar/sumir corriente de 25 mA (FAN OUT/FAN IN) • Consumo de energía: < 2 mA @ 5V. utilizar un interfaz gráfico denominado UART/SCOPE y un servidor de datos OPC™ herramienta de avanzada prestaciones que le permitirá realizar intercambio de información entre el microcontrolador PIC® y cualquier programa con capacidad de comunicación OPC™. Actualmente el fabricante está desarrollando una completa plataforma de programación denominada iLOADER. compiladores. El usuario compra al fabricante el microcontrolador con el firmware “boot loador” precargado y el fabricante le permite utilizar a cambio. los microcontroladores PIC16F87x(A) y PIC18Fxxx(x) pueden escribir su propia memoria de programa (Flash) sin necesidad de utilizar un programador externo. toda la plataforma de hardware y software desarrollada para este microcontrolador.5. la cual. es que el fabricante entrega.3”. Características Principales del PIC 16F876 Como se explicó en la sección 4. 17 .4.3. rutinas gráficas y de comunicación serial entre otras. Microcontroladores “Boot Loaders” 5.0V to 5.NET™.3. 32 kHz < 1 uA en modo de reposo (sleep) Figura 5. necesitará un programador para PIC® a fin de que pueda programar inicialmente el firmware “boot loador” al nuevo PIC®. El iBOARD III. Por otra parte. todos los programas actuales y futuros que realice el fabricante estarán disponibles sin costo adicional para ser utilizados sin limitaciones por el iBOARD III. Existen en el mercado actual diferentes fabricantes de Microcontroladores “Boot Loader” como: Parallax™. Entre los programas generalmente disponibles por el fabricante se encuentran: editores de texto. iBOARD III. escribir y verificar sus programas en el microcontrolador. el cual. tales como: Excel®. Una ventaja de la iBOARD III. también utiliza un microcontrolador tipo “boot loador”.com Sistema de desarrollo para microcontroladores PIC®. leer. el código “boot loador” para el PIC16F876 utilizado. sin embargo. Fotografía del PIC16F876 28 pines Dip 0. le permitirá además de programar.microchip. 4 MHz 20 uA @ 3V. esto es sin duda una “ventaja”. Básicamente un microcontrolador “boot loador” constituye un contrato de servicio entre el fabricante y el usuario. • Procesador RISC de sólo 35 instrucciones • Toda las instrucciones tienen la misma duración (1 ciclo) salvo los saltos que demoran dos ciclos 1 ciclo = 4 pulsos reloj • Velocidad de operación máxima 20 MHz • Hasta 8K x 14 words de FLASH Program Memory • Hasta 368 x 8 bytes de Data Memory (RAM) • Hasta 256 x 8 bytes de EEPROM para datos • 14 fuentes de interrupción seleccionables en forma independiente • Stack de ocho niveles • Tres modos de direccionamiento: Directo.

sin embargo. Sistema de desarrollo para microcontroladores PIC®.4. En el bloque de memoria. Arquitectura de un microcontrolador PIC®. el CPU es el encargado de inicializarlos y de acceder a su lógica y valores internos mediante la lectura y/o escritura de sus registros.mikroe.5. absolutamente todo lo que queremos que el microcontrolador haga. se realiza a través de la modificación de los registros internos SFR. 18 .. D y E. Anatomía de un microcontrolador PIC® En la figura 5. los cuales.4. iBOARD III. T1 y T2 Convertidor analógico a digital (ADC) Módulo de captura y comparación (CCP) Módulo de PWM Módulo de comunicación serial SPI. el cual. I2C y UART Figura 5. lo que significa. B.4. como se indicó anteriormente. se encuentran representados en el bloque de memoria SFR. se encuentra un sub-bloque denominado SFR.5. El bloque de alimentación por su parte. Figura 5. estos periféricos son autónomos. Fuente: Tomado de www.. se encarga de suplir la señal de reloj sincrónica al CPU para la ejecución secuencial de las instrucciones contenidas en el bloque de memoria de programa. se encarga de suplir la energía utilizada por el sistema. Dentro de los periféricos de un microcontrolador se encuentran: • • • • • Timers T0. Anatomía de un microcontrolador PIC16F886/887. Los puertos de entrada salida representan los pines de conexión del microcontrolador con el mundo exterior. C.com La entrada – salida entre el microcontrolador y el mundo exterior se realiza a través de los puertos (E/S) en el caso particular del microcontrolador mostrado en la figura 5. representa a los registros internos del microcontrolador. existen cinco puertos denominados PORTA. que no necesitan utilizar ciclos de reloj del CPU para su funcionamiento. Todo. se muestra el diagrama funcional interno de un microcontrolador PIC®. mientras que el bloque de osciladores.5. Fuente: Manual técnico del PC16F876. Básicamente el corazón del microcontrolador lo constituye la unidad central de procesamiento CPU y el bloque de memorias tanto RAM como memoria de programa donde se almacena el código del programa a ejecutar. Internamente el microcontrolador posee periféricos con funciones específicas.

Organización de la memoria de Programa de un microcontrolador PIC16F876. no existirán PIC® de la serie 16F que puedan tener una memoria de programa superior a 213 = 8192 Bytes. La primera dirección de la memoria FLASH (0000h). se hará referencia a la arquitectura del mismo mostrada en la Figura 5. En el PIC16F876 el bus de código tiene una longitud de 14 bits máximo. Tiene asociado un “Stack” o pila que funciona en forma automática. Está dividida en páginas (bloques) de 2K cada uno. el contador de programa que direcciona a la memoria de programación es de tan sólo 13 bits. un bus es un canal de comunicaciones que puede tener muchas líneas. Fuente: Manual técnico del PC16F876®. El bus de datos por su parte. Todos los periféricos se conectan al CPU sólo a través del bus de datos. El espacio entre la dirección 0005h y 1FFFh está disponible para los códigos del programa. Organización de la memoria de programación del PIC16F876 La Memoria FLASH es donde se almacena el programa de aplicación del microcontrolador y tiene las siguientes características: Memoria Flash • • • • • • • Posee una capacidad de 8K palabras de 14 bits cada una. 19 . supone una independencia entre el bus de código y el bus de datos. sin embargo. lo cual. La siguiente dirección disponible la (0004h) la ocupa el vector de interrupciones. El PIC16F876 posee una arquitectura tipo HARVARD. Ahora bién.5. Se direcciona a través del “Program Counter” PC. razón por la cual. Arquitectura del PIC16F876 A fin de poder entender en forma rápida el funcionamiento del PIC®.6. el cual. no hay instrucciones disponibles para guardar o sacar información del Stack.6. iBOARD III. en nuestro caso hablamos de una línea por bits.5. ya que ambos se utilizan como medios de interconexión.7. 5. es siempre de 8 bits (al menos en los PIC 16Fxx) y es el bus representado en color rojo en la Figura 5. Se podría hacer una analogía eléctrica entre un bus y un cable. tiene ocho niveles de profundidad.5. Figura 5. Sistema de desarrollo para microcontroladores PIC®. la ocupa el vector de RESET.

los cuales se denominan <RP1><RP0>. manejo de los periféricos. Para seleccionar el banco que se desee acceder de la RAM. se emplean los Bits No. iBOARD III. E/S y registros de propósito general. 6 y 5 del Registro de Estatus. Importante. Fuente: Manual técnico del PC16F876. los cuales.7. Figura 5. Al mismo tiempo. En la RAM se alojan todos los registros destinados al funcionamiento del procesador. cualquier cosa que el usuario desee hacer sobre el microcontrolador tendrá que hacerlo leyendo o escribiendo en estos registros. Sistema de desarrollo para microcontroladores PIC®. como se ha mencionado anteriormente: TODO lo que se realiza en el microcontrolador. todo sin excepción queda reflejado en estos registros.5. La selección del banco se realiza según el código siguiente: Cada bloque de memoria RAM posee una longitud fija de 128 registros de 8 bits cada uno. Memoria RAM La Memoria RAM costa de cuatro bancos con 128 bytes cada uno. 20 . Organización de la memoria de datos del PIC16F876 La Memoria de datos utiliza registros implementados en la RAM. En cada ciclo de ejecución estos registros se actualizan de esta forma el usuario puede consultar en cada momento cual es el valor de los mismos. Todos los registros especiales y periféricos tienen una localidad específica e invariable dentro de la memoria RAM.8. Representación de los cuatro bloques de la memoria RAM. pueden ser utilizados por el programador como memoria de uso general. cada bloque contiene los registros SFR y existe un espacio de propósito general disponible al usuario de 384 Bytes.

Z: Señalización de cero (0) DC: Acarrero y débito del 4to. • • • • • • ALU: Referido a operaciones aritméticas y lógicas. 83h. 103h y 183h).5. iBOARD III. Sistema de desarrollo para microcontroladores PIC®. Figura 5. Los bits 6 y 5 del registro de status pueden tener la codificación mostrada en la siguiente tabla.8. 21 . Es el registro más utilizado de todos y sus bits están destinados a controlar las funciones esenciales del microcontrolador. Fuente: Manual técnico del PC16F876. se utilizan para seleccionar el banco de memoria al cual se quiere acceder. por ello. del RESET y los bits de selección <RP1><RP0> de los bancos de memoria.9. se encuentra ubicado en las cuartas posiciones de cada banco de memoria.com Contiene los bits de status de la ALU (Unidad Aritmética y Lógica). Descripción de los bits independientes del registro de estatus.mikroe. (03h. Bit C: Acarreo y débito del 8vo. El registro de Estatus Fuente: Fuente: Tomado de www. bit RESET: Referido al tipo de re-inicialización BANCOS MEMORIA: Los últimos tres bits del registro de Status de mayor peso.

Figura 5. Bit2 al Bit0: Selecciona la magnitud del pre-escalador. Por ejemplo: Bit 7. Bit 3. T0CS: Selecciona la fuente de reloj para el TMR0 (interna y/o externa). 22 .9. como su nombre lo indica.mikroe. éste registro permite seleccionar una serie de opciones disponibles para la configuración del hardware en el microcontrolador PIC®. Registros de opciones de un PIC16F876. iBOARD III. Es un registro de 8 bits y cada bit controla una función en el microcontrolador. Bit 4. PSA: Selecciona si el pre-escalador será aplicado al TMR0 o al WDT. Bit 5. El registro de Opciones Es uno de los registros más utilizados. Bit 6.5.10. T0SE: Selecciona el flanco para el incremento del TMR0.com Sistema de desarrollo para microcontroladores PIC®. Fuente: Tomado de www. INTEDG: Selecciona el flanco para la ocurrencia de una interrupción. RBPU: Habilita o no las resistencias de pull_up internas del puerto B del microcontrolador.

se guardará el valor del program counter PC en el Stack o pila y se cargará el “PC” con el valor 0004h. 8Bh. Se continúa con la ejecución normal del programa antes de la interrupción. 23 . 7. Fuente: Tomado de www. cambios de estado en el puerto B e interrupciones externas por el pin RB0/EXT. Se encuentra duplicado en los cuatro bancos de memoria. Figura 5. 6. Se carga en el “Program Counter” la dirección de la rutina de interrupción.mikroe. 4. se desencadenan los siguientes eventos: 1. Fuente: Fuente: Tomado de www.5.com Figura 5.11. Se para la secuencia de ejecución regular del programa.11.com INTERRUPCIÓN: Ante una interrupción. contiene varios bits de habilitación y bandera para el TMR0. iBOARD III. Fuente: Manual técnico del PC16F876. Se ejecuta la rutina de interrupción y se disminuye en un nivel el contenido del stack Se carga de nuevo en el “Program Counter” el valor de retorno guardado anteriormente en el stack. ocupando las direcciones: 0Bh. El registro de Interrupciones INTCON: Es un registro de lectura y escritura. La mayoría de los periféricos incluidos en el microcontrolador son capaces de interrumpir al CPU. 2. el cual.mikroe. 5. Función de los bits independientes del registro de interrupciones. 10Bh y 18Bh. Sistema de desarrollo para microcontroladores PIC®. El microcontrolador termina de ejecutar la instrucción en curso (actual). cuando ello ocurre. El contenido del “Program Counter” se almacena en el stack. 3.10. que es el vector de interrupción. Eventos desencadenados ante la ocurrencia de una interrupción.

Diferentes fuentes de interrupciones para el PIC16F886/887.5. iBOARD III.com Sistema de desarrollo para microcontroladores PIC®. 24 .mikroe.12. Fuente: Fuente: Tomado de www.12. Interrupciones en el microcontrolador PIC16F887 Figura 5.

es decir. esta puede ser analógica o discreta. enseñándole a trabajar con entradas y salidas digitales por medio de los periféricos más utilizados en aplicaciones basadas en microcontroladores. 25 .5.B y C) todas las líneas de estos puertos realizan diversas funciones según estén programadas. Representación gráfica de una señal analógica y digitales. todas ellos tienen la capacidad de trabajar como entradas/salidas binarias.13. El microcontrolador PIC16F876 es capaz de interpretar ambas. sin embargo. Señal analógica Es aquella señal que puede tomar infinitos valores posibles entre dos límites. se denominan continuas. Señal digital Es aquella señal que puede tomar un número finito de valores entre dos límites. Sistema de desarrollo para microcontroladores PIC®. binarias. Figura 5. Entrada – Salida Digital Introducción. un microcontrolador necesita de un conjunto de periféricos que sean capaces de traducir un evento en una señal eléctrica de niveles lógicos entendibles. De acuerdo a la naturaleza de una señal.13. por lo cual. Este tema muestra algunos de los componentes más simples del sistema de desarrollo. Los microcontroladores PIC16F876 disponen de tres (03) puertos de entrada/salida (A. iBOARD III. sin embargo. Para intercambiar información con el mundo exterior. el estudio de las señales analógicas se verá más adelante. Si utilizamos lógica booleana será Cero (0) y el Uno (1).

com microcontrolador. Esto se logra asignando al registro TRIS valores diferentes para cada bits.5.5 = 0. TRISC = 0 -> configurará a los puertos A. se tiene que realizar a través de la modificación de los valores de los registros. todos los pines del puerto B tomarán el valor lógico cero. entonces el registro PORTB contendrá el valor lógico de entrada en cada pin del puerto B asociado en cada momento. todos ellos tienen la capacidad de trabajar como entradas/salidas digitales y/o binarias. ellos son como se muestran en la Figura 5. Puertos de Entrada/Salida (E/S): Los microcontroladores PIC16F876 disponen de tres (03) puertos de entrada/salida (A. Si el puerto se configura como una entrada digital. Los bits que conforman al registro PORT son independientes entre si. Cuando el registro PORTB = 0. lo que significa que la tensión de salida en cada pin estará cercana a la tensión de alimentación del microcontrolador. El registro TRIS es el encargado de configurar al puerto como entrada ó salida digital. por ejemplo: TRISA = 0. bit 2 -> como entrada digital Puerto B.14. TRISB <3:0> = 1. El registro PORT.0 = 1. bit 6 -> como salida digital Puerto B. bit 0 -> como entrada digital La nomenclatura utilizada por Microchip™ es: TRISB <7:4> = 0.4 = 0. mientras que la nomenclatura utilizada por el compilador Basic® Proton® es: PORTB = %00001111 para configurar todos los bits del puerto: TRISB.14. Figura 5. todos los pines del puerto B tomarán el valor lógico 1. TRISB. mientras que TRISA = $FF. TRISB. lo cual. por ejemplo TRISB = $FF. TRISB. TRISB = 0. ¿Como podemos tener acceso a estos puertos A. El registro TRIS y el registro PORT. bit 7 -> como salida digital Puerto B. sin embargo. bit 5 -> como salida digital Puerto B. También podemos configurar en forma aleatoria los bits individuales de cada puerto. TRISB.15. bit 1 -> como entrada digital Puerto B. se observan los tres puertos mencionados. Fuente: Fuente: Tomado de www. Figura 5. TRISB.B y C?. existen un Ahora bien.7 = 0.1 = 1. TRISB. B y C como entradas digitales. En el caso específico de la entrada – salida digital.mikroe. bit 3 -> como entrada digital Puerto B. bit 4 -> como salida digital Puerto B. Registros asociados a la entrada – salida digital en un PIC16F876.B y C) todas las líneas de estos puertos realizan diversas funciones según su programación. lo que significa que la tensión de salida en cada pin estará cercana a los cero voltios. En la figura 5. Si por el contrario PORTB = $FF. Puerto B.6 = 0. para configurar los bits individuales del registro TRIS. TRISB = $FF y TRISC = $ FF -> configurará a los puertos A.3 = 1. 26 .B y C como salidas digitales. Puertos de entrada – salida digital de un PIC16F876. Por ejemplo: TRISB = %00001111 configurará al puerto B como: Sistema de desarrollo para microcontroladores PIC®. Todo lo que queremos hacer con el par de registros asociados a cada puerto. iBOARD III. La respuesta ya la hemos dado anteriormente.2 = 1. es el encargado de establecer el valor lógico y eléctrico de salida de cada pin en el puerto del microcontrolador. permite que tengan valores lógicos diferentes en cualquier momento.15. TRISB.14.

es una síntesis de la conexiones entre los LED’s y el puerto C. al mismo tiempo es equivalente a: PORTC<2> = 1 y es equivalente a: PORTC<2> = 0 Figura 5. por ejemplo: “está presionado” “no está presionado” “encendido” “apagado” es equivalente a: PORTA<0> = 1 y es equivalente a: PORTA<0> = 0.bas (Entrada – Salida Digital). se observa que los pulsadores del sistema de desarrollo “S3”.17. que el pulsador “S0” efectivamente está conectado a PORTA<0>. Segundo Paso: Ubicar en que puerto está conectado el pulsador “S0”. “S2”. Se puede deducir de la figura 5. Por ejemplo: Si el pulsador S0 “está presionado” entonces el led L0 deberá estar “encendido” Si el pulsador S0 “no está presionado” entonces el led L0 deberá estar “apagado” Estas variables lingüísticas se pueden asociar a valores del puerto. mientras que cuando el pulsador se presiona (estado activo) el nivel de tensión aplicado a PORTA<0> estará cercano al voltaje de alimentación del microcontrolador 5 Vdc. iBOARD III. Para ello hacemos referencia a la figura 5. Primer Paso: Ubicar en que puerto está conectado el LED L0. 27 . lo que significa que cuando se activa el pulsador. Sistema de desarrollo iBOARd III.18. Conexión de pulsadores del sistema de desarrollo iBOARD III. Para ello hacemos referencia a la figura 1. Sistema de desarrollo para microcontroladores PIC®. Utilizando el sistema de desarrollo iBOARD III.CAP_05_Ejemplo_01. es un voltaje con un nivel lógico alto. el cual. Podemos entonces decir que el LED “L0” esta ubicado en PORTB<2>.18. en serie con una resistencia limitadora de corriente de 220 OHM y un mini switch normalmente abierto (SW1-4). Conexión de LED’s al iBOARD III. Tercer Paso: Crear un algoritmo. Adicionalmente se observa que cuando el pulsador esta en estado inactivo (abierto) el nivel de tensión aplicado a PORTA<0> es cercano a los cero voltios. en la cual. el nivel de tensión obtenido en el punto de conexión al microcontrolador.3. Este tipo de conexión de los pulsadores se denomina Activa Alta. Figura 5.17.16. Efectivamente el LED “L0” está conectado al puerto C bit2.18. Figura 5. desarrolle un programa que permita encender el LED “L0” al presionar el pulsador “S0” .. La figura 5. “S1” y “S0” están conectados al puerto A del microcontrolador PORTA<3:0>. donde se muestra el diagrama de conexiones electrónicas entre los LED’s y los puertos del microcontrolador. previamente tendremos que cerrar para conectar el cátodo del led a tierra y de esta forma cerrar el circuito eléctricamente.

19.bas Ejemplo básico de utilización del sistema iBOARD III Encender el led L0 a L3 al presionar el pulsador S0 al S3 ------------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado ALL_DIGITAL = True ' Define todos los puertos como digitales XTAL = 20 ' Define la velocidad del resonador TRISA.0 como Entrada Digital ' Configura a PORTC.3 PORTC. desarrolle un programa que permita encender los LED “L0” a “L3” cuando se presionan los pulsadores correspondientes “S0” a “S3”.20.bas Ejemplo básico de utilización del sistema iBOARD III Encender el led L0 al presionar el pulsador S0 ------------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado ALL_DIGITAL = True ' Define todos los puertos como digitales XTAL = 20 ' Define la velocidad del resonador TRISA.0 = 1 TRISC.1 PORTA.2 TRISA.2 PORTC.0 DelayMS 100 GoTo Main End ' Configura a PORTA.3 TRISC.3 PORTC. Main: PORTC. Utilizando el sistema de desarrollo iBOARD III.2 = PORTA.4 PORTC. Veamos su codificación: ' ' ' ' CAP_05_Ejemplo_02.2 PORTA.0 PORTA.5 PORTC.5 = = = = = = = = 1 1 1 1 0 0 0 0 = = = = PORTA.bas Sistema de desarrollo para microcontroladores PIC®.0 PORTA.5 el el el el como como como como como como como como valor valor valor valor Entrada Entrada Entrada Entrada Salida Salida Salida Salida de de de de Digital Digital Digital Digital Digital Digital Digital Digital Quinto Paso: Pruebas Operativas.4 TRISC.4 PORTC.0 ' Retardo de 100 ms CAP_05_Ejemplo_02.4 PORTC.Cuarto Paso: Codificación.5 PORTA.1 PORTA.bas Figura 5. Este es una extensión del programa anterior. iBOARD III.2 PORTC.3 DelayMS 100 GoTo Main End End ' Retardo de 100 ms Figura 5.2 PORTC.3 PORTC. Fotografía de la iBOARD III ante la ejecución del programa CAP_05_Ejemplo_02.1 TRISA.3 ' ' ' ' ' ' ' ' ' ' ' ' Configura Configura Configura Configura Configura Configura Configura Configura Asigna Asigna Asigna Asigna a a a a a a a a a a a a PORTA.2 TRISC.0 PORTA.2 PORTA.3 TRISC. 28 . Utilizaremos el Basic® PROTON® para escribir nuestro programa: ' ' ' ' CAP_05_Ejemplo_01.2 de Salida el ' valor de entrada al puerto PORTA.2 como Salida Digital ' Asigna al puerto PORTC.2 = 0 Main: PORTC.3 PORTC. Fotografía de la iBOARD III ante la ejecución del programa CAP_05_Ejemplo_01.bas (Entrada – Salida Digital).1 PORTA.2 PORTA.0 TRISA.

Sintaxis: INPUT pin. COUNTER: Cuenta el número de ciclos (0-1-0) que ocurren en un pin de entrada/salida durante un período de tiempo especificado. Sintaxis: OUTPUT pin. Sintaxis: Variable = COUNTER Pin.21. sólo de un Pin. PULSEOUT: Genera un pulso de una duración especificada en un terminal de E/S. el mismo será convertido en salida. Estado: (0. Sintaxis: PULSOUT Pin. Es equivalente a hacer un TRIS del puerto. 29 .5. constante o expresión que indica cual pin de E/S será utilizado. Variable: Variable que almacena el resultado de la cuenta. Es equivalente a hacer un TRIS del puerto y luego un PORT. Período. se hará el conteo. Nota: Para un resonador de 20 MHz. Figura 5. Estado Inicial Pin: Es una variable ó constante que indica cual pin de E/S será utilizado. Es equivalente a hacer un TRIS del puerto y luego un PORT.B ó C. Comandos en alto nivel para el manejo de puertos de E/S HIGH: Configura el puerto y/o el pin especificado como salida y lo coloca a uno lógico. Figura 5. Estado Pin: Es una variable ó constante que indica cual pin de E/S será utilizado. El rango de PULSIN será entre 1 y 65535. Sistema de desarrollo para microcontroladores PIC®. OUTPUT: Configura el puerto y/o pin especificado como salida. donde pin es cualquier bit de los puertos A. Sintaxis: LOW pin. TOGGLE: Configura el pin especificado como salida y lo cambia de estado lógico. donde pin es cualquier bits de los puertos A. el conteo de PULSIN se realizará en intervalos de 2us. Es equivalente a hacer un TRIS del puerto. donde pin es cualquier bit de los puertos A. Período: Variable.B ó C. Representación gráfica del comando PULSOUT. Variable: Variable que almacena el resultado de la operación.B ó C. donde pin es cualquier bit de los puertos A. LOW: Configura el puerto y/o pin especificado como salida y lo coloca a cero lógico. el mismo será convertido en entrada.22. trenes de pulsos generalmente de onda cuadrada. Pin: Variable. Se utiliza para determinar frecuencias de señales. donde pin es cualquier bit de los puertos A. INPUT: Configura el puerto y/o pin especificado como entrada. constante o expresión de (4 – 65535) us que especifica la cantidad de tiempo en micro-segundos que durará el pulso. iBOARD III. constante o expresión de (0-65535)ms que especifica el tiempo durante el cual. Representación gráfica del comando COUNT.B ó C.1) (Low/High) es el flanco requerido para empezar la cuenta. Sintaxis: TOGGLE pin. No se acepta Toggle de un puerto completo.B ó C. Período PULSIN: Mide el ancho de un pulso presente en un pin y su valor en tiempo lo almacena en una variable: Sintaxis: Variable = PULSIN Pin. el mismo será convertido en entrada.15. Período: Es una variable. Sintaxis: HIGH pin.

usando un algoritmo de modulación de ancho de pulso.. Cuando se desee utilizar este comando. Sintaxis: Variable = RCIN Pin. constante o expresión de 0 a 32767. 4 constantes de tiempo = (4xRxC) seg. aprox. Este será configurado como salida.1). constante o expresión de 0 a 32767. se estará descargando a través de la resistencia. el RCIN. Esta conexión se puede visualizar a través de la figura 5. Período. Freq1: Variable. en el cual. Duración] Figura 5.23. Pin2. Pin: Es una variable ó constante que indica cual pin de E/S será utilizado. Figura 5.16000) Hz. Freq1 {. el cual.. 30 . RCIN retornará un valor que será almacenado por la variable . configurará al pin seleccionado como una entrada y medirá el voltaje del condensador sobre el pin.127) el (0) equivale a silencio. Sintaxis: FREQOUT Pin. El tiempo en que demora el pin de pasar de un estado lógico (1) al estado lógico (0) se almacenará en la variable resultado.23. se comienza a incrementar un contador. iBOARD III. constante o expresión de 8 bits que especifica la duración de la nota en intervalos de 10ms. con la utilización de un pequeño filtro pasa bajo usted podrá general ondas sinusoidales por cualquier pin de E/S. así conociendo este tiempo podemos decir: RCIN (units) = 600 x R (Kohm) x C (uF) Sistema de desarrollo para microcontroladores PIC®. (2) Esperar suficiente tiempo para que el condensador se cargue. puede ser utilizado para medir el valor de resistencias y/o condensadores. Estado Los tonos son generados en forma matemática a través de la modulación del ancho de pulso sinusoidal que veremos más adelante.255) se obtendrá ruido blanco. Estado: Es una variable ó constante de 1 bit (0 ó 1) que especifica el estado en el cual terminará el período de tiempo. constante o expresión de 16 bits que especifica la duración de la nota en intervalos de 1ms. Duración: Variable. ocurrió el cambio de estado de nivel del pin especificado. estos se mezclaran a través del pin especificado. Un uso muy común es leer el valor de un potenciómetro resistivo. Pin1. [Nota1\ Nota\ Duración] Pin: Variable.Freq2} SOUND2: Genera uno ó dos tonos por los pines seleccionados. Variable: Es una variable que almacena el tiempo en micro segundos. para de esta forma. El contador se parará tan pronto el estado del pin cambie de valor con respecto al valor especificado (0. Pin: Variable. En caso de ser dos tonos.. RCIN: Se utiliza generalmente para medir períodos de tiempos muy cortos como la carga / descarga de un circuito RC a través de un pin de E/S. constante o expresión que especifica el pin de E/S usado. (1) Equivale a 78 Hz y el (127) Equivale a 10KHz y entre (128. Resolución para 20 MHz igual a 2us. Especifica la frecuencia en Hz del segundo tono generado. [Nota. El cual.2: Una variable o constante que especifica su valor en Hz en el rango de (0. Esquema de conexiones de un filtro pasa bajos utilizado por el comando FREQOUT para la generación de ondas sinusoidales. Nota1. Freq2: Variable. Nota: Un valor de 8 Bits (0. SOUND: Genera uno tono o ruido blanco por el pin seleccionado.2: Variable.FREQOUT: Genera uno o dos tonos sinusoidales de un periodo de tiempo específico. es más completa que la instrucción sound. sin embargo. constante o expresión que especifica los pines de E/S. Estos serán configurados como salida. se deberán realizar las siguientes acciones: (1) Colocar el pin de E/S como salida y con un nivel lógico alto. Cuando RCIN se ejecuta. generar un único tono. constante o expresión de 0 a 65535. Sintaxis: SOUND2 Pin1. Período: Variable. Este será configurado como salida.24. Especifica la frecuencia en Hz del primer tono generado. nivel lógico cero ó nivel lógico uno. Sintaxis: SOUND Pin. Especifica el periodo de tiempo que dura el tono generado. Esquema de conexiones utilizado con el comando RCIN. Duración: Variable. (3) Ejecutar el comando RCIN. constante o expresión que especifica el pin de E/S usado.

Sistema de desarrollo para microcontroladores PIC®. RESUME: Finalización de la rutina de interrupción. conectado A entre PO TB R <0> y G D N Figura 5. vamos a definir algunos conceptos utilizados con las interrupciones: Fuente de interrupción: Recurso. Este pulsador deberá conectarse entre el pin PORTB<0> y tierra (GND). producir una interrupción. el cual.5. Habilitación de la interrupción: Para que la interrupción pueda ocurrir. devuelve el programa al punto de ejecución previa antes de que ocurriera la interrupción. iBOARD III. el cual. guardar algunas variables. Interrupciones recurrentes: Son aquellas que pueden ocurrir dentro de su propia ISR. tal como es mostrado en la Figura 5. Pulsador N .bas (Interrupción externa por RB0/EXT). El programa principal hará que un LED conectado en PORTC<5> encienda en forma intermitente.26. elemento o dispositivo que está en capacidad de producir una interrupción. de ocurrir.0 que es precisamente el pin de activación de interrupción externa.com Figura 5. mientras que la rutina de interrupción hará que un LED conectado en PORTC<2> encienda y apague cada vez que presione un pulsador externo. ON INTERRUPT Label: Salta la ejecución del programa a la rutina de interrupción especificada por la etiqueta Label. CAP_05_Ejemplo_ 03. Utilizando el sistema de desarrollo iBOARD III. emitir algún tipo de indicación o alarma. etcétera. es hora de desarrollar nuestro primer programa con interrupciones. será colocado en el pin PORTB.16. Comandos en alto nivel para el manejo de Interrupciones ENABLE. Mecanismo de activación ante la ocurrencia de una interrupción.26. 31 . Fotografía de las conexiones necesarias para la colocación del pulsador NA. efectuar una acción de corrección. ya que conocemos las herramientas básicas del manejo de entrada salida digital. Fuente: Tomado de www. DISABLE: Habilita o deshabilita una ó todas las interrupciones. sin embargo. Rutina de interrupción (ISR): Es el segmento de código que se ejecuta al ocurrir la interrupción y que debe observar el manejo de la misma.mikroe. Interrupción: Es el evento ocasionado y que debe ser atendido. Antes de hacer un ejercicio práctico. Por ejemplo. será utilizado como generador de una interrupción externa. conducen a que se quede “colgado” teniendo que producirse un “Reset” para salir de esta condición. Interrupciones anidadas: Dos fuentes de interrupción pueden. No se había hasta ahora hecho un programa que mostrara como trabajan las interrupciones. El microcontrolador PIC no permite este tipo de interrupciones. Sintaxis: • Enable • Disable Estos comandos actuarán sobre la habilitación y/o des-habilitación global del registro INTCON bit <GIE>. Para el montaje electrónico se necesitará de un pulsador normalmente abierto adicional a los que vienen incluidos en el sistema de desarrollo iBOARD III.25. desarrolle un programa que permita utilizar interrupciones en el microcontrolador. hay que asegurarse que la habilitación de la interrupción deseada este activa. de forma simultanea o no.

por RB0 Resume ' Retorna de la interrupción Figura 5.2 ' Asigna el LED L0 al PORTC.mikroe.bas Ejemplo básico de utilización de interrupciones El LED conectado en PORTC<5> parpadeará en forma intermitente. Sistema de desarrollo para microcontroladores PIC®.1 ' Bit Flag Interrupciones por RB0 Symbol PULL = OPTION_REG.4 ' Bit Habilit. Pull_Up Pto.com ' DEFINICIÓN DE CONSTANTES Y SIMBOLOS ' ------------------------------------------------------------------Symbol INTE = INTCON. REGISTRO DE OPCIONES Bit 7.5 Symbol L0 = PORTC. 32 . Interrupciones por RB0 Symbol INTF = INTCON. ------------------------------------------------------------------Device = 16F876 ' Define el Micro a Utilizar ALL_DIGITAL = True ' Configura Puertos como digitales XTAL = 20 ' Define velocidad resonador Fuente: Fuente: Tomado de www. de Pull_UP Pto. Fotografía de la iBOARD III ante la ejecución del programa CAP_05_Ejemplo_03. iBOARD III. ' ------------------------------------------------------------------Main: Toggle L3 ' Hace parpadear el L3 cada 100 ms DelayMS 100 GoTo Main Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción. mientras que el LED conectadoen PORTC<2> cambiará de estado cuando se presiona el pulsador que está colocado en PORTB<0>.7 ' Bit Habilit. B INTE = 1 ' Habilita la Interrupción por RB0 ' PROGRAMA PRINCIPAL. Resist.2 ' DEFINICIÓN DEL MANEJADOR DE INTERRUPCIONES ' ------------------------------------------------------------------On Interrupt GoTo SUB_INT ' Cuando ocurre una interrupción va a la ' subrrutina "SUB_INT" PULL = 0 ' Habilita las resist. OPTION<7> ' RUTINA DE INTERRUPCIÓN ' ------------------------------------------------------------------SUB_INT: Toggle L0 ' Cambia el estado del LED L0 INTF = 0 ' Limpia el Flag de Interrup.27.REGISTRO DE INTERRUPCIONES: INTCON ' ' ' ' ' ' CAP_05_Ejemplo_03.5 ' Asigna el LED L3 al PORTC. bas (Interrupciones). B Symbol L3 = PORTC.

.D._ 10.D..CAP_05_Ejemplo_ 04 (Comando SOUND)..20.70...10.70.E..20..10.80. [LOOP.0..50.90._ 20.20. Freq1 .63.0.60._ 60.80.8 FreqOut PIN ....G.20.. .E.30. Fotografía de la iBOARD III ante la ejecución del programa CAP_05_Ejemplo_04.87.80.0.3 ' Define el Micro a Utilizar ' Configura Puertos como digitales ' Define velocidad resonador ' Declaración de variable LOOP ' Declaración de variable Frecuencia 1 ' declaración de variable Frecuencia 2 ' ' ' ' ' ' frecuencia nota musical C frecuencia nota musical D frecuencia nota musical E frecuencia nota musical G Pausa .0.20] LOOP = 0 Repeat Freq1 = LookUpL LOOP .D..80..70.20.51.20.63.0.83.90.77.92...92.96.0. 225 .96.0..E..60.120.30.10. [50.85..28.87.R. Es necesario colocar un buzzer piezoeléctrico .. Se escuchará a través del buzzer Un extracto de la canción: Star Trek The Next Generation..entre el pin PORTB<3> y tierra a través de una resistencia de 220 ohm en serie con el buzzer ._ 90.C..63.70.E.D._ E. [E. Sistema de desarrollo para microcontroladores PIC®.120..77.G.D.20.E..96.3 -----/\/\/\-----(Buz)---+ | GND ------------------------+ Device = 16F876 ALL_DIGITAL = True XTAL = 20 Dim LOOP As Byte Dim Freq1 As Word Dim Freq2 As Word Symbol Symbol Symbol Symbol Symbol Symbol C = D = E = G = R = PIN 2092 2348 2636 3136 0 = PORTB..R.40.10.E.E..10.0.96..20.63...0..85.D..160] DelayMS 500 For LOOP = 128 To 255 ' Ruido blanco ascendente Sound PIN.20._ 10.85.10.20.0.2] Next Sound PIN.40. iBOARD III.R..D. [43.60.C. ' ' ' ' ' ' ' ' ' ' CAP_05_Ejemplo_04.85.10.63. 33 .30..bas Comando Sound....20._ 90..10.10.D.D.20.96..10.C] If Freq1 = 0 Then Freq2 = 0 : Else Freq2 = Freq1 .Silencio Pin de conexión al Buzzer THEME: Sound PIN...D.bas Ejemplo básico de utilización del comando SOUND...10.E.20. Freq2 Inc LOOP Until LOOP > 28 DelayMS 5000 GoTo THEME Figura 5. 220 PORTB..60._ 10. Star Trek The Next Generation .E.90.98.71..20.140.

En la figura 6.CAPÍTULO 6 CONVERSIÓN ANALÓGICA A DIGITAL Introducción. dos diodos de “clamping” generalmente de alta velocidad limitan la tensión máxima de entrada a 5. La tensión de referencia determina los límites máximo y mínimo de la tensión analógica que se puede convertir.5 ua. Configura los Pines de E/S del conversor A/D. Por ejemplo: a la entrada del pin de conversión A/D la capacitancia equivalente es de 5Pf. se aplica la señal analógica a un condensador de captura y mantenimiento (sample and hold) y luego se introduce al conversor. el ADCON0 y el ADCON1. 33 . Sistema de desarrollo para microcontroladores PIC®.5 VDC introduciendo pequeñas deformaciones no lineales en la señal de entrada.024 = Vref /1. Controla la operación del conversor A/D. El voltaje diferencial mínimo es de 2 V. Registros asociados al conversor A/D • • • • ADRESH : ADRESL : ADCON0 : ADCON1 : Registro alto del resultado de la conversión A/D. Como se explicó en capítulos anteriores. DC ó AC+DC pero de tensión sólo positiva. La respuesta siempre será la misma. Esquema electrónico equivalente de la entrada de un canal del convertidor A/D del PIC16F876. el canal tiene una corriente de fuga de aprox. si se desea realizar una conversión analógica digital por un puerto del microcontrolador (generalmente el puerto A en los PIC) ¿Cómo hacerlo?. Se observa que a través del canal de entrada seleccionado. a la entrada analógica de 0V le corresponde un valor digital de 00 0000 0000 y para la de 5V un valor digital igual a 11 1111 1111. La señal de entrada es muestreada por la unidad de muestreo y retención a una velocidad que varía dependiendo de ajustes proporcionados por el usuario.1.1. Básicamente la idea de la conversión analógica – digital es la digitalizar una señal de entrada al pin del microcontrolador. en este caso.mikroe. A través de la configuración de los registros internos del microcontrolador. proporciona un resultado digital de 10 bits. Figura 6.1. La conversión A/D se realiza por el método de aproximaciones sucesivas.8 mV/bit. se muestra el esquema electrónico equivalente a la entrada de un canal del convertidor A/D del PIC16F876.es tierra. el convertidor A/D no tiene la capacidad de convertir señales de valor negativa. Los microcontroladores PIC16F876 poseen un conversor A/D de 10 bits de resolución y 5 canales de entrada (puerto A). La impedancia de entrada de un canal del convertidor aprox. el cual. la señal puede ser AC. Registro bajo del resultado del la conversión A/D. por lo tanto. iBOARD III. Fuente: Fuente: Tomado de www. con una externa que se introduce a través de los pines RA3/AN3/Vref+ y /o RA2/AN2/Vref6. ya que. La tensión de referencia puede implementarse con la tensión interna de alimentación VDD. de acuerdo con la siguiente fórmula: Resolución = (Vref+ . Sin embargo el proceso conlleva a que la señal de entrada sufra una serie de modificaciones producto de la impedancia de entrada propia del convertidor.Vref-) /1.com Son dos los registros más importantes involucrados en la conversión A/D. La resolución que tiene cada bit procedente de la conversión tiene un valor que es función de la tensión de referencia Vref. al mismo tiempo. 0.024 Si la Vref+ = 5 VDC y la Vref. o bien. el ADCON0 y el ADCON1. de 10 KOhm y al mismo tiempo. la resolución es de 4. Esta señal es muestreada y convertida a un valor digital equivalente.

iBOARD III. atenuación.3.2. el autor ha publicado en Internet tópicos relacionados a la instrumentación virtual donde si se explica en forma detallada tópicos avanzados de la conversión A/D. 6. Fuente: Manual técnico del PC16F876.Existen limitaciones teóricas y prácticas en cuanto a la máxima frecuencia de conversión de la señal. El Registro ADCON0 (detalle de sus bits) 6. Figura 6. rápida variación en el tiempo y ruido.3. Descripción de los bits que conforman el registro ADCON0 del convertidor A/D del PIC16F876.rosocontrol. El Registro ADCON1 (detalle de sus bits) Figura 6. No serán temas que se aborden en este manual.2.com. Puede consultar esta información en: www. en el tab relacionado a las clases impartidas sobre instrumentación virtual. Fuente: Manual técnico del PC16F876. sin embargo. Sistema de desarrollo para microcontroladores PIC®. 34 . Descripción de los bits que conforman el registro ADCON1 del convertidor A/D del PIC16F876.

6 us.6.. El reloj para la conversión A/D se puede seleccionar a través del registro ADCON0 <7:6>.6. del resonador. se muestra la representación gráfica de las acciones que se realizan en base a la configuración de los registros utilizados para la conversión A/D.En la figura 6. Figura 6.mikroe. El conversor A/D requiere un mínimo de (12 ٠TAD) para una conversión de 10 bits.5.4. lo que equivale a 1. el resultado de la conversión A/D estará presente en los registros ADRESH y ADRESL. iBOARD III. Como de aprecia en la Figura 6. Proceso de conversión A/D en base a aproximaciones sucesivas. los tiempos de conversión necesarios para la obtención del resultado final. Luego arranca el proceso de conversión por aproximaciones sucesivas. Una vez transcurridos los 12 TAD. La figura representa la lógica de funcionamiento de un PIC16F887 en vez de un PIC16F876. sin embargo. Reloj para la conversión A/D El tiempo de conversión A/D se define en unidades de TAD. son en total 12 TAD. allí se espera un primer TAD hasta que se desconecte el capacitor de “Hold” de la entrada analógica. estos microcontroladores comparten más de un 95% de características comunes. Sistema de desarrollo para microcontroladores PIC®.4. Figura 6. Diagrama funcional para el módulo de conversión A/D de un PIC16F887. se consume un próximo TAD que no producirá resultados en la conversión y luego los 10 TAD necesarios para la digitalización de la señal. Diferentes valores de conversión A/D en base a la Freq. 35 . La conversión A/D se realiza por el método de aproximaciones sucesivas.com 6. Figura 6. Fuente: Manual técnico del PC16F876.4. Fuente: Fuente: Tomado de www. La conversión analógica – digital comienza con la activación del bit de “GO” del registro ADCON0.

Otros ajustes necesarios por el convertidor A/D. Si el voltaje de referencia aplicado al pin es de 2. ADCON0. la selección del reloj para la conversión sea (RC). 10. Registros asociados a la conversión A/D y al puerto de entrada – salida A. Sintaxis: variable = ADIN canal Figura 6. 36 . Después de cada conversión de deberá esperar un mínimo de tiempo equivalente a 2 ٠TAD.5 VDC. ADRESL: Registros donde se almacena el valor de la conversión A/D. durante este tiempo el condensador interno de “Hold” no estará conectado a la fuente analógica de entrada. valor por defecto = 64_FOSC.3) que estable el pin analógico para uso como entrada al conversor. PORTA: Como Salida. Registro que almacena el valor de entrada al puerto A. ADRESH. Tiempo para la carga y descarga del capacitor de HOLD.7. PEIE bit de habilitación de las interrupciones de los periféricos. siempre deberá ser aplicado sobre el pin AN3. ADCN1: Registros de configuración general asociados a la conversión A/D. ADIF bandera de ocurrencia de una interrupción por conversión A/D. 8_FOSC. AN2 y AN3. La máxima impedancia de entrada recomendada de la fuente analógica. 32_FOSC … 2_FOSC: 8_FOSC: 32_FOSC: 64_FOSC: rápido (oscilador/2) medio (oscilador/8) lento (oscilador/32) basado en el oscilador interno. convierte un voltaje (0 a 5 Vdc) aplicado a un pin. 4. La resolución de la conversión es de 10 bits.. Resumen de Registros asociados a la conversión A/D 3. El comando ADIN. Sistema de desarrollo para microcontroladores PIC®. 65535) ms. se obtendrá el doble de resolución para el mismo conteo de (0 a 1023). TRISA: Registro de configuración del puerto A como entrada ó salida digital. en ese momento todos los pines del puerto A serán configurados como entradas analógicas. El rango permitido de voltajes de referencia deberá estar entre (1 y 5) Vdc. Bits de resolución. PIR1: Registro asociado a las interrupciones. Como Entrada. valor por defecto = 10 DECLARE ADIN_STIME (0 . el conversor A/D se apagará y la conversión será abortada. INTCON: Registro asociado a las interrupciones. DECLARE ADIN_RES 8. 6. 12.6. Valor por defecto = 50 Nota: El voltaje máximo sobre cualquier pin del PIC® no deberá exceder nunca los 5 Vdc. Fuente: Manual técnico del PC16F876. siempre y cuando. Registro que configura el valor lógico de los pines del puerto A. Se pueden realizar conversiones A/D a pesar de que el PIC este en modo “SLEEP”. La entrada puede ser en todo momento escalada si se utiliza un voltaje de referencia externo Vref sobre el pin AN3. 6. se realizan a través de las declaraciones: DECLARE ADIN_TAD 2_FOSC. a fin de no afectar la exactitud de la conversión.. GIE bit de habilitación de las interrupciones globales.6. el cual. son: AN0.5. iBOARD III. Si sobre el microcontrolador se realiza una operación de ¨RESET¨. 2.6. PIE1: Registro asociado a las interrupciones. Existen cuatro pines de entrada analógica. Otras Consideraciones importantes al realizar una conversión A/D 1. en un valor digital entre (0 y 1023) aplicado a una variable. ADIE bit de habilitación de la interrupción por conversión A/D. AN1. no deberá ser mayor de 10 KΩ. Canal: variable o constante (0. Comandos en alto nivel para la conversión A/D ADIN: Inicia la conversión analógica/digital por hardware y almacena el resultado de la conversión en una variable.

Sistema de desarrollo para microcontroladores PIC®.. A/D = ".7.9. Este último es una utilidad del compilador que permite visualizar datos enviados desde el microcontrolador. Luego seleccione la velocidad de conexión del puerto de comunicaciones a 2400 BAUD. esto se muestra en la Figura 6. Analógica Variable de uso general Configura la resolución en 10 bits Configura la velocidad de conversión Configura el tiempo de carga capacitor de hold del convertidor A/D Figura 6. Por ahora. ' Envía la variable valor a través del puerto serial para que ' pueda ser visualizada por el IDE Serial comunicator.bas a través del IDE Serial Comunicator. deberá seleccionar del menú del compilador: View/Plugin tal como se muestra en la Figura 6.bas ' Ejemplo básico de utilización del convertidor A/D ' -----------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado XTAL = 20 ' Define la velocidad del resonador TRISA = $FF ADCON1 = $80 Dim Valor As Word Declare ADIN_RES 10 Declare ADIN_TAD 8_FOSC Declare ADIN_STIME 50 Main: Valor = ADIn 0 ' ' ' ' ' ' ' Configura PORTA como Entradas Configura PORTA<0> como ent.9. Dec Valor. 37 . Codificación del ejemplo básico de utilización del convertidor A/D.. Deberá aparecer el resultado de la conversión A/D como se muestra en la Figura 6. y presione sobre el icono conectar. <. iBOARD III. realice la conversión A/D utilizando el canal 0 del convertidor (PORTA<0>) y el resultado muéstrelo en el IDE Serial Comunicator del Compilador Basic® PROTON®.10. nos concentraremos en la conversión A/D. Selección de la velocidad de conexión entre el PIC y el IDE Serial Comunicator.10. ver Figura 6.8. Más adelante se describirá en detalles esta utilidad. Menú de selección del IDE Serial Comuicator. Visualización de la ejecución del programa CAP_06_Ejemplo_01. 13 DelayMS 1000 GoTo Main Figura 6. Para poder visualizar el valor de la conversión A/D.7. Figura 6.CAP_06_Ejemplo_01 (Conversión A/D utilizando comandos de alto nivel). ' CAP_06_Ejemplo_01. HRSOut "Valor conv. Utilizando el sistema de desarrollo iBOARD III..Figura 6. después de cargado el programa en el microcontrolador PIC®.8. PORTA<0> y el resultado lo alma_ ' cena en la variable valor. ' Realiza la conversión A/D por el canal ' AN0.

byte alto y bajo. Habilitar la interrupción global y la interrupción por periféricos. interrupciones perifer. AN0. que al completarse la conversión pasa a valer 0. Pasos a realizar para una conversión A/D con interrupciones 1) Configurar el módulo Conversor A/D • • • • Configurar los pines que actuarán como entradas analógicas.6.bas a través del IDE Serial Comunicator.bas Sistema de desarrollo para microcontroladores PIC®. A/D = ". Se exige esperar un mínimo de 2 ٠ TAD para reiniciar una nueva conversión. al finalizar la conversión. A/D con interrupciones ' ------------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado XTAL = 20 ' Define la velocidad del resonador ADCON1 = %10000000 ADCON0 = %11000001 Symbol GIE = INTCON. 5) Tiempo de espera para completar la conversión A/D y que puede detectarse: • • • Por la exploración del bit GO/DONE#. si se desea la interrupción. Nota. 13 DelayMS 1000 GoTo Main End Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción. ' SUB_RUTINA DE INTERRUPCIÓN ' ----------------------------------------------------------------ADC_INT: ADIE = 0 ' Deshabilita la interrupción por ADC Valor. ' PROGRAMA PRINCIPAL.. ADIF = 0 DelayUS 50 ADIE = 1 GO = 1 Resume ' ' ' ' Limpia el Flag de interrupción por ADC Tiempo requerido para carga capacitor Habilita la interrupción por ADC Arranca de nuevo la conversión ADC Figura 6.8. Habilitar la interrupción por conversión A/D. ' ------------------------------------------------------------------Main: ADIF = 0 ' Limpia el Flag de int. Debe producir los mismos resultados que produjo el programa CAP_06_Ejemplo_01. Bit GO_/DONE del ADC Variable de uso general Cuando ocurre una interrupción va a la subrrutina "ADC_INT" 2) Activar. HRSOut "Valor conv. poner a 1 el bit ADlE. 7) Para una nueva conversión regresar al paso 1) y 2). 'CAP_06_Ejemplo_02. del ADC GIE = 1 ' Habilita interrupciones globales PEIE = 1 ' Habilita las int. • El tiempo de conversión por bit está definido por TAD.11. Aunque no se permita interrupción. ADC -> Activo.6 Symbol GO = ADCON0. 38 . el señalizador ADIF se pondrá a 1 al finalizar la conversión.bas ' Ejemplo básico de utilización del conv.6 Symbol PEIE = INTCON. de periféricos ADIE = 1 ' Habilita la interrupción por ADC GO = 1 ' Arranca la conversión A/D del ADC ' Envía la variable valor a través del puerto serial para que ' pueda ser visualizada por el IDE Serial comunicator. las que trabajan como E/S digitales y las usadas para la tensión de referencia a través del registro ADCON1 Seleccionar el reloj de la conversión a través del registro ADCON0 Seleccionar el canal de entrada A/D a través del registro ADCON0 Activar el módulo A/D a través del registro ADCON0 CAP_06_Ejemplo_02 (Conversión A/D utilizando Interrupciones).7 Symbol ADIE = PIE1.2 Dim Valor As Word On Interrupt GoTo ADC_INT ' ' ' ' ' ' ' ' ' ' ' Configura PORTA como analógico justificar el resultado a la derecha y F_OSC/32. Bit habilit. interrupciones por ADC Bit flag interrupciones por ADC Bit habilit. escribiendo sobre los registros PIE1 y PIR1 • • • Borrar la bandera de interrupción por conversión A/D ADIF. poner a 1 los bits habilitadores GIE y PEIE. 6) Leer el resultado en los 10 bits válidos de los registros ADRESH:L y borrar el flag ó bandera de interrupción ADIF. 3) Tiempo de espera para que transcurra el tiempo de adquisición 4) Inicio de la conversión • Poner a 1 el bit GO/DONE# a través del registro ADCON0.LowByte = ADRESL ' Carga el valor de la conversión en la Valor. Esperando a que se produzca la interrupción si se ha programado. iBOARD III. interrupciones globales Bit habilit. Dec Valor.6 Symbol ADIF = PIR1..HighByte = ADRESH ' Variable valor. Visualización de la ejecución del programa CAP_06_Ejemplo_02.

el cual. y un bit de parada (Stop). iBOARD III.EUSART Operación a alta velocidad 0 .1. la cual. Se puede observar que una comunicación serial comienza con 1 bit de arranque (Start).1.High Baud Rate Select bit determina la velocidad de la transmisión en modo asincrónico 1 . siempre es cero (0) Los datos son transmitidos desde el bit menos significativo (LSB) al más significativo (MSB) Cada transmisión de datos culmina con un bit de parada (STOP). 39 . Es un periférico de comunicación serial de entrada / salida también conocido como interfaz SCI. Es un periférico que trabaja en forma autónoma. Transmisión Asincrónica Al igual que en otros periféricos del microcontrolador.CAPÍTULO 7 EL USART DE UN MICROCONTROLADOR PIC USART: Universal Synchronous Asynchronous Receiver Transmitter (EUSART).mikroe. Sistema de desarrollo para microcontroladores PIC®. muestra los bits individuales que conforman el registro de transmisión TXSTA del EUSART de un PIC16F886.Transmit Shift Register Status bit 1 – El registro TSR está vacío 0 – El registro TSR está lleno.Transmisión no habilitada SYNC .Transmit Enable bit 1 – Transmisión habilitada 0 .Ninth bit of Transmit Data puede ser usado como dirección o bit de paridad. Fuente: Tomado de la página web: www.Clock Source Select bit – Sólo en modo sincrónico. no se utiliza una señal de reloj y básicamente los datos son transferidos de la siguiente forma: • • • • En estado de reposo la línea de datos permanece en estado alto (1) Cada transmisión de datos comienza con un bit de arranque (START). Reloj proveniente de una fuente externa..EUSART Operación a baja velocidad TRMT . El EUSART integrado en el PIC16F886 posee las siguientes características: • • • • Comunicación asíncrona en modo Full Duplex Comunicación síncrona Half Duplex en modo maestro y esclavo Largo de los caracteres programables de 8 – 9 bits.9-bit Largo en bits de la transmisión 0 . Representación gráfica de una señal en el USART de un PIC®. Realiza la generación de señales de reloj. Registro de transmisión del USART de un PIC16F886.2. Determina el origen del reloj. MODO Asincrónico: Los datos se transmiten y reciben utilizando la codificación de no retorno por cero (NRZ). siempre es uno (1) Figura 7.EUSART Mode Select bit 1 .Modo Esclavo. registros de desplazamiento y ”buffer” de datos necesarios para la transferencia serial de datos entre el PIC® y el computador.EUSART Operación en forma asincrónica SENDB . Detección de errores en la comunicación 7.Send Break Character bit Sólo en modo asincrónico 1 – Habilitar el caracter de “Break “ 0 . La figura 7. TX9D . se observa una representación gráfica de una señal en el USART..1.8-bit Largo en bits de la transmisión TXEN . 1 – Modo Maestro. TX9 . Figura 7. 8 ó 9 bits de datos (8 para los PIC® con módulo USART y 9 para los PIC® con módulo EUSART).com CSRC .Transmisión de carácter “Break” se completo BRGH . el USART tiene dos registros de configuración. En la Figura 7.EUSART Operación en forma sincrónica 0 . 0 .2.9-bit Transmit Enable bit 1 . es codificada con codificación NRZ. Reloj generado internamente por el “Baud Rate Generator”. el cual. uno para la transmisión y otro para la recepción de información.

.mikroe. Fuente: Tomado de la página web: www.No habilita la recepción en forma continua ADDEN .2. un puerto serial de un computador ó PC.3.Serial Port Enable bit 1 – Puerto Serial Habilitado.No se detecta el error “Framing Error” OERR . 0 . podemos entender el funcionamiento de los diferentes bloques que conforman el módulo de transmisión del EUSART. Los pines RX/DT y TX/CK son configurados como entrada / salida 0 – Puerto Serial no Habilitado RX9 .3.Overrun Error bit.7. Figura 7.4.Recepción simple no habilitada CREN . Cada uno de estos bits juega un papel importante en la configuración final del módulo USART / EUSART. el microcontrolador también dispone de un registro de configuración denominado RCSTA.com Figura 7.Address Detect Enable bit es solo utilizado en el modo de detectar dirección 1 – Habilita la detección de dirección de los 9 bit de datos recibidos 0 – No habilita la detección de dirección. puede observar a través de la Figura 7. 40 .mikroe. tamaño del dato a transmitir 8 ó 9 bits. El noveno bit se utiliza como bit de paridad FERR . Diagrama de bloque del registro de transmisión del EUSART de un PIC16F886. SPEN .com Haciendo referencia a la figura 7. cada uno de ellos con una función específica como la habilitación o no del EUSART TXEN. Los bytes de información que el CPU coloque en el buffer de salida serán transmitidos a una velocidad programable por el bloque generador de baudios “BAUD Rate generador” a través del pin PORTC<6> denominado también Tx pin. el cual.9-bit Receive Enable bit 1 – Se habilita la recepción de 9-bits 0 . por ejemplo. iBOARD III. bit de status TRMT y bits de configuración del generador de Baudios.Se habilita la recepción de 8 bits SREN . El pin de transmisión generalmente ubicado en el PORTC<6> es el encargado de enviar la información al mundo exterior.Continuous Receive Enable bit de pendiendo de la configuración Asynchronous mode: 1 – Recepción habilitada 0 – Recepción no habilitada Synchronous mode: 1 – Se habilita la recepción continua hasta que el bit “CREN “ sea cero(0). Fuente: Tomado de la página web: www. pueden configurarse en forma manual y/o a través del uso de instrucciones especializadas encontradas en los lenguajes de alto nivel.No se detecta el error “Overrun Error” RX9D . Registro de Recepción del USART de un PIC16F886. bit de bandera de interrupción TXIF y habilitación de interrupciones TXIE. Existen diferentes bits de control.Framing Error bit 1 – En la recepción de detecta el error “Framing Error” 0 .2. 1 – En la recepción se detecta el error “Overrun Error” 0 .Single ReceiveEnable bit Es utilizado en modo sincrónico y operación como Maestro 1 – Recepción simple habilitada 0 .Ninth bit of Received Data puede ser usado como bit de dirección o de paridad Sistema de desarrollo para microcontroladores PIC®. Recepción Asincrónica Para la recepción de información.

mikroe. bit a bit son sincronizados por el bloque generador de baudios y enviados al registro de entrada RSR. iBOARD III. los datos contenidos en el buffer se pueden normalmente leer. bit de habilitación del noveno bits RX9..5. Figura 7. bit de bandera de interrupción TXIF y habilitación de interrupciones TXIE. Cuando ocurre este error. El buffer del PIC es del tipo FIFO y puede almacenar sólo dos (2) Bytes ó caracteres. 41 . pasa al registro de recepción RCREG. Para limpiar el error es necesario colocar a cero (0) el bit CREN del registro RCSTA ó colocar en uno (1) al bit SPEN del Registro RCSTA. bit de habilitación del módulo de recepción SREN. podemos entender el funcionamiento de los diferentes bloques que conforman el módulo de recepción del EUSART. pero no se recibirán más datos hasta que el bit OERR sea colocado a cero (0). Diagrama de bloque del registro de recepción del USART de un PIC16F886.intervalo predeterminado de tiempo.com Sistema de desarrollo para microcontroladores PIC®.5.com Haciendo referencia a la figura 7. recepción del noveno bit . Primero se deberá leer el bit RX9D y luego los ocho (8) bits del registro RCREG. de otra forma el bit será automáticamente puesto en cero (0) antes de su lectura. produciendo al mismo tiempo una interrupción. simplemente no hay espacio para almacenar más de dos caracteres.4. Diagrama de bloque del registro de recepción. el cual. Recepción de 9 bits: La recepción del noveno bit en el lado del receptor se realiza si el Bit RX9 del registro RCSTA es uno (1). el Byte de datos que pudiese contener 8 ó 9 bits. El error se manifiesta colocando a uno (1) el bit OERR del registro RCSTA.4. Figura 7.mikroe. Fuente: Tomado de la página web: www. cada uno de ellos con una función específica como la habilitación o no del puerto serial SPEN. Fuente: Tomado de la página web: www. simultáneamente causa una reinicialización del USART. Esto se puede observar a través de la Figura 7. una vez que el bit FEER se ha colocado en uno (1). por ejemplo. bit habilitación de recepción continua CREN y los bits para el manejo de errores como el error de error “Framing” FERR y error de “Overrun” OERR. se encarga de descomponer la información recibida y separar los bits de control del Byte de datos. Existen diferentes bits de control. desde el puerto serial de un computador ó PC. dependiendo si es un USART ó un EUSART. lo cual. para poder limpiarlo es necesario colocar en uno (1) al bit SPEN del registro RCSTA. Este error se indica mediante el bit FERR del registro RCSTA. Una vez completada ésta tarea. Este error no genera por si mismo una interrupción. Los bytes de información que el PC envíe al microcontrolador. El pin de recepción generalmente ubicado en el PORTC<7> es el encargado de recibir la información del mundo exterior. hay que tener cuidado en como leer este bit. “Framing error” Ocurre cuando el receptor no detecta el bit de parada en un “Overrun Error” . Un error de “Overrun” ocurre cuando éste buffer recibe más de dos caracteres.

muestra un esquema de interconexión entre microcontroladores a través del módulo EUSART. iBOARD III. esto se realiza colocando en uno (1) el bit ADDEN del registro RCSTA.SPBRG). El Maestro envía 9 bit de datos con la dirección de un microcontrolador esclavo al cual quiere comunicarse. Interconexión de microcontroladores PIC® a través de EUSART Cuando el bit ADDEN del registro RCSTA es uno (1). Una vez recibido el dato.7. se habilita la recepción del noveno bit. Fuente: Tomado de la página web: www.7. el maestro ahora enviará los datos de 8 bits a éste microcontrolador.4.3. como todos los microcontroladores comparten la línea de transmisión y recepción. éste modo permite la comunicación serial entre microcontroladores. Una vez recibido el último Byte el microcontrolador deberá de nuevo activar la recepción del noveno bit ó bit de detección de dirección. si no es la misma. La figura 7. se observan las relacioneS matemáticas para el calculo de la velocidad de comunicación en Baudios.mikroe. La figura 7. cada microcontrolador esclavo verifica la dirección propia con la enviada. el principio es simple. Generador de Baud Para la generación de los Baud.com 7. muestra en forma gráfica como se relacionan los diferentes registros para configurar la velocidad de transmisión / recepción en el módulo EUSART.6.7b. a) Registros relacionados con el módulo generador de Baud del EUSART. Adicionalmente. Figura 7. el software del microcontrolador deberá deshabilitar la detección de dirección. el valor escrito en esos registros determinará la velocidad de transmisión/recepción utilizada en bits x seg = Baud.mikroe. mientras que el la Figura 7. todos reciben el mismo dato. Fuente: Tomado de la página web: www. se utilizan dos registros de ocho bits (SPBRGH .com Sistema de desarrollo para microcontroladores PIC®. 42 . Figura 7. los bits BRGH del registro TXSTA y el bit BRGH16 del registro BAUDCTL. Esquema de interconexión de microcontroladores utilizando el módulo EUSART. colocando el bit ADDEN en cero (0).6. afectan la frecuencia de reloj utilizada para el cálculo de los Baud.7a. b) Formulación matemática para el cálculo de los Baud..

La Transmisión comienza cuando se escriben los 8 bits de datos sobre el registro de recepción TXREG. el cual. cadena de caracteres con o sin modificadores de formato que se transmitirán a través del USART/EUSART del microcontrolador. • La velocidad deseada (Baud) debe ser justada a través de bits y registros: Bit BRGH del registro TXSTA. variable. Si se desea que la recepción del dato cause una interrupción. item … • • • • • Item: Constante.7. deberá leerse para obtener dicho dato.8. el bit BRG16 del registro BAUDCTL y los registros SPBRGH y SPBRG. Trabajar en lenguaje ensamblador con los registros del EUSART es una tarea titánica. iBOARD III. • • • • • • Sistema de desarrollo para microcontroladores PIC®. el bit BRG16 del registro BAUDCTL y los registros SPBRGH y SPBRG. Para una transmisión de 9 bits.7. El bit SYNC del registro TXSTA deberá ser colocado en cero (0) y el bit SPEN del registro RCSTA deberá ser colocado en uno (1) a fin de habilitar el puerto serial. Sin embargo. 43 . el valor recibido será almacenado en el registro RCREG. En una transmisión de 9 bits. El bit SYNC del registro TXSTA deberá ser colocado en cero (0) y el bit SPEN del registro RCSTA deberá ser colocado en uno (1) a fin de habilitar el puerto serial. Modificadores de Formato utilizados por el comando HRSout. PEIE y TXIE del registro INTCON deberán ser habilitados. el bit RX9 del registro RCSTA deberá ser colocado en uno (1) La recepción de datos es habilitada colocando en uno (1) el bit CREN del registro RCSTA. Fuente: Manual del Usuario compilador Basic® PROTON®. Resumen de pasos a seguir para realizar una transmisión serial asincrónica a través de los registros del módulo EUSART. el valor del noveno bits. • La velocidad deseada (Baud) debe ser justada a través del bits y registros: Bit BRGH del registro TXSTA. CCS® y MikroBasic®. El bit TXIF del registro PIR1 es automáticamente puesto en uno (1). deberá ser escrito en el bit TX9D del registro TXSTA. Figura 7. Ante una recepción de 9 bits. Comandos en alto nivel para el manejo del USART/EUSART Como hemos podido observar a lo largo de este capítulo. el bit TX9 del registro TXSTA deberá ser colocado en uno (1) La transmisión de datos es habilitada colocando en uno (1) el bit TXEN del registro TXSTA.6. es total y completamente necesaria para entender la arquitectura y la organización del módulo de comunicación serial. expresión. 7. Resumen de pasos a seguir para realizar una recepción serial asincrónica a través de los registros del módulo EUSART. Ante una recepción de 8 bits. Si se desea que el bit TXEN cause una interrupción. el valor del noveno bits será almacenado en el bit RX9D del registro RCREG. 7. Para una recepción de 9 bits. los bits GIE. Sintaxis: HRSout item. a medida que los periféricos del microcontrolador realizan tareas más complicadas y complejas aumenta también la complejidad para la configuración de sus registros. los bits GIE. podemos realizar programas que involucren la utilización del USART/EUSART de los microcontroladores en cuestión de segundos.5. Transmisión Asincrónica: HRSout Transmite uno o más valores utilizando el USART/EUSART del microcontrolador. El registro RCSTA deberá leerse para obtener información acerca de la ocurrencia de errores “Framing” y “Overrun”. Gracias al desarrollo de los compiladores de lenguajes en alto nivel como el Basic® PROTON®. PEIE y RCIE del registro INTCON deberán ser habilitados. la teoría explicada con anterioridad.

bas ' Ejemplo básico de utilización del USART/EUSART ' ----------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado XTAL = 20 ' Define la velocidad del resonador Declare HSERIAL_BAUD 9600 Dim Edad As Byte ' Configura vel. iBOARD III..".. Modificadores. 255) DECLARE HSERIAL_PARITY ODD ó EVEN Habilita o deshabilita la detección de errores de paridad en el puerto serial DECLARE HSERIAL_CLEAR ON ó OFF Limpia el bit de “Overrun Error” antes de comenzar a leer el puerto. 13 HRSOut "Ejemplo de utilización del USART .13 DelayMS 10000 GoTo Main Figura 7. Variable {... 13 HRSOut "Usted escribió: ".13 HRSin DEC2 Edad Until Edad >= 10 And Edad <= 50 HRSOut "Muy bien . Variable…} • • • • DECLARE HSERIAL_RCSTA Valor (0.. haga un programa que utilice el USART del microcontrolador para enviar y recibir información al computador.. Byte. {TimeOut. Parity Error Label: Opcional. 13 HRSOut "-----------------------------------------".. ' CAP_07_Ejemplo_01. Figura 7. Main: HRSOut "Sistema de Desarrollo para PIC iBOARD III". el compilador Basic® PROTON® dispone de la directiva “DECLARE”.recepción asincrónica: DECLARE HSERIAL_BAUD Valor Ajusta la velocidad del módulo generador de Baud del microcontrolador. Modificadores de Formato utilizados por el comando HRSin.bas Sistema de desarrollo para microcontroladores PIC®.10. Existen cinco (05) directivas asociadas al USART/EUSART cuando se utiliza como transmisión . Variable: Bit.".255) Escribe en el registro RCSTA el valor de configuración entre (0 . Este error también se puede limpiar colocando el bit CREN del registro RCSTA en cero (0) y luego en uno (1). 13 Repeat HRSOut "Introduzca su edad?". 255) DECLARE HSERIAL_TXSTA Valor (0.10. " Años". Por defecto su valor es de 2400 Baudios.255) Escribe en el registro TXSTA el valor de configuración entre (0 .Comando para la Recepción Asincrónica: HRSin Recibe uno o más valores utilizando el USART/EUSART del microcontrolador. CAP_07_Ejemplo_01..9.. TimeOut Label }. valor en ms que el comando HRSin esperará por la recepción de un dato antes de saltar a TimeOut Label. Sintaxis: Variable = HRSin . Baud = 9600 TimeOut: Opcional.8. 7. salta a la etiqueta cuando el dato recibido tiene un error de paridad. {Parity Error Label }. Configuración de los registros del USART/EUSART en alto nivel Para facilitar la configuración de los registros asociados a la comunicación serial mediante el módulo USART / EUSART.. Listado de la codificación del programa CAP_07_Ejemplo_01.. La codificación realizada es mostrada en la figura 7.. Word o Dword que almacenará el valor recibido en la comunicación serial. TimeOut Label } HRSin {TimeOut. 44 . DEC2 Edad. Fuente: Manual del Usuario compilador Basic® PROTON®. Modificadores: Uno o más modificadores de formato para la variable recibida..bas Utilización básica del USART/EUSART Utilizando el sistema de desarrollo iBOARD III.

10. esto se muestra en la Figura 7. DEC2 Edad (el valor decimal de dos cifras de la variable Edad) y “Años” Luego seleccione la velocidad de conexión del puerto e comunicaciones a 9600 BAUD. Deberá observar el texto tal como se presenta en la figura 7.12. más una tercera línea de separación “----“ y luego en la cuarta línea le preguntará: Introduzca su Edad?.Figura 7. Una vez cargado el programa en el microcontrolador. El microcontrolador PIC® a través del USART/EUSART le enviará al PC la información que inicialmente mostrará dos líneas. el PC le enviará al microcontrolador un número entero de dos cifras. Visualización de la ejecución del programa CAP_07_Ejemplo_01.11. el microcontrolador almacenará en la variable Edad. el cual. de lo contrario le volverá a preguntar su edad.13.10. esto se realiza a través de la compilación y carga del programa mostrado en la figura 7. deberá seleccionar del menú del compilador: View/Plugin tal como se muestra en la Figura 7. <.bas A través del IDE Serial Comunicator. Usted escribió.13. Deberá aparecer el resultado de la conversión A/D como se muestra en la Figura 7. Si no aparece el texto mostrado en pantalla. Menú de selección del IDE Serial Comunicator.13. deberá escribir en el cuadro superior de la pantalla su edad.El programa mostrado en la figura 7.bas desde el microcontrolador. y presione sobre el icono conectar. Figura 7. El primer paso es ejecutar el programa CAP_07_Ejemplo_01. Selección de la velocidad de conexión entre el PIC® y el IDE Serial Comunicator.11.. Envía y recibe datos al PC y de esta forma se establece una comunicación con el usuario.12. iBOARD III. Una vez escrita su edad en el recuadro. Sistema de desarrollo para microcontroladores PIC®. deberá hacer un reset a través del pulsador de reset que se encuentra en el iBOARD III. Por último el microcontrolador enviará al PC de nuevo el comentario: Muy bien…. Figura 7. es una aplicación básica de la utilización del USART/EUSART del microcontrolador. 45 . ésta deberá estar comprendida entre diez 10 años y cincuenta 50 años.

utilizaremos el microcontrolador PIC® para enviar información a un programa realizado en VB6 y por supuesto se hará utilizando el periférico USART. En el siguiente ejemplo. Una vez seleccionado el puerto de comunicación serial. El listado completo del programa en VB6 código fuente y ejecutable. Listado de la codificación del programa CAP_07_Ejemplo_02. Los “Drivers” del sistema de desarrollo iBOARD III. bajo el nombre de: ' CAP_07_Ejemplo_02.CAP_07_Ejemplo_02. Pantalla de configuración del programa en VB6 UART_1. La comunicación serial se está realizando entre el USART del microcontrolador PIC® y el computador. se encuentra en el mismo directorio del ejemplo CAP_07_Ejemplo_02. la pregunta es ¿Cuál puerto de comunicación serial?. Los datos se en_ ' vian con una pausa de 10 ms.16.16.bas Utilización del USART y Visual Basic® Una necesidad creciente en la industria es la comunicación de microcontroladores y programas de aplicación para la supervisión y control de procesos. tal y como se explicó en el capítulo 2. presione el botón “Conectar” y deberá visualizar en su programa lo mostrado en la Figura 7. iBOARD III. La respuesta es simple. Figura 7. crean un puerto serial virtual y se lo asignan a un COM disponible en el computador.bas Figura 7.bas junto al programa en VB6 UART_1. Instalación de Drivers. si este sistema se conecta al puerto USB. Figura 7. 13 DelayMS 10 Next GoTo Main End ' Se envía a través del USART una rampa ' de valor cero a 255. Sistema de desarrollo para microcontroladores PIC®.14. deberá configurar el puerto de conexión serial donde está conectada el sistema de desarrollo iBOARD III. En la pantalla de configuración del programa UART_1 en VB6. 46 .15.bas ' Ejemplo básico de utilización del USART/EUSART con VB6 ' ----------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado XTAL = 20 ' Define la velocidad del resonador Declare HSERIAL_BAUD 9600 Dim Index As Byte Main: For Index = 0 To 255 HRSOut DEC3 Index. Visualización de la ejecución del programa CAP_07_Ejemplo_02.bas en el CD del iBOARD III entregado a usted.

tiene las siguientes características: • • • • • • • 8 bit’s puede ser utilizado como “timer” y como “counter” Se puede leer y escribir Tiene un pre-escalador de 8 bits por software La señal de reloj puede ser interna o externa Interrupción por desbordamiento programable Selección del flanco habilitación de la señal externa Pre-escalador compartido con el periférico WDT La Figura 8. Registro de Opciones del PIC16F876. 47 .com El registro asociado al TMR0 es el registro de Opciones. TMR1 y TMR2. Por ejemplo: existe un registro pre-escalador de 8 bits. punto 5.mikroe. También puede ser utilizado como contador de eventos externos aplicados al pin RA4/T0CKI.1. El bit T0CS es el encargado de configurar al TMR0 como temporizador ó como contador de eventos externos. se observan los diferentes bits que componen al registro de Opciones. a través de este pin se puede introducir una señal externa al microcontrolador.mikroe.1. Los microcontroladores PIC16F876 disponen de un potente conjunto de temporizadores para manejar eficientemente todas las operaciones que involucran tiempo y conteo de eventos. iBOARD III. vemos que hay un pin de E/S asociado a este timer que es el PORTA<4>. el registro de opciones permite realizar la configuración del TMR0 a través de la configuración de sus diferentes bits. El registro de 8 bits TMR0 almacena la cuenta de tiempo (modo timer) o de eventos (modo counter) a los que ha tenido lugar la señal luego de pasar por el pre-escalador. 2 del registro de interrupciones INTCON<2> T0IF.com Sistema de desarrollo para microcontroladores PIC®. como se mencionó en el capítulo 5. el cual. éste registro se desbordará y comenzará de nuevo su conteo en cero.CAPÍTULO 8 TEMPORIZADORES “TIMERS” Introducción. pero se producirá una activación de la bandera de interrupción por TMR0 bit No. el mismo puede realizar el conteo de flancos de subida (alfa) ó bajada (beta) dependiendo de la programación asignada al bit T0SE. pudiéndose ejecutar la rutina de interrupción por TMR0 previamente compilada.2. Diagrama funcional de bloques del timer TMR0.. puede utilizarse como cronómetro de tiempo (modo Timer) con señal de reloj tanto interna como externa. Fuente: Tomado de la página web: www. si el conteo es mayor a 255.10. Si el bit de habilitación por TMR0 INTCON<5> T0IE y el bit de interrupciones globales INTCON<7> GIE están activados. El TMR0. Fuente: Tomado de la página web: www. TMR0. Algunos de los bits de configuración se comparten para la configuración del TMR0 ó del WDT que es otro temporizador interno del microcontrolador PIC®. se puede asociar al TMR0 ó al WDT esto se configura a través del bit PSA del registro de Opciones. Dichos temporizadores son tres y se denominan técnicamente: TMR0. presenta el diagrama funcional de bloques del timer TMR0. es un temporizador de 8 bits que. Figura 8.2. COMO “TIMER” • • • OPTION_REG<5> T0CS = 0 El registro TMR0 se incrementa en cada ciclo de instrucción La sincronización en la escritura toma dos ciclos de reloj COMO “COUNTER” • • OPTION_REG<5> T0CS = 1 El registro TMR0 se incrementa en cada flanco de subida o bajada sobre el pin RA4/T0CKI OPTION_REG<4> T0SE Figura 8. En la Figura 8. entonces el TMR0 podrá interrumpir al CPU del microcontrolador.

el valor inicial del conteo.Valor I) Ejemplo: Utilice al TMR0 para generar una interrupción cada 10 ms. Introducir en el TMR0.5. Si el bit INTCON<5> T0IE es uno (permiso de interrupción). PS1 y PS0. Como trabaja la temporización del TMR0 Frecuencia de oscilación (resonador/cristal) FOSC = 20 MHz para el PIC16F876 del sistema de desarrollo iBOARD III Incremento del Registro TMR0 INCREM = Pre-escalador * 4/FOSC Tiempo de interrupción Tint = INCREM * (255. muestra como hacer la configuración del TMR0 para que interrumpa al programa principal cada 10 ms. 8. Fuente: Manual técnico del PIC16F876.1. a través del registro INTCON<5> bit TOIE Habilitar la interrupción por Periféricos. el valor de PS2= 1. el cual.2. utilizando el PIC 16F876 del sistema de desarrollo iBOARD III.3.2 us Valor I = 255 – Tint/INCREM = 255 – 10 ms/51. El resultado del programa se podrá observar a través del PROTON® IDE Serial Comunicator. Ajustar el registro OPTION_REG<2:0> Bit’s PS2.528 ms -> El pre-escalador tendrá que ser de 256 para 10 ms INCREM = Pre-escalador * 4/FOSC = 51. Registros asociados al funcionamiento del TMR0. iBOARD III.056 ms Tint|MAX(128) = 128 * 4/20Mhz * (255-0) = 6. Ejemplo de utilización del TMR0 El siguiente ejemplo. Tint = 10 ms FOSC = 20 MHz 8. TMR0 8. a través del registro INTCON<6> bit PEIE Habilitar la interrupción global . 48 . Interrupción por TMR0 Una interrupción por TMR0 ocurrirá cuando el registro de 8 bits asociado a éste timer llegue al desbordamiento “overflow” FF -> 00.3. Registros asociados al TMR0 Tint|MAX(p) = Pre-escalador * 4/20MHz*(255-Valor I) Tint|MAX(256) = 256 * 4/20Mhz * (255-0) = 13.2 us Valor I = 255 – Tint/INCREM = 255 – 195 Valor I = 60 … Valor Inicial a cargar en el Reg. deberá configurarse para recibir información serial a 38400 Baud. a través del registro INTCON<7> bit GIE • • Figura 8. entonces la interrupción ocurrirá y se ejecutará la rutina de servicio de interrupción por TMR0. ya que. PS0 = 1. La interrupción por TMR0 no puede despertar al microcontrolador si éste se encuentra en estado dormido “sleep”. cuando ocurre el overflow el bit del registro INTCON<2> denominado T0IF pasará a valer 1. TMR0 = 60 Habilitar la interrupción por TMR0. Para un pre-escalador de 256.4. PS1 = 1. Ajustar el registro OPTION_REG<3> Bit PSA = 0 Significa que el pre-escalador será asignado al TMR0 y no al WDT. Sistema de desarrollo para microcontroladores PIC®. Pasos a seguir para la utilización del TMR0 • Ajustar el registro OPTION_REG<5> Bit TOCS = 0 Significa que el TMR0 se utilizará como temporizador con la fuente de reloj interna del PIC16F876.8. el TMR0 es deshabilitado cuando se entra en modo de reposo o dormido. • • • • 8.

49 . Imagen de la ejecución del programa CAP_08_Ejemplo_01. de periféricos T0IE = 1 ' Habilita la interrupción por TMR0 Conteo = 0 ' Limpia la variable Conteo Conteo_T0 = 0 ' Limpia la variable Conteo_T0 Loop: Conteo = Conteo + 1 ' Programa principal. Sistema de desarrollo para microcontroladores PIC®. ' ---------------------------------------------------------------Main: T0IF = 0 ' Limpia el flag de Int. DelayMS 1 Next HSerOut ["Conteo = ". la variable Conteo_T0 se incrementa 100 veces._ Dec Conteo_T0. iBOARD III. ------------------------------------------------------------------Device = 16F876 XTAL = 20 ' DEFINICIÓN DE SIMBOLOS.' ' ' ' ' ' CAP_08_Ejemplo_01. interrupciones perifer. incrementa la For Index = 0 To 1000 ' variable conteo cada 1 seg. En este programa se incre_ mentará el valor de la variable Conteo cada 1000 ms y la variable Conteo_T0 cada 10ms. interrupciones por TMR0 flag interrupciones por TMR0 selección fuente de Reloj TMR0 de selección para el prescalador de selección para el prescalador de selección para el prescalador de selección para el prescalador Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción.bas Ejemplo básico de utilización del TMR0.5 INTCON.5 OPTION_REG.6 INTCON. utilizando el TMR0 para que interrumpa al pro_ grama principal cada 10 ms.4. del TMR0 T0IE = 1 ' Habilita la interrupción por TMR0 Resume Dim Conteo As Word Dim Conteo_T0 As Word Dim Index As Word ' Variable de uso general ' Variable de uso general ' Variable de uso general On Interrupt GoTo TMR0_INT ' Cuando ocurre una interrupción va a ' la subrrutina "TMR0_INT" ' PROGRAMA PRINCIPAL.3 OPTION_REG. " ". Dec Conteo.7 INTCON.1 OPTION_REG. interrupciones globales habilit. VARIABLES Y CONSTANTES ' ----------------------------------------------------------------Declare HSERIAL_BAUD 38400 ' Velocidad conexión serial en baud Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol GIE PEIE T0IE T0IF T0CS PSA PS2 PS1 PS0 = = = = = = = = = INTCON.2 OPTION_REG. 13] GoTo Loop End Figura 8. del TMR0 T0CS = 0 ' Define al TMR0 se utiliza como timer PSA = 0 ' Asigna el pre-escalador al TMR0 PS2 = 1 ' Asigna al pre-escalador 256 PS1 = 1 " PS0 = 1 " TMR0 = 60 ' Carga inicialmente al registro TMR0 GIE = 1 ' Habilita interrupciones globales PEIE = 1 ' Habilita las int. como era de esperarse.0 ' ' ' ' ' ' ' ' ' Bit Bit Bit Bit Bit Bit Bit Bit Bit habilit. habilit. ' RUTINA DE INTERRUPCIÓN ' ----------------------------------------------------------------TMR0_INT: T0IE = 0 ' Deshabilita la interrupción por TMR0 Conteo_T0 = Conteo_T0 + 1 ' Incrementa la variable Conteo_T0 TMR0 = 60 ' Carga inicialmente al registro TMR0 T0IF = 0 ' Limpia el flag de int.bas Se observa que para cada conteo de 1 seg en la variable Conteo del programa principal.2 OPTION_REG. "Conteo_T0 = ".

6. el más importante es el registro de configuración denominado T1CON.5. lo que requiere el uso de dos registros concatenados de 8 bits: TMR1H:TMR1L. es el único temporizador/contador ascendente con un tamaño de 16 bits. Sistema de desarrollo para microcontroladores PIC®. Funcionamiento como “COUNTER”: El registro TMR1H:TMR1L se incrementa en cada transición alfa del reloj externo. Manual técnico del PIC16F876. Funcionamiento como “TIMER”: El registro TMR1H:TMR1L se incrementa en cada ciclo de instrucción. el TMR1 funcionará como contador de eventos externos anulando la programación de los bits “1” y “0” del registro TRISC<1:0>. a fin de que. En ambos casos. Registros asociados al funcionamiento del TMR1. los pines RC0/T1OSO/T1CKI Y RC1/T1OSI/CCP2 actúen como entradas del oscilador externo. Registros asociados al TMR1 Figura 8. el reloj vendrá a través del pin RC0/T1OSO/T1CKI.7. que son los encargados de guardar el valor del conteo en tiempo real en el intervalo 0000h a FFFFh. Figura 8. T1CON<3> = 1. El timer TMR1 TMR1. 50 .6. Su funcionamiento está gobernado por el valor de programación de los bits del registro T1CON<5:0>. iBOARD III. 8. Existen varios registros asociados al TRM1. es preciso que el bit T1OSCEN. La figura 8. Fuente: Manual técnico del PIC16F876. Descripción de los bits individuales del registro T1CON.6. contiene la descripción de los bits individuales del registro TMR1. Utiliza tanto reloj interno como externo y puede provocar una interrupción por desbordamiento de su registro de conteo.8. Cuando los pulsos de reloj son externos. Si T1OSCEN vale cero.

Timer 1 trabajando en modo temporizador. 51 . sin embargo.7.10.com 8.7. Figura 8. estos bits permiten la configuración del TMR1 a través del circuito comparador presente en este tipo de microcontrolador. Registro T1CON en los PIC16F886/887. El timer TMR1 trabajando como Temporizador 8.com Tiempo de interrupción Tint = INCREM * (65535.com 8.Valor I) Sistema de desarrollo para microcontroladores PIC®.8.8. incluye dos bits de configuración adicionales denominados T1GINV y TMR1GE.9.9. Esto se puede observar a través de la Figura 8. El timer 1 del PIC16F886 / 887 El nuevo PIC16F886/887 comparte casi la totalidad de los registros encontrados en los PIC16F876/877.9. Fuente: Tomado de la página web: www. Fuente: Tomado de la página web: www.mikroe.8.mikroe. Timer 1 trabajando en modo contador.mikroe. Como trabaja la temporización del TMR1 Frecuencia de oscilación (resonador/cristal): FOSC = 20 MHz para el PIC16F876 del sistema de desarrollo iBOARD III Incremento del Registro TMR1 INCREM = Pre-escalador * 4/FOSC Figura 8. iBOARD III. Fuente: Tomado de la página web: www. El timer TMR1 trabajando como Contador Figura 8.

856 52.4 T1OSCEN = T1CON. perifer. a través del registro PIE1<0> bit TMR1IE Conteo Conteo_T1 Index TMR1A Variable de uso general Variable de uso general Variable de uso general Valor Inicial del Timer1 On Interrupt GoTo TMR1_INT ' Cuando ocurre una interrupción va a ' la subrrutina "TMR1_INT" Sistema de desarrollo para microcontroladores PIC®.2 us Valor I = 65535 – Tint/INCREM = 65535 . TMR1(H. globales habilit. ó Ext. 52 .0 As As As As Word Word Word Word ' ' ' ' ' ' ' ' ' ' ' ' ' ' Bit Bit Bit Bit Bit Bit Bit Bit Bit Bit habilit. int. Conteo TMR1 habilit. por TMR1 flag interrupciones por TMR1 selección pre-escalador selección pre-escalador habilit.3 T1SYNC = T1CON.107 ms ms ms ms • • Habilitar la interrupción por Periféricos. utilizando el TMR1 para que interrumpa al pro_ grama principal cada 10 ms. a través del registro INTCON<6> bit PEIE Habilitar la interrupción global .5 T1CKPS0 = OPTION_REG. En este programa se incre_ mentará el valor de la variable Conteo cada 1000 ms y la variable Conteo_T1 cada 10ms.50000 Valor I = 15535 8.2 us Valor I = 65535 – Tint/INCREM = 65535 – 10 ms/0.11. el cual.bas Ejemplo básico de utilización del TMR1. iBOARD III.0 T1IF = PIR1. habilit. VARIABLES Y CONSTANTES ' -----------------------------------------------------------------Declare HSERIAL_BAUD 38400 ' Velocidad conexión serial en baud Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Dim Dim Dim Dim GIE = INTCON.428 26.) Ajustar el registro T1CON<0> Bit TMR1ON = 1 Bit de ON/OFF del TMR1 Introducir en el TMR1H y TMR1L.214 13. utilizando el PIC16F876 del sistema de desarrollo iBOARD III. a través del registro INTCON<7> bit GIE 8. Pasos a seguir para la utilización del TMR1 • • • • • • • Ajustar el registro T1CON<5:4> Bit’s T1CKPS2 = 0 T1CKPS1 = 0. lo que significa pre-escalador = 1:1 Ajustar el registro T1CON<3> Bit T1OSCEN = 1 para habilitar el TMR1. Ejemplo de utilización del TMR1 El siguiente ejemplo.L) = 15535 Habilitar la interrupción por TMR1.0 T1CKPS1 = OPTION_REG. El resultado del programa se podrá observar a través del PROTON® IDE Serial Comunicator. int. ------------------------------------------------------------------Device = 16F876 XTAL = 20 ' DEFINICIÓN DE SIMBOLOS.2 TMR1CS = T1CON. On/Off del TMR1 -> El pre-escalador podrá ser cualquiera de los anteriores pero se utilizará 1:1 para disminuir el error que introduce el pre-escalador.6 T1IE = PIE1. INCREM = Pre-escalador * 4/FOSC = 0. ' ' ' ' ' ' CAP_08_Ejemplo_02. el valor inicial del conteo. deberá configurarse para recibir información serial a 38400 Baud. int.1 TMR1ON = T1CON. muestra como hacer la configuración del TMR1 para que interrumpa al programa principal cada 10 ms. Ajustar el registro T1CON<2> Bit T1SYNC = 0 sincronización del TMR1 Ajustar el registro T1CON<1> Bit TMR1CS = 0 selección del reloj para el TMR1 (int. sincronización selección del reloj habilit.7 PEIE = INTCON. Tint = 10 ms FOSC = 20 MHz Tint|MAX(p) = Pre-escalador * 4/20MHz*(65535-Valor I) Tint|MAX(1:8) Tint|MAX(1:4) Tint|MAX(1:2) Tint|MAX(1:1) = = = = 8 4 2 1 * * * * 4/20Mhz 4/20Mhz 4/20Mhz 4/20Mhz * * * * (65535-0) (65535-0) (65535-0) (65535-0) = = = = 104.12.Ejemplo: Utilice al TMR1 para generar una interrupción cada 10 ms.

Imagen de la ejecución del programa CAP_08_Ejemplo_02. del TMR1 T1CKPS1 = 0 ' Asigna al pre-escalador valor 1:1 T1CKPS0 = 0 " T1OSCEN = 1 ' Habilit. la variable Conteo_T1 se incrementa 100 veces. del TMR1 T1SYNC = 0 ' Sincronización TMR1 TMR1ON = 1 ' Bit de ON/OFF del TMR1 TMR1A = 15535 ' Valor inicial del TMR1 TMR1H = TMR1A. 53 .LowByte ' Valor inicial del TMR1 Byte Bajo T1IF = 0 ' Limpia el flag de Int.bas Se observa que pos cada conteo de 1 seg en la variable Conteo del programa Principal. iBOARD III. "Conteo_T1 = ". Dec Conteo._ Dec Conteo_T1. como era de esperarse.HighByte ' Valor inicial del TMR1 Byte Alto TMR1L = TMR1A. del TMR1 T1IE = 1 ' Habilita la interrupción por TMR1 Resume Figura 8. 13] GoTo Loop End Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción. incrementa la For Index = 0 To 1000 ' variable conteo cada 1 seg. " ".10. ' ----------------------------------------------------------------Main: T1IF = 0 ' Limpia el flag de int. ' RUTINA DE INTERRUPCIÓN ' ----------------------------------------------------------------TMR1_INT: T1IE = 0 ' Deshabilita la interrupción por TMR1 Conteo_T1 = Conteo_T1 + 1 ' Incrementa la variable Conteo_T1 TMR1A = 15535 TMR1H = TMR1A.LowByte ' Valor inicial del TMR1 Byte Bajo GIE = 1 ' Habilita interrupciones globales PEIE = 1 ' Habilita las int. DelayMS 1 Next HSerOut ["Conteo = ". Sistema de desarrollo para microcontroladores PIC®. de periféricos T1IE = 1 ' Habilita la interrupción por TMR1 Conteo = 0 ' Limpia la variable Conteo Conteo_T1 = 0 ' Limpia la variable Conteo_T1 Loop: Conteo = Conteo + 1 ' Programa principal.' PROGRAMA PRINCIPAL.HighByte ' Valor inicial del TMR1 Byte Alto TMR1L = TMR1A.

Significado de cada bit en particular del registro T2CON. La señal de reloj es sólo interna FOSC/4 y pasa por un pre-escalador con rangos 1:1.mikroe. que se puede leer y escribir.13.com Figura 8. Registros asociados al funcionamiento del TMR2. Figura 8. Diagrama funcional de bloques del timer TMR2. Entre sus características más importantes se encuentran: • • • • • • • • Es un temporizador de 8 bits Su valor se puede leer/escribir por medio del registro TMR2 La fuente de reloj es sólo interna Pre-escalador de relación 1:1.13. TCON2 o cualquier reset hacen que el pre y postescalador se borren y tomen el valor 00h. 1:4 y 1:16. También puede realizar funciones especiales para el puerto serie sincrónico (SSP) y con los módulos de captura y comparación.11. El timer TMR2 TMR2. Fuente: Tomado de la página web: www.. Esto se puede observar a través de la Figura 8. es un temporizador ascendente de 8 bits.1:16 Post-escalador de 4 bits 1:1 a 1:16 No opera en modo Sleep Puede usarse como base de tiempo del modulo de comunicación serial sincrónica o de los CCP La escritura del TMR2. mientras que en la figura 8. se describe el significado de cada bit en particular del registro T2CON. Fuente: Manual técnico del PIC16F876. La Salida del TRM2 para por un post divisor de frecuencias con rangos desde 1:1 a 1:16 con 16 valores posibles en el intervalo. 54 . Sistema de desarrollo para microcontroladores PIC®. iBOARD III. Figura 8. que veremos más adelante.12.11.8. 1:4 . Fuente: Manual técnico del PIC16F876.12.

2 us INCREM = 16 * 4/FOSC = 3.6 T2IE = PIE1.14.0 ' ' ' ' ' ' ' ' ' ' ' Bit habilit.5 TOUTPS1 = T2CON.1:16) = 16*4/20Mhz*(255)*16 = 13. Tint = 10 ms FOSC = 20 MHz Tint|MAX(p) = Pre * 4/20MHz*(PR2) * Post Tint|MAX(1:16. Ejemplo de utilización del TMR2 El siguiente ejemplo. En este programa se incre_ mentará el valor de la variable Conteo cada 1000 ms y la variable Conteo_T2 cada 10ms. Pasos a seguir para la utilización del TMR2 • Ajustar el registro T2CON<6:3> Bit’s TOUTPS3 = 1 TOUTPS2 = 1. Ajustar el registro T2CON<1:0> Bit’s T2CKPS1 = 1 T2CKPS0 = 1. y el valor exacto del PR2 será: INCREM = Pre-escalador * 4/FOSC = 0. iBOARD III.1 TOUTPS3 = T2CON.bas Ejemplo básico de utilización del TMR2. interrupciones perifer.1 T2CKPS0 = T2CON.3 TMR2ON = T2CON.16. utilizando el PIC16F876 del sistema de desarrollo iBOARD III.2 us PR2 = Tint/(INCREM * post) = 10ms/(3. lo que significa post-escalador = 1:13 Ajustar el registro T2CON<2> Bit TMR2ON = 1 para habilitar el TMR2. El resultado del programa se podrá observar a través del PROTON® IDE Serial Comunicator. VARIABLES Y CONSTANTES ' -----------------------------------------------------------------Declare HSERIAL_BAUD 38400 ' Velocidad conexión serial en baud Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol GIE = INTCON. ' ' ' ' ' ' CAP_08_Ejemplo_03. TOUTPS1 = 0 y TOUTPS0 = 0.4 TOUTPS0 = T2CON. Como trabaja la temporización TMR2 Frecuencia de oscilación (resonador/cristal) FOSC = 20 MHz para el PIC16F876 Incremento del Registro TMR2 INCREM = Pre-escalador * 4/FOSC Tiempo de interrupción Tint = INCREM * ( PR2) * Post-escalador Ejemplo: Utilice al TMR2 para generar una interrupción cada 10 ms. utilizando el TMR2 para que interrumpa al pro_ grama principal cada 10 ms.056 ms Tint|MAX(1:16.1 T2IF = PIR1. deberá configurarse para recibir información serial a 38400 Baud. 55 .6 TOUTPS2 = T2CON.792 ms -> El pre-escalador será 1:16 y el post escalador será 1:13.7 PEIE = INTCON.2 T2CKPS1 = T2CON. Bit habilit.1:13) = 16*4/20Mhz*(255)*13 = 10. interrupciones globales Bit habilit.2us * 13) PR2 = 240 8.1:12) = 16*4/20Mhz*(255)*12 = 9.608 ms Tint|MAX(1:16. lo que significa pre-escalador = 1:16 Introducir en el TMR2. a través del registro PIE1<1> bit TMR2IE Habilitar la interrupción por Periféricos. interrupciones por TMR2 Bit flag interrupciones por TMR2 Selección del Post-Escalador " " " Bit habilit. muestra como hacer la configuración del TMR2 para que interrumpa al programa principal cada 10 ms. On/Off del TMR2 Selección del Pre-escalador " • • • Dim Conteo As Word Dim Conteo_T2 As Word Dim Index As Word On Interrupt GoTo TMR2_INT ' Variable de uso general ' Variable de uso general ' Variable de uso general ' Cuando ocurre una interrupción va a ' la subrrutina "TMR2_INT" Sistema de desarrollo para microcontroladores PIC®. el valor inicial de 240 • • • Habilitar la interrupción por TMR2.15. el cual. ------------------------------------------------------------------Device = 16F876 XTAL = 20 ' DEFINICIÓN DE SIMBOLOS. a través del registro INTCON<7> bit GIE 8. a través del registro INTCON<6> bit PEIE Habilitar la interrupción global .8.

14. ' RUTINA DE INTERRUPCIÓN ' -----------------------------------------------------------------TMR2_INT: T2IE = 0 ' Deshabilita la interrupción por TMR2 Conteo_T2 = Conteo_T2 + 1 ' Incrementa la variable Conteo_T2 TMR2 = 240 ' Valor inicial del TMR2 T2IF = 0 ' Limpia el flag de Int. del TMR2 T2IE = 1 ' Habilita la interrupción por TMR2 Resume Figura 8. ' ----------------------------------------------------------------Main: T2IF = 0 ' Limpia el flag de int. Imagen de la ejecución del programa CAP_08_Ejemplo_03. del TMR2 TOUTPS3 = 1 ' Selección del Post-Escalador 1:13 TOUTPS2 = 1 ' " TOUTPS1 = 0 ' " TOUTPS0 = 0 ' " TMR2ON = 1 ' Habilit. del TMR2 T2CKPS1 = 1 ' Asigna al pre-escalador valor 1:16 T2CKPS0 = 1 " TMR2 = 240 ' Valor Inicial del TMR2 GIE = 1 ' Habilita interrupciones globales PEIE = 1 ' Habilita las int. de periféricos T2IE = 1 ' Habilita la Interrupción por TMR2 Conteo = 0 ' Limpia la variable Conteo Conteo_T2 = 0 ' Limpia la variable Conteo_T2 Loop: Conteo = Conteo + 1 ' Programa principal.bas Se observa que pos cada conteo de 1 seg en la variable Conteo del programa Principal. 13] GoTo Loop End Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción. incrementa la For Index = 0 To 1000 ' variable conteo cada 1 seg. DelayMS 1 Next HSerOut ["Conteo = ". la variable Conteo_T2 se incrementa 100 veces.' PROGRAMA PRINCIPAL. "Conteo_T2 = ". " ". iBOARD III._ Dec Conteo_T2. como era de esperarse. Dec Conteo. Sistema de desarrollo para microcontroladores PIC®. 56 .

del TMR1 ' Asigna al pre-escalador valor 1:1 " ' Habilit.5 OPTION_REG. Conteo TMR1 habilit.5 INTCON.3 T1SYNC = T1CON.TMR1 y TMR2 en forma simultánea.0 ' ' ' ' ' ' ' ' ' Bit Bit Bit Bit Bit Bit Bit Bit Bit ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' habilit. habilit.0 T2IE = PIE1.HighByte TMR1L = TMR1A.6 TOUTPS2 = T2CON. On/Off del TMR1 Dim Dim Dim Dim Dim Dim Conteo Conteo_T0 Conteo_T1 Conteo_T2 Index TMR1A As As As As As As Word Word Word Word Word Word ' ' ' ' ' ' Variable de uso general Variable de uso general Variable de uso general Variable de uso general Variable de uso general Valor inicial del Timer1 On Interrupt GoTo TMR012_INT ' Cuando ocurre una interrupción va a ' la subrrutina "TMR012_INT" ' PROGRAMA PRINCIPAL.17. Conteo_T1 y Conteo_T2 cada 10ms.1 OPTION_REG. por TMR2 Bit flag interrupciones por TMR2 Selección del Post-Escalador " " " Bit habilit. del TMR2 Selección del Post-Escalador 1:13 " " " Habilit.1 TMR1ON = T1CON. En este programa se incrementará el valor de la variable Conteo cada 1000 ms y las variables Conteo_T0. On/Off del TMR2 Selección del Pre-escalador " Sistema de desarrollo para microcontroladores PIC®.1 TOUTPS3 = T2CON. Ejemplo de utilización del TMR0. de periféricos ' Habilita la interrupción por TMR1 ' Limpia la variable Conteo ' Limpia la variable Conteo_T1 ' ' ' ' ' ' ' Limpia el flag de int.0 T1CKPS1 = OPTION_REG. deberá configurarse para recibir información serial a 38400 Baud. VARIABLES Y CONSTANTES ' ----------------------------------------------------------------Declare HSERIAL_BAUD 38400 ' Velocidad conexión serial en baud Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol Symbol GIE PEIE T0IE T0IF T0CS PSA PS2 PS1 PS0 = = = = = = = = = INTCON.bas Utilización del TMR0. ' ----------------------------------------------------------------Main: T0IF = 0 ' Limpia el flag de int. interrupciones perifer.1 T2CKPS0 = T2CON. del TMR2 Asigna al pre-escalador valor 1:16 " ' Valor inicial del TMR2 T1IE = PIE1.7 INTCON.0 T1IF = PIR1. del TMR1 ' Sincronización TMR1 ' Bit de ON/OFF del TMR1 ' Valor inicial del TMR1 ' Valor inicial del TMR1 Byte Alto ' Valor inicial del TMR1 Byte Bajo ' Habilita interrupciones globales ' Habilita las int. int.1 T2IF = PIR1. del TMR0 T0CS = 0 ' Define al TMR0 se utiliza como timer PSA = 0 ' Asigna el pre-escalador al TMR0 PS2 = 1 ' Asigna al pre-escalador 256 PS1 = 1 " PS0 = 1 " TMR0 = 60 ' Carga inicialmente al registro TMR0 GIE = 1 ' Habilita interrupciones globales PEIE = 1 ' Habilita las int. interrupciones globales habilit.2 T2CKPS1 = T2CON. Device = 16F876 XTAL = 20 ' DEFINICIÓN DE SIMBOLOS.0 Bit habilit.5 T1CKPS0 = OPTION_REG. ' ' ' ' ' ' CAP_08_Ejemplo_04.4 T1OSCEN = T1CON. sincronización selección del reloj habilit.3 TMR2ON = T2CON.2 OPTION_REG.4 TOUTPS0 = T2CON. TMR1 y TMR2 en forma simultánea El siguiente ejemplo. iBOARD III.LowByte GIE = 1 PEIE = 1 T1IE = 1 Conteo = 0 Conteo_T1 = 0 T2IF = 0 TOUTPS3 = 1 TOUTPS2 = 1 TOUTPS1 = 0 TOUTPS0 = 0 TMR2ON = 1 T2CKPS1 = 1 T2CKPS0 = 1 TMR2 = 240 ' Limpia el flag de int. int. TMR1 y TMR2 para que interrumpan al programa principal cada 10 ms.3 OPTION_REG. utilizando los tres timers para que se interrumpa al progra_ ma principal cada 10 ms. de periféricos T0IE = 1 ' Habilita la interrupción por TMR0 Conteo = 0 ' Limpia la variable Conteo Conteo_T0 = 0 ' Limpia la variable Conteo_T0 T1IF = 0 T1CKPS1 = 0 T1CKPS0 = 0 T1OSCEN = 1 T1SYNC = 0 TMR1ON = 1 TMR1A = 50000 TMR1H = TMR1A.5 TOUTPS1 = T2CON. El resultado del programa se podrá observar a través del PROTON® IDE Serial Comunicator.8. muestra como hacer la configuración de los timers TMR0. el cual.2 TMR1CS = T1CON. 57 . interrupciones por TMR0 flag interrupciones por TMR0 selección fuente de Reloj TMR0 de selección para el prescalador de selección para el prescalador de selección para el prescalador de selección para el prescalador Bit Bit Bit Bit Bit Bit Bit Bit habilit. por TMR1 flag interrupciones por TMR1 selección pre-escalador selección pre-escalador habilit.2 OPTION_REG.6 INTCON.

"Conteo_T0 = ". iBOARD III. del TMR0 T0IE = 1 ' Habilita la interrupción por TMR0 EndIf If T1IF = 1 Then T1IE = 0 Conteo_T1 = Conteo_T1 + 1 TMR1A = 15535 TMR1H = TMR1A. de periféricos Habilita la interrupción por TMR2 Limpia la variable Conteo Limpia la variable Conteo_T2 Loop: Conteo = Conteo + 1 ' Programa principal. _ Dec Conteo_T1. 13] GoTo Loop End Disable ' Esta instrucción debe siempre ir al ' final del programa principal y antes ' de la sub_rutina de interrupción. las variables: Conteo_T0. por TMR2 Incrementa la variable Conteo_T2 Valor inicial del TMR2 Limpia el flag de int. del TMR2 Habilita la interrupción por TMR2 Sistema de desarrollo para microcontroladores PIC®. por TMR0 Conteo_T0 = Conteo_T0 + 1 ' Incrementa la variable Conteo_T0 TMR0 = 60 ' Carga inicialmente al reg. Dec Conteo. incrementa la For Index = 0 To 1000 ' variable conteo cada 1 seg.LowByte T1IF = 0 T1IE = 1 EndIf If T2IF = 1 Then T2IE = 0 Conteo_T2 = Conteo_T2 + 1 TMR2 = 240 T2IF = 0 T2IE = 1 EndIf Resume ' Deshabilita la int. "Conteo_T2 = ". Imagen de la ejecución del programa CAP_08_Ejemplo_04. 58 . "Conteo_T1 = "._ Dec Conteo_T0. ' ' ' ' ' Deshabilita la int.15. DelayMS 1 Next HSerOut ["Conteo = ". " "." ". por TMR1 ' Incrementa la variable Conteo_T1 ' Valor inicial del TMR1 Byte Alto ' Valor inicial del TMR1 Byte Bajo ' Limpia el flag de int.bas Se observa que pos cada conteo de 1 seg en la variable Conteo del programa Principal.HighByte TMR1L = TMR1A. del TMR1 ' Habilita la interrupción por TMR1 Figura 8. como era de esperarse. ' RUTINA DE INTERRUPCIÓN ' -----------------------------------------------------------------TMR012_INT: If T0IF = 1 Then T0IE = 0 ' Deshabilita la int. _ Dec Conteo_T2. TMR0 T0IF = 0 ' Limpia el flag de int. Conteo_T1 y Conteo_T2 se incrementan 100 veces.GIE = 1 PEIE = 1 T2IE = 1 Conteo = 0 Conteo_T2 = 0 ' ' ' ' ' Habilita interrupciones globales Habilita las int." ".

Las transferencias de información se realizan en paquetes de 8 bits. a 400 kbit/s (implementado a partir de la versión 1. se define un mecanismo para la detección de las colisiones y arbitraje que busca prevenir la pérdida de información si dos o más maestros inicializan comunicaciones en forma simultánea. entre los que se pueden citar: Phillips.Mikroe.1.2. relojes en tiempo real. Bus I2C es multi-master y aún cuando ésta característica es poco utilizada. bus de interconexión de circuitos integrados. Condiciones de arranque y parada en un Bus I2C. una para datos llamada (SDA) y otra para el reloj (SCL). hecho que lo convierte. Una transición de 1 a 0 (un flanco de bajada) en la línea SDA mientras la línea SCL se mantiene en alto determina la condición de INICIO. convertidores de protocolos.com Sistema de desarrollo para microcontroladores PIC®.Philip. queda establecida a través de una combinación de Hardware/Software. iBOARD III. El térmico I2C es una simplificación comercial y práctica. convertidores A/D. Características del BUS I2C • • • Utiliza dos líneas para la comunicación. la cual. una vez que ocurre esta condición.com Figura 9. el bus se considera ocupado (BUSY). en forma bi-direccional y pueden ser efectuadas a tres velocidades: Normal (Standard ) a unos 100 kbit/s (definición original). Fuente: Tomado de la web: www. sobre el cual.1 del año 1992) en el modo rápido (Fast) a 3. en uno de los más populares estándares de comunicación serial sincrónica. determina la condición de PARADA.4 Mbit/s en el modo de alta velocidad (High. Conexión entre dispositivos bajo el bus I2C. Este bus se creó con la finalidad de reducir la complejidad del cableado interno encontrado en las tarjetas electrónicas de equipos digitales de radio y TV. su uso se ha extendido a innumerables aplicaciones en el área digital. • La generación de los pulsos de reloj es siempre responsabilidad del maestro que controla el bus.. muestra la conexión entre un dispositivo maestro y varios esclavos utilizando el bus I2C. sincronizadores. National.0 del año 1998). 9. Fuente: Tomado de la web: www. La Figura 9. su nombre real es Inter-Integrated Circuit bus. es la gran variedad de productos y fabricantes que producen circuitos integrados con ésta tecnología. Una transición de 0 a 1 (un flanco de subida) en la línea SDA mientras la línea SCL se mantiene en alto. etc. medidores de temperatura.1. Una de las principales razones para que el estudio del bus I2C sea un punto obligatorio en la capacitación de un estudiante en el desarrollo de aplicaciones con microcontroladores. 59 .speed) disponible desde la versión 2. I2C es un bus de comunicación serial. El maestro comienza y termina todas las transferencias de datos y para ello hace uso de dos condiciones especiales denominadas INICIO y PARADA (START y STOP) que pueden ser únicamente generadas por él. Xicor. es decir. Siemens y DallasMaxim Semiconductors™. el bus se considera libre (FREE). Cada dispositivo conectado al bus es identificado por una única dirección (dentro del bus). Actualmente.1. transcurrido un tiempo luego de ocurrir esta condición.CAPÍTULO 9 COMUNICACIÓN SERIAL SINCRÓNICA I2C Introducción. se implementa un protocolo de comunicaciones desarrollado por Phillips Semiconductors™ a principios de los años 80’s. memorias Eeprom. En general los dispositivos esclavos pueden ser entre otros: manejadores de puertos E/S. Figura 9.

2. comienza el proceso de transmisión/recepción de la información “Bytes” entre el dispositivo maestro y el dispositivo esclavo como se puede apreciar en la Figura 9. El envío de los bits se efectúa siempre desde el bit más significativo MSB hacia el menos significativo LSB.9.4. se pueden conectar hasta 128 dispositivos en el bus.com A partir de la versión 1.Mikroe. Fuente: Tomado de la web: www. Esto hace que el maestro entre en un estado de espera. Detalle de la comunicación I2C 9. Detalle de la comunicación entre dispositivos I2C. de esta forma. La definición inicial del I2C preveía la existencia de 7 bits para direccionar al esclavo. Aún cuando el maestro es quien siempre controla el estado de la línea del reloj. los dispositivos se identifican por medio de una dirección única que forma parte de un byte de control enviado por el dispositivo maestro al iniciar la comunicación.3. Fuente: Tomado de la web: www. no se hará un estudio exhaustivo del direccionamiento del bus en estos casos. es utilizar al PIC® como único maestro y los periféricos como esclavos. Formato de la transferencia de bytes en un Bus I2C. Inicialización en modo maestro La forma común de comunicación I2C.com Una vez inicializada la comunicación I2C condición de “Start”. bajo está configuración. El compilador Basic® no da soporte para dispositivos con direcciones de 10 bits por lo cual. la habilitación de las comunicaciones se logra a través de la configuración de los siguientes registros: Sistema de desarrollo para microcontroladores PIC®. un esclavo de baja velocidad o que deba detener la transferencia de datos mientras efectúa otra función.4. puede forzar la línea SCL a nivel bajo. Figura 9. 60 . 9.0 del año 1992. iBOARD III. no transmite información esperando a que el esclavo esté listo para continuar la transferencia en el punto donde había sido detenida. durante el cual. existe un formato de direccionamiento de 10 bits y se ha incrementado significativamente el número de dispositivos que pueden conectarse simultáneamente al bus. Todos los bytes de información colocados sobre la línea SDA deben tener 8 bits.3. El número máximo de bytes que pueden ser enviados en una transmisión no está restringido. Direccionamiento y formato de transferencia de información En un bus I2C.3. Figura 9. siendo el esclavo quien fija esta cantidad de acuerdo a sus características.Philip.

61 . Fuente: Tomado de la web: www. se pretende comunicar. Sistema de desarrollo para microcontroladores PIC®. al cual. Fuente: Tomado de la web: www. Habilitar el módulo de comunicaciones bit SSPEN del registro SSPCON Esperar que el Flag bit SSPIF del registro PIR1 esté en uno indicando que todo está listo para iniciar la comunicación. El microcontrolador tendrá que esperar la señal de reconocimiento (ACK) por parte del dispositivo esclavo.Mikroe. El primer dato a cargar en el registro SSPBUF deberá ser la dirección del dispositivo esclavo.5. Esto le indica al maestro que recibirá datos desde el dispositivo esclavo.com • • 9. Inicialización en modo maestro I2C para un PIC16F876.6. cuando esto ocurre el bit ASKSTAT del registro • 2 Figura 9. iBOARD III. Seleccionar el modo de comunicación tipo “Maestro” a través del registro SSPCON.• • • • • Ajustar la velocidad de Transmisión/Recepción a través del registro SSPADD. Transmisión en modo maestro • Una vez inicializado el módulo I C (bit SSPIF = 1 del registro PIR1) se comienza la transmisión de los datos una vez que son cargados en el registro SSPBUF.Mikroe. La transmisión de los datos termina cuando se coloca el bit SEN = 0 del registro SSPCON2.com 9. Eliminar el control del “slew rate” colocando a uno el bit SMP del registro SSPSTAT.5. Transmisión en modo maestro I2C para un PIC16F876. • SSPCON2 se colocará en cero (0). y se podrán enviar los próximos bytes que representan los datos de igual forma. Parada” Figura 9. Recepción en modo maestro La preparación para la recepción de datos es similar a la transmisión con la excepción de que el último bit del primer byte enviado (dirección) contiene un uno (1).6. de esta forma ocurrirá una condición de parada “STOP” habilitándose al pin SDA de nuevo a recibir una nueva trama de comunicación: “Arranque … Dirección … Reconocimiento …Datos … Reconocimiento … {Datos … Reconocimiento} ….

de esta forma ocurrirá una condición de parada “STOP” habilitándose al pin SDA de nuevo a recibir una nueva trama de comunicación: “Arranque … Dirección … Reconocimiento …Datos … Reconocimiento … {Datos … Reconocimiento} …. iBOARD III. los circuitos integrados con tecnología I2C se han encerrado en un recuadro de color rojo. Una vez leído éste registro por parte del maestro. en la cual. Este dispositivo es un Figura 9.Mikroe. utilizaremos en general.. muestra una fotografía del sistema de desarrollo iBOARD III. estos bytes son almacenados en el registro SSPSR. Dispositivos I2C en el sistema de desarrollo iBOARD III La figura 9.7. Fuente: Tomado de la web: www. Sistema de desarrollo para microcontroladores PIC®. Recepción en modo maestro I2C para un PIC16F876. El segundo dispositivo es la memoria Eeprom modelo 24LC16B de capacidad 2KByte x 8bits. como fuente de información referida a la hora y fecha en nuestras aplicaciones.7. Dispositivos con capacidad de comunicación I2C incluidos en el sistema de desarrollo iBOARD III.8. La recepción de los datos termina cuando se coloca el bit SEN = 0 del registro SSPCON2. El primero dispositivo incluido es un reloj de tiempo real fabricado por la empresa Dallas Semiconductor™ modelo DS1307. el cual. 62 . lo cual.com 9. DS1307 24LC16B • Pines de conexión al BUS I2C Figura 9. Parada” completo reloj – cronómetro en tiempo real. automáticamente el maestro genera el bit de reconocimiento (ACK) al esclavo.8.• • El dispositivo esclavo comienza a enviar los bytes de datos uno a la vez. indica que el maestro está listo para recibir otro byte con información.

Comandos en alto nivel para el manejo del protocolo I2C BUSIN Comando para recibir datos desde un dispositivo con protocolo I2C. La declaración de pines para la comunicación I2C. incluye una memoria Eeprom modelo 24LC16B de 16 Kbits.9. Los pines 4 y 8 se utilizan para la alimentación de tensión. se realiza a través de las directivas: Selección del Pin SDA DECLARE SDA_PIN PORT . Byte de control y dirección requeridos para iniciar la comunicación con la memoria Eeprom del sistema de desarrollo iBOARD III.pin por defecto PORTA. mientras que el pin 7 es la habilitación de la protección a la escritura de la memoria Eeprom. En la figura anexa.OFF or 1 . La identificación del dispositivo queda definida tanto por el fabricante como por los bits de dirección por hardware. 2 Dirección : Es una variable o constante adicional (tipo byte o word) que especifica la dirección de comienzo de lectura del dispositivo I2C. [DatosEntrada {.0 or TRUE .1 Selección de la velocidad del Bus I2C DECLARE SLOW_BUS ON . iBOARD III. si no se especifica se tomará por defecto la dirección cero. PIN Puerto.OFF. Sintaxis: BUSIN Control. {Dirección}.0 Selección de la resistencia de Pullup pin SCL DECLARE BUS_SCL ON . los pines 5 y 6 son utilizados para la conexión al bus I2C. 2. Para realizar una lectura y/o escritura en los registros de la memoria 24LC16B se debe enviar un byte de control y otro de dirección como se muestra indicado en la Figura 9. se muestra la distribución de los pines de conexión. PIN Puerto.5 Vdc. Los Pines 1.5 y 5. Sintaxis: BUSOUT Control. La velocidad por defecto es 100 KHz El sistema de desarrollo iBOARD III.8. :Es una variable o constante (byte) que contiene los bits de identificación dirección del dispositivo I C. Figura 9.pin por defecto PORTA. Selección de la velocidad del BUS I2C cuando se utiliza el hardware DECLARE HBUS_BITRATE Constant 100. 400.9. y 3 se utilizan para determinar parte de la palabra de identificación del dispositivo (dirección por hardware). DatosSalida : Es una lista de variables con modificadores de formato que se transmiten como datos de salida. 1000 etc.0 Selección del Pin SCL DECLARE SCL_PIN PORT .9. 63 . Memoria Eeprom 24LC16B Control. DatosEntrada : Es una lista de variables con modificadores de formato que se reciben como datos de entrada. Sistema de desarrollo para microcontroladores PIC®. 1 . {Dirección}. dispuestos en arreglos de 2K x 8 bits para ser utilizada con un bus de comunicación I2C a un voltaje de operación entre 2. [DatosSalida] 9.9. DatosEntrada…}] BUSOUT Comando para transmitir datos desde un dispositivo con protocolo I2C.FALSE Elimina la necesidad de colocar una resistencia de Pullup en la línea SCL Por defecto la resistencia es requerida.

Dec Index.9. Main: For Index = 0 To 255 BusOut $A0. haga un programa que permita escribir y leer las primeras 256 localidades de la memoria Eeprom. Dec DatoLeido.bas Sistema de desarrollo para microcontroladores PIC®. Escribe las primeras 256 localizaciones de la memoria eeprom y muestra su contenido por el terminal . Fotografía de las conexiones entre el PIC16F876 y el Bus I2C del sistema de desarrollo iBOARD III._ " Valor Leído = ".10...10.bas Leer y escribir el contenido de una memoria Eeprom modelo 24LC16B. ----------------------------------------------------------------Device = 16F876 XTAL 20 Declare SDA_PIN PORTB.[DatoLeido] HRSOut "Eeprom[". Resultado de la ejecución del programa CAP_09_Ejemplo_01. También se deberá mostrar el resultado a través de IDE Serial comunicator a una velocidad de conexión de 2400 Baud.11.Index."]".. iBOARD III. Deberá al conectar el Bus I2C microcontrolador de la siguiente forma: PORTB<0> con SDA y PORTB<1> con SCL. 13 DelayMS 500 Next GoTo Main Figura 9.1 Dim Index Dim DatoLeido As Byte As Byte ' Asignación SDA pin ' Asignación SCL pin ' Variable uso general ' Variable uso general Figura 9.Index. ' ' ' ' ' CAP_09_Ejemplo_01.[Index] ' $A0 = dirección memoria eeprom DelayMS 5 ' Retardo escritura por fabricante Next For Index = 0 To 255 BusIn $A1. Ejemplo de utilización de una memoria Eeprom 24LC16B Utilizando el sistema de desarrollo iBOARD III.0 Declare SCL_PIN PORTB. 64 .

Reloj en tiempo Real DS1307 Un dispositivo muy utilizado con los microcontroladores es el reloj de tiempo real. La figura anexa.12.14 se puede observar el diagrama de conexiones del DS1307 en el sistema de desarrollo iBOARD III. los pines 1 y 2 son utilizados para la conexión de un cristal de referencia de 13. podrá observar como el reloj de tiempo real se incrementa en forma correcta. La figura 9.14. se encuentran codificados en formato BCD (Binario Codificado en Decimal). muestra la distribución de los registros internos del DS1307. haga un programa que permita configurar los registros internos del reloj de tiempo real DS1307 con fecha y hora de referencia.9. De esta forma. 9.12. Esquema de conexiones del DS1307 del sistema de desarrollo iBOARD III. muestra la distribución de los pines de conexión. muestra la secuencia de bytes de control y dirección para realizar una escritura y una lectura en los registros internos del DS1307.768KHz y los pines 5 y 6 son utilizados para la comunicación I2C. El reloj de tiempo real modelo DS1307. En total el DS1307 posee ocho registros con direcciones 00h a la 07h. de las cuales. Los Pines 3. Sistema de desarrollo para microcontroladores PIC®.11. mientras que en la Figura 9.13. Registros internos del reloj en tiempo real DS1307. Secuencia de Bytes para acceder los registros internos del DS1307. Puede repetir la configuración con un año no bisiesto para que observe la diferencia. es fabricado por Dallas Semiconductor™ y tiene la capacidad de comunicación a través del protocolo I2C. Figura 9. la última 07h se utiliza como registro de control.. Por ejemplo podrá utilizar un año bisiesto y ajustar el calendario a 28 de febrero y la hora a las 23:50.4 y 8 se utilizan para su alimentación de tensión. las primeras siete se utilizan para almacenar la información acerca del reloj . La figura 9.calendario.13.. Los registros internos del reloj en tiempo real DS1307. La identificación del dispositivo viene definida por el fabricante. es capaz de mantener en forma autónoma un conteo completo de Hora-Fecha incluso con compensación de año bisiesto. 65 . Ejemplo práctico con reloj de tiempo real DS1307 Utilizando el sistema de desarrollo iBOARD III. Figura 9. el cual. para realizar una lectura se debe enviar el valor $D1. Para realizar una escritura en los registros del DS1307 se debe enviar un byte de control con el valor $D0. iBOARD III. El Terminal BAT del RTC se deberá conectar a una batería de 3VDC ó a Tierra (si decide no usar la batería). Figura 9.12.

Horas Día Mes Año MOSTRAR_RTC: HRSOut "Hora = ". leer y escribir en los registros internos del RTC Reloj de Tiempo Real.13 HRSOut "Fecha = ".[Str RTC\7] Return ' ' ' ' ' ' ' ' Lee byte 0.[RTC[Index]] ' Lee registros Next ' del RTC 0. ":". DEC2 RTC[Ano].0....0.6 GoSub BCD2BIN Return Figura 9.13 Return BCD2BIN: For Index = 0 To 6 RTC[Index] = (RTC[Index]/16)*10 + RTC[Index] & $0F Next Return Dim RTC[7] Dim Index Main: GoSub RTC_INI GoSub FECHA_INI DelayMS 500 ' Vector almacenamiento ' Variable uso general ' Inicilizar el RTC ' Cargar Fecha inicial ' Retardo 500ms ' Leer registros RTC ' Mostrat registros RTC Loop: GoSub LEER_RTC GoSub MOSTRAR_RTC DelayMS 1000 GoTo Loop End RTC_INI: BusIn $D1. iBOARD III. DEC2 RTC[Hora].0 Declare SCL_PIN PORTB..[RTC[Seg]] BusOut $D0.. iniciales Ajusta los Min.13. DEC2 RTC[Dia]. DEC2 RTC[Minu]... ------------------------------------------------------------Device = 16F876 XTAL 20 Declare SDA_PIN PORTB..... RTC ' Pone 0 en bit CH ' Para Activar RTC Ajusta los Seg..bas Utilizando el IDE Serial Comunicator...' ' ' ' CAP_09_Ejemplo_02...0.. Min..[RTC[Seg] & $7F] Return FECHA_INI: RTC[Seg] = $50 RTC[Minu] = $59 RTC[Hora] = $23 RTC[Dia] = $28 RTC[Mes] = $02 RTC[Ano] = $08 BusOut $D0.1 Symbol Symbol Symbol Symbol Symbol Symbol Seg Minu Hora Dia Mes Ano = = = = = = 0 1 2 4 5 6 As Byte As Byte ' Asignación pin SDA ' Asignación pin SCL ' ' ' ' ' ' Registro Registro Registro Registro Registro Registro de de de de de de Seg.. DEC2 RTC[Seg].._ "/". 66 . modelo DS1307 ._ ":".. iniciales Ajusta la Hora inicial Ajusta el Día inicial Ajusta el Mes inicial Ajusta el Año inicial Escribe registros RTC LEER_RTC: For Index = 0 To 6 BusIn $D1.. Resultado de la ejecución del programa CAP_09_Ejemplo_02.Index. DEC2 RTC[Mes].bas Configurar. Sistema de desarrollo para microcontroladores PIC®..15... "/".

cada dispositivo 1-Wire® posee un oscilador interno que se sincroniza con el del maestro cada vez que en la línea de datos aparezca un flanco de bajada (Beta). se desarrolla según los siguientes pasos: (1) La Inicialización. Pulso de reset y presencia. El pulso de reset provee una forma limpia de iniciar las comunicaciones. de ésta manera la comunicación es realizada en forma “half duplex”. utilizando un único pin de E/S del microcontrolador. • • • Figura 10. 10. el diodo entra en conducción y carga al capacitor. pero. (4) Transferencia de bytes ó datos. Podemos señalar algunas características de éste bus: • • • • • Utiliza niveles de alimentación CMOS/TTL con un rango de operación que abarca desde 2. (2) Comandos y funciones de ROM. Sistema de desarrollo para microcontroladores PIC®.2 Voltios son consideradas un (1) lógico mientras que como un (0) lógico se interpreta cualquier voltaje menor o igual a 0. Una RED de dispositivos 1-Wire® está conformada por un maestro y uno o más esclavos que poseen un único pin de datos de tipo “open drain” .1. Dallas Semiconductor™ ha desarrollado una poderosa tecnología llamada 1-Wire®. Tanto el maestro como los esclavos transmiten información de forma bidireccional. Para ello. Las redes de dispositivos 1-Wire® pueden tener fácilmente una longitud desde 200 m y contener unos 100 dispositivos. cada circuito esclavo posee un rectificador de media onda y un capacitor. sólo en una dirección a la vez. Una de las características de la tecnología 1-Wire®. al que se conecta una resistencia de “Pull Up” anclada a +5VDC (nominal). Esto se puede observar a través de la Figura 10. es que cada dispositivo esclavo tiene una única e irrepetible identificación grabada en su memoria ROM al momento de su fabricación. (3) Comandos y funciones de control y memoria.8V hasta 6V. Todas las tensiones mayores que 2.CAPÍTULO 10 PROTOCOLO DE COMUNICACIÓN 1-WIRE® Introducción. Cuando el voltaje de la RED cae por debajo de la tensión del capacitor. ya que.8 V.2. permite realizar una comunicación serial asincrónica entre un dispositivo maestro y uno o varios dispositivos esclavos. ya que. con él se sincronizan todos los dispositivos esclavos presentes en el bus. Descripción del protocolo de comunicaciones 1-Wire® Podemos describir al protocolo 1-Wire® como una secuencia de transacciones de información. Inicialización de la red 1-Wire®.2. el diodo se polariza en inverso evitando que el capacitor se descargue. utiliza un sólo conductor más su retorno o tierra para efectuar las comunicaciones y la transmisión de energía entre un dispositivo maestro y múltiples esclavos. durante los períodos en los cuales no se efectúa ninguna comunicación. La transferencia de información es a 16. No se requiere del uso de una señal de reloj. La carga almacenada en el capacitor alimentará al circuito esclavo. La alimentación de los esclavos se puede hacer utilizando el voltaje propio del BUS. en esa condición. INICIALIZACIÓN Todas las comunicaciones en el bus 1-Wire® comienzan con una secuencia de un pulso de Reset y Presencia. El BUS 1-Wire®. la cual. la cual. Toda la información es leída o escrita comenzando por el bit menos significativo (LSB). iBOARD III. Un Reset es un pulso que genera el maestro al colocar la línea de datos en estado lógico bajo por unos 480 µs.1. Figura 10.3 Kbps en modo “Standard” y hasta a 142 Kbps en modo “overdrive”. Esquema de conexión entre un maestro PIC16F876 y varios esclavos en una RED de comunicaciones 1-Wire®. 67 . la línea de datos se encuentra en estado alto debido a la resistencia de “Pull Up”.

muestra el proceso de lectura de un “Slot” típico que produce un microcontrolador PIC16F876 actuando como maestro 1Wire®. Cada dispositivo define su propio conjunto de comandos. La implementación hecha por éstas funciones.4. el maestro produce un pulso de entre 1 µs y 15 µs de duración. se utiliza el comando: OWrite Pin. se utiliza el comando: ORead Pin. lectura y utilización de la dirección de 64 bits que identifica a esclavos.. el Basic® PROTON® incluye dos comandos que permiten realizar la lectura y la escritura de información en el bus. Al momento de efectuar la escritura de un bit en el bus ocurre algo similar. Cuando el maestro lee información del bus. constante o expresión que indica el tipo de transferencia de información. selecciona el modo de transferencia en bytes ó bits y define la velocidad de comunicación a utilizar. 10. Los comandos de ROM son comunes a todos los dispositivos 1-Wire® y se relacionan con la búsqueda. muestra los comandos de ROM utilizados con los dispositivos 1-Wire®. se puede enviar un comando de ROM. entre otros. Modo. Secuencia de lectura y escritura de bits en el Bus 1-Wire®. 68 . iniciar la medición de una temperatura o manipular el estado de un bit de salida. [DatoEntrada] Para efectuar una escritura en el Bus 1-Wire®. Comandos de ROM utilizados por los dispositivos 1-Wire®. El estado lógico de la línea en ese momento. modo normal o modo de alta velocidad. Para efectuar una lectura del Bus 1-Wire®.2. debe forzar la línea de datos a estado bajo durante al menos 1 µs y esperar unos 15 µs para entonces leer el estado de la misma. leer memorias de “scratchpad”. [DatoSalida] • • COMANDOS Y FUNCIONES DE CONTROL Y MEMORIA Son funciones propias del dispositivo 1-Wire®. TRANSFERENCIA DE DATOS La lectura y escritura de datos en el bus 1-Wire® se hace por medio de “Slots”. controlar el inicio de la conversión de un ADC. Este bit deberá permanecer en el bus al menos 60 µs. Este parámetro controla la ubicación de los pulsos de reset. la generación de estos es responsabilidad del maestro. Figura 10. Pin : Variable. La Figura 10.4. para luego colocar en el bus al bit que se desea transmitir.COMANDOS Y FUNCIONES DE ROM Una vez que el PIC16F876 recibe el pulso de presencia de los dispositivos esclavos. estará determinado por el dispositivo esclavo.3. Incluyen comandos para leer/escribir en localidades de memoria. Implementación del maestro 1-Wire® con el PIC16F876 Para el manejo del protocolo 1-Wire®. La figura 10. Figura 10. tiene las siguientes características: La velocidad de transmisión de datos es aproximadamente de 20 Kbps en modo normal. el PIC16F876. iBOARD III. Sistema de desarrollo para microcontroladores PIC®. constante o expresión que especifica cual pin de E/S será usado para la comunicación 1-Wire®.3. Modo. en este caso.. El PIC16F876 sólo puede trabajar como dispositivo maestro y se permite el uso de todos los modificadores de formato. Modo: Variable.

3.6.. los dispositivos esclavos pueden interconectarse en forma secuencial y/o a través de ramificaciones. Diferentes topologías de interconexión entre dispositivos en una RED 1-Wire®. Topologías de conexión entre dispositivos en una RED 1-Wire® La figura 10. iBOARD III. Esta topología limita la cantidad de dispositivos esclavos en comparación con las anteriores. permite la conexión de ramas a través de un punto común denominado nodo de conexión. incrementa la capacitancia equivalente en el punto central de conexión al estar las ramas conectadas en paralelo. Por último. En la práctica. En ellas. Diferentes modos de transferencia de información en la RED 1-Wire®. • DatoSalida: Variable de salida o arreglo de variables.7.. se permite en este tipo de topología la conexión sólo de un dispositivo maestro con un dispositivo esclavo. en la cual.5. Sistema de desarrollo para microcontroladores PIC®. en la práctica es la más utilizada. 10. es la más simple de todas. muestra las diferentes topologías de interconexión entre dispositivos en una RED 1-Wire®. La topología exclusiva también denominada 1:1. incluso cada pin del microcontrolador puede implementar cualquiera de las topologías anteriormente mencionadas con un sólo dispositivo esclavo ó con muchos de ellos conectados en forma simultánea. 69 . 200 metros. Figura 10. Conexión entre el PIC16F876 y los dispositivos esclavos 10. esto elimina la necesidad de conocer a priori el serial del dispositivo. Figura 10. Esto se puede observar el la figura 10. la topología tipo estrella. se han conectado dos dispositivos esclavos 1-Wire® a través del pin PORTB<1>. En la práctica. se puede utilizar cualquier pin de entrada – salida del microcontrolador para efectuar la conexión a dispositivos esclavos 1-Wire®. el microcontrolador puede acceder a la memoria del dispositivo esclavo a través de la función de ROM ($CC) Skip ROM. A través del modificador de formato se indica como será enviada la información. ya que. es mucho más fácil manejar un sólo dispositivo esclavo por cada pin del microcontrolador. la cual. A través del modificador de formato se indica donde y como será almacenada la información entrante. Es muy utilizada para la medición de parámetros en dispositivos esclavos tipo “stand alone” como por ejemplo: los dispositivos iButton® de Dallas Semiconductor™.• DatoEntrada: Variable de entrada o arreglo de variables. sin embargo. Como hay uno sólo dispositivo en la línea ó pin de conexión.4. La topología lineal y ramificada extienden el alcance de la RED 1-Wire® hasta una distancia de aprox. La única consideración que hay que tener es la colocación de una resistencia de “Pull Up” generalmente de valor 2 KOhm.6.

6. Conexión de dispositivos esclavos 1-Wire® a un puerto de E/S del microcontrolador PIC16F876. Figura 10.5. En la figura anexa.0. que sólo necesitan dos terminales de conexión. etc.7. es por ello. EEPROM. deberá estar configurado para una velocidad de conexión serial de 2400 Baud. relojes de tiempo real. iBOARD III. Por esta razón se hará un primer ejemplo de aplicación utilizando este tipo de dispositivo esclavo 1-Wire®. Ejemplo de aplicación. uno para datos y otro para la referencia o tierra. 10. La interfaz de comunicaciones utilizada en los iButtons® es el protocolo 1-Wire® de Dallas Semiconductor™. encriptadores de información. Existen iButtons® que contienen únicamente un número de identificación. sensores y de registradores (loggers) temperatura. ascensores del edificio y/o puertas de entrada principal.bas ' Leer el serial de un dispositivo 1-Wire ' --------------------------------------------------------Device = 16F876 XTAL 20 Symbol DQ = PORTB. Leer_Serial: OWrite DQ. Se recomienda no utilizar el pin RB0. debido a que este punto comparte una conexión 1-Wire® con un DS2409 que veremos en el capítulo 11. Lectura del serial de un iButton® 1-Wire® El siguiente programa codificado en Basic® PROTON® lee el serial de un dispositivo esclavo 1-Wire® y lo muestra a través del IDE Serial Comunicator.1-Wire® ENCONTRADO.En la actualidad se ha estandarizado el iButton® con memoria Eeprom en las aplicaciones de control de acceso a áreas restringidas. control de acceso a instalaciones comerciales e incluso control de acceso para edificios.. leer Serial For Index = 0 To 7 ORead DQ. NVRAM).1 Dim Index As Byte Dim SERIAL[8] As Byte Main: GoSub Leer_Serial GoSub Mostrar DelayMS 1000 GoTo Main End ' Pin de conexión 1-Wire® ' Variable de uso general ' Arreglo almacena serial ' Rutina para leer el serial ' Rutina para mostrar serial 10. La energía requerida para el funcionamiento del microcircuito es tomada del propio conductor de datos en forma parásita. ' CAP_10_Ejemplo_01. Probablemente usted sin saberlo. memorias (EPROM.13 Return Sistema de desarrollo para microcontroladores PIC®. tiene un iButton® para acceder a su vivienda.[$33] ' Read ROM. convertidores analógico/digital. El pin de conexión a utilizar por el microcontrolador será: PORTB<1>.13 For Index = 7 To 0 Step -1 HRSOut HEX2 SERIAL[Index] Next HRSOut 13.1. el cual. Los iButton® 1-Wire® Un iButton es un circuito integrado encerrado en un envoltorio de acero inoxidable de 16 mm de diámetro más parecido a una batería que a un micro chip. se observan dos tipos diferentes de iButton®.". 70 .13 HRSOut "------------------------------------".[SERIAL[Index]] Next Return Mostrar: HRSOut "SERIAL DEL DISP.

Este procedimiento se le conoce como verificación de paridad y permite encontrar errores que ocurren en un bit. correspondientes al serial del dispositivo y el código de la familia a la que pertenece el dispositivo. Los errores detectables por el CRC8 implementado por Dallas Semiconductors™ son: • • • • Cualquier número impar de errores sobre los 64 bits transmitidos. es necesario verificar la posible existencia de errores que pudieran ocurrir durante la comunicación. es llamada repetidas veces a medida que se introducen los bytes hasta obtener el valor definitivo del CRC. Resultado de la ejecución del programa CAP_10_Ejemplo_01. muestra un iButton® típico de Dallas Semiconductor™. pero no es confiable cuando cambia más de un bit dentro del byte.. es por medio de una tabla de 256 bytes. Este método es muy sencillo. La gran mayoría de los errores de más de 8 bits incorrectos. si el CRC es de 4 bits se denominará CRC4.El algoritmo utilizado para el cálculo de CRC de Dallas Semiconductor™ (DOW CRC). cuyo resultado se incluye en la identificación de los dispositivos 1-Wire®.7. 10. la cual.bas Lectura del serial de un dispositivo 1-Wire®. 8 bits (1 bytes) de CRC y 8 bits (1 bytes) de la familia del dispositivo. Uno de los más simples consiste en añadir un bit extra a cada byte transmitido de modo que el número de unos (1) contenidos en el paquete de 9 bits siempre sea par o impar. iBOARD III. es un número de cierta cantidad de bits que contiene el resultado de la aplicación de una expresión matemática al mencionado conjunto de datos.9. siguiendo el esquema de la figura 10.9. se pueden observar claramente el serial de 64 bits del dispositivo compuesto de: 48 bits (6 bytes) del serial único.10. El cálculo del CRC8 puede hacerse de varias formas. identificación de errores en la RED 1-Wire® Cuando se transmite información en forma serial. Cálculo del CRC-8. Sistema de desarrollo para microcontroladores PIC®. etc. Este CRC es de 8 bits y se calcula introduciendo los primeros 56 bits. Figura 10. Figura 10. Algoritmo para el cálculo del CRC8 utilizado por Dallas Semiconductor™. pero presenta el inconveniente de requerir el uso de 256 bytes de la memoria del microcontrolador. Todos los errores de dos bits que se presenten en la ID de 64 bits. si es de 16 bits será CRC16. La figura 10. Así.8. El CRC de un conjunto de datos. Cuando se implementa por software. si es de 8 bits se llamará CRC8. Cualquier grupo de errores de hasta 8 bits incorrectos. en la cual. una forma simple de hacerlo. Uno de los mecanismos de detección de errores más eficientes es el Chequeo de Redundancia Cíclica (del inglés Cyclic Redundancy Check) conocido por sus iniciales CRC. La primera de ellas es evidentemente por hardware. Existen varios métodos para efectuar este chequeo. 71 . La figura presenta una fotografía frontal del dispositivo.

13 HRSin HEX2 ROMCODE[Indice] Next HRSOut "ROM CODE = " For Indice = 0 To 6 HRSOut HEX2 ROMCODE[Indice].10. El programa le solicitará a través del IDE Serial Comunicator que introduzca el serial del dispositivo 1-Wire®.9. Deberá presionar el “Reset” del microcontrolador para iniciar la comunicación. iBOARD III.") = ".0 CRC = CRC >> 1 CRC. la familia y el programa le devolverá el valor del CRC8 para este dispositivo en particular. " " Next For ByteAct = 6 To 0 Step . Fotografía frontal de un iButton® de Dallas Semiconductor™.".13 For Indice = 0 To 6 HRSOut "ROM CODE (".."CRC8 = ".3 ^ IBit CRC.0 ^ CRCt.Dec Indice. Codifique el programa según la codificación mostrada a continuación y ejecute el IDE Serial Comunicator.11.1 CRCt = ROMCODE[ByteAct] GoSub CRCCalc Next HRSOut 13. ' CAP_10_Ejemplo_02.3 = CRC. Usted deberá introducir el serial del dispositivo.2 = CRC.bas Cálculo de CRC8 de un iButton® 1-Wire®. HEX CRC. Main: CRC = 0 HRSOut "INTRODUZCA EL SERIAL Y LA FAMILIA.2 ^ IBit CRC.. Ejemplo del cálculo del CRC8 El siguiente programa codificado en Basic® PROTON® permite calcular el CRC8 del iButton® que se muestra en la Figura 10. Realmente el ejemplo ilustra la forma correcta de codificar el algoritmo de CRC8 mostrado en a Figura 10. Resultado de la ejecución del programa CAP_10_Ejemplo_02. 10.7 = IBit CRCt = CRCt >> 1 Next Return Figura 10. Sistema de desarrollo para microcontroladores PIC®. 72 .10.8.bas ' Cálculo del CRC8 de un iButton 1-Wire ' --------------------------------------------------------Device = 16F876 XTAL 20 Dim Indice Dim ROMCODE[8] Dim IBit Dim CRC Dim CRCt Dim ByteAct Clear As As As As As As Byte Byte Byte Byte Byte Byte ' Variable de uso general ' Arreglo almacena serial ' ' Contiene CRC8 Calculado Figura 10. 13 DelayMS 5000 GoTo Main CRCCalc: For Indice = 0 To 7 IBit = CRC.Cada iButton® viene estampado de fábrica con ésta numeración y por supuesto cada iButton® tendrá un serial de identificación único.

13. la memoria de trabajo intermedia “scrathpad”. los siguientes bytes 5. Figura 10. ajustes que el usuario podrá escribir. Fuente: Hoja de especificaciones del DS18B20.. el registro de configuración de la memoria y un módulo para la generación del CRC8. Los primeros dos registros Byte 0 y 1. se muestra un diagrama de bloques funcionales internos al DS18B20.14: Registros internos del sensor de temperatura DS18B20. se utilizan para almacenar el valor de disparo por alarmas de baja y alta temperatura.13. El serial del dispositivo de 64 bits únicos.9. el bloque sensor de temperatura. iBOARD III.11 y 12 bits. tiene una resolución programable de 9. En la Figura 10. se observan los diferentes tipos de encapsulados del dispositivo. La resistencia de Pull Up puede colocarse entre 2 KOhm y 4. El byte 4. Figura 10. es el valor de aplicar el algoritmo CRC8 de los bytes 0 al 7. Diagrama de conexiones entre un maestro PIC16F876 y un DS18B20 esclavo.7 KOhm. se utilizan para almacenar el valor de temperatura leída por el sensor. La memoria “scratchpad” del DS18B20. de izquierda a derecha podemos mencionar que a la entrada del dispositivo se encuentran los circuitos de alimentación tanto por fuente externa como por conexión parásita. lo cual.10. Fuente: Hoja de especificaciones del DS18B20. Figura 10. Los registros 2 y 3. Sistema de desarrollo para microcontroladores PIC®. En la gráfica anexa.12. es el byte de configuración del dispositivo. El DS18B20. la lógica de control de la memoria. El termómetro digital DS18B20 es un dispositivo de alta tecnología fabricado por Dallas Maxim™ para la medición de la temperatura. los bloque de ajuste de alarmas.12.10. contiene 9 registros de 8 bits cada uno. 73 . Fuente: Hoja de especificaciones del DS18B20. siendo el más común de ellos el encapsulado tipo TO-92. Diagrama de bloques funcionales del DS18B20. puede utilizar como referencia el diagrama mostrado en la Figura 10.6 y 7 están reservados para uso del fabricante y por último el byte 8. permite obtener temperaturas con una exactitud de hasta 1/8 de grado centígrado. Termómetro Digital modelo DS18B20 Para realizar la conexión entre el PIC16F876 y el DS18B20.

sin embargo el tiempo de conversión de la temperatura se incrementa significativamente.17. Fuente: Hoja de especificaciones del DS18B20.15: Registro de configuración del DS18B20. es el encargado de seleccionar la resolución en bits que se utilizará para la determinación de la temperatura. Figura 10. Los comando de memoria disponibles en el DS18B20. ' CAP_10_Ejemplo_03. por ejemplo. La figura 10. copiar los registros de alarmas de la memoria de trabajo a la memoria Eeprom y lectura del status de energía relacionada a la alimentación del dispositivo.El registro de configuración.15. iBOARD III. Sistema de desarrollo para microcontroladores PIC®.. Son entonces necesaria las funciones de ROM y memoria para acceder a sus registros internos. El DS18B20 es un dispositivo 1-Wire® que trabaja como se explicó anteriormente bajo el protocolo de comunicaciones 1-Wire®. lectura y escritura de la memoria de trabajo. existen comandos para la conversión de la temperatura.. se presentan en la Figura 10.10. Luego. Fuente: Hoja de especificaciones del DS18B20. el DS18B20 quedará habilitado para la recepción de los comandos de memoria relacionados con la configuración. mejor es la precisión. 74 .17: Comandos de memoria utilizados por el DS18B20. lectura y escritura de sus registros. Figura 10. Ejemplo de lectura de temperatura con un DS18B20 El siguiente programa codificado en Basic® PROTON® permite leer la temperatura de un termómetro digital DS18B20 y presentarla a través del IDE Serial Comunicator.16: Formato binario de la temperatura en un DS18B20. mientras más es el número de bits utilizados. 10. temperatura Variable alm. ' ------------------------------------------------------Device = 16F876 XTAL 20 Symbol DQ = PORTB.1 Dim Index As Dim ROMCODE[8] As Dim TEMPERATURA As Dim FL_TEMP As Byte Byte Word Float ' ' ' ' ' Pin de conexión 1-Wire® Variable de uso general Arreglo almacena el serial Variable alm. de un “reset y presencia” se puede direccionar directamente al termómetro digital a través del comando de ROM ($CC) Skip ROM. De esta forma. temperatura Figura 10.bas ' Lectura de la temperatura de un termómetro DS18B20. muestra una tabla de selección de las diferentes resoluciones.

[$CC. Figura 10.2 KOhm. se observa la fotografía del montaje electrónico realizado para el ejemplo CAP_10_Ejemplo_03.LowByte.$44] ' Comando Convertir Temp High DQ ' DQ en alto por 750 ms PAUSE 750 OWrite DQ. ya que.Main: GoSub Conversion GoSub Mostrar DelayMS 1000 GoTo Main End ' Rutina convertir Temperatura ' Rutina mostrar los valores Conversion: OWrite DQ. Resultado de la ejecución del programa CAP_10_Ejemplo_03. Sistema de desarrollo para microcontroladores PIC®.1.bas Medición de la temperatura a través de un DS18B20.[TEMPERATURA.13 Return En la Figura 10.HighByte] Return Mostrar: FL_TEMP = TEMPERATURA /16 HRSOut "Temp oC = ".19.0. iBOARD III. DEC2 FL_TEMP.18.18.bas Medición de la temperatura a través de un DS18B20. Figura 10.$BE] ' Comando leer SCRATCHPAD. 75 . Por otra parte la resistencia de Pull Up utilizada fue de 2.1.TEMPERATURA. el terminal 1 (GND) y el terminal 3 (Vcc) del DS18B20 están conectador ambos a tierra (GND).[$CC. Note que el esquema de alimentación adoptado es del tipo parásito. ORead DQ. Fotografía del montaje realizado para el programa CAP_10_Ejemplo_03.

Sistema de desarrollo para microcontroladores PIC®. se muestran en la tabla de la figura 10.. deberá leer estos dos bits. Las combinaciones posibles de estos dos bits. podríamos leer manualmente los seriales de identificación de todos los esclavos a conectar en el bus. “1-Wire Search Algorithm”. utilizando como maestro el PIC16F876. el maestro escribirá un bit en el bus y cada esclavo comparará este bit con el que él previamente había transmitido. 76 . En el caso de las dos combinaciones centrales de la tabla mostrada en la figura 10.21. Si la posición de la colisión actual es mayor que la anterior deberá escogerse un cero. todos los dispositivos que emplean la tecnología 1Wire®. iBOARD III. sólo saldrá al producirse un nuevo reset. quien luego deberá enviar un comando Search ROM. en el cual. Esta nota de aplicación también se encuentra en el CD entregado a usted en el directorio \10 Manuales\AN187. el proceso de búsqueda continúa y al momento de presentarse otra colisión se compara el bit en el que ésta ocurre con la posición del cero del párrafo anterior. si coinciden. Esto hará que los dispositivos cuya ID fuese 1 en la posición donde se presentó la colisión.10. En ese momento. El proceso se repetirá hasta que se completen los 64 bits de identificación en cada dispositivo esclavo. 2002. Buscando dispositivos en el Bus 1-Wire® La búsqueda de dispositivos en una red 1-Wire® deberá comenzar un “RESET” realizado por el maestro. El maestro. Algoritmo de Search ROM Cuando existe un sólo dispositivo conectado al bus 1-Wire® puede omitirse el direccionamiento mediante el uso del comando SKIP ROM. Previendo esta situación. Posteriormente. leeríamos su identificación (serial) para luego almacenarla en una memoria EEprom externa o en la memoria EEprom del PIC16F876. El resultado deberá mostrarlo en la pantalla del PC a través del IDE Serial Comunicator. El bit que se envía al bus se almacena en la variable temporal de la ID. estarán disponibles a través de la página http://www.roso-control. Application Note 187.pdf Ejemplo de Aplicación Utilizando el sistema de desarrollo iBOARD III. Quizás.com Figura 10.20: Combinaciones posibles al efectuar el un “ Search ROM”. La figura 10. El maestro PIC16F876 podrá enviar a la RED 1-Wire® el comando Match ROM ($55) seguido del serial de identificación del dispositivo en particular con el cual desee comunicarse. cada dispositivo esclavo enviará al bus el primer bit de su identificación. lo almacenará en una variable temporal donde al final del proceso se obtendrán los 64 bits de la ID de uno de los dispositivos Cuando se produce una primera discrepancia (se reciben dos ceros consecutivos). de esta forma.20. Mar 28. ¿Qué bit transmitió el maestro?. seguido del complemento del mismo. se produjo la colisión. del cual.11. muestra el diagrama de bloques del algoritmo Search ROM. el cual. el dispositivo esclavo elegido quedará activo y los demás dispositivos 1-Wire® en la RED quedarán fuera de línea hasta que se produzca en la RED una condición de RESET. pág.20 (01 y 10) el maestro tomará el bit recibido (ID Bit). A continuación. se deberá repetir el procedimiento con todos los demás dispositivos hasta llegar al último. En caso de que los bits sean diferentes. Pero. Una vez identificado cada dispositivo y su serial. soportan un comando de ROM llamado Search ROM. 2002. realice un programa que implemente el algoritmo Search ROM (mostrado en la Figura 10. mientras que. Pero. dejen de participar en la búsqueda. Fuente: 1-Wire® Search Algorithm. el esclavo trasmitirá el siguiente bit de su ID seguido de su complemento. se tendría que colocar cada dispositivo sólo en el bus y aplicar los conceptos aprendidos con los ejemplos de aplicación vistos. También puede utilizarse el comando READ ROM para leer la identificación del esclavo y direccionarlo. Con el comando READ ROM. El resultado y la codificación del mismo. el maestro colocará un 0 en el bus y almacenará el bit. Si ambos bits coinciden. Si desea mayor información sobre este algoritmo podrá consultar la nota de aplicación del fabricante Dallas Semiconductor™ AN187. permite al maestro identificar los seriales independientes de cada dispositivo conectado a la RED en forma automática. Para ello.21) sobre la red 1-Wire®. el esclavo entrará en estado de espera. entonces se enviará un 1 por el bus (ID bit se toma igual a 1). Este programa se dejará como actividad propuesta a futuro. Ahora bien. ¿Qué hacer cuando existe más de un dispositivo en la RED 1-Wire® al mismo tiempo?. si es menor debe repetirse el camino tomado en la búsqueda pasada para ese mismo bit.

Diagrama de flujo del algoritmo de “ Search ROM”.Figura 10. 77 . Sistema de desarrollo para microcontroladores PIC®. iBOARD III.21.

1.5 KHz por dos pines de entrada – salida disponibles.com Haciendo referencia al manual del usuario del MoBoStamp-pe (2006. el cual. los cuales.parallax. Diagrama esquemático de conexiones del coprocesador en el sistema de desarrollo iBOARD III. En la Figura 11.6 MHz. se muestra el diagrama de conexiones electrónicas asociadas al coprocesador. se puede hacer a través del microcontrolador PIC16F876 PORTB<0> y el multiplexor 1-Wire® DS2409 (U6). viene incluido en una tarjeta de desarrollo denominada MOBOStamp-pe Motherboard (#28300) de la empresa Parallax.parallax. el fabricante define: El coprocesador está en capacidad de ejecutar 9 MIPS (millones de instrucciones por segundo) cuando es alimentado por la señal de reloj interna a una frecuencia de 9. En el sistema iBOARD III se utiliza el firmware como viene de fábrica sin modificaciones a objeto de dejar intacta la programación del fabricante. puede ser escrita y leída Figura 11. El firmware ó programa cargado en el microcontrolador ATTiny13s es propiedad de la empresa Parallax. en la misma se observa la existencia de otros componentes 1Wire® tales como multiplexores. A la fecha de escritura de este manual. También se puede acceder utilizando el terminal en bornera o punto de conexión en regleta OWI y el multiplexor 1-Wire® DS2409 (U7). podrá consultarla a través de la página del fabricante www. un importante fabricante de microcontroladores. por ahora. www.1. una RED de sistemas de desarrollo iBOARD III. la cual.com. hasta que el fabricante termine el software de comunicación que permitirá implementar. Acceder al coprocesador. explicaremos en detalle más adelante. 78 . Dentro de las funciones preprogramadas para el coprocesador se encuentran: • • • • • • • Entradas digitales para cada uno de los cuatro pines de E/S disponibles Salidas digitales para cada uno de los cuatro pines de E/S disponibles Contador de frecuencia hasta 1 MHz para cada uno de los cuatro pines de entrada . El tipo de PWM y la frecuencia pueden ser configuradas a tiempo de ejecución Conversión Analógica a Digital ADC de 10 bits de resolución por dos pines de entrada – salida disponibles Comparador analógico de tensión por tres pines de entrada – salida disponibles Memoria RAM de 32 registros de 8 bits. el fabricante de ésta tarjeta también pone a la disposición el código fuente del firmware para que el usuario pueda implementar sus propias funciones ó modificaciones de las existentes. inc.13) y el manual AVR Firmware: GPIO. probablemente sea una opción que no esté incluida en el sistema de desarrollo iBOARD III. el fabricante ha adelantado en un 60% el software de comunicación en RED denominado OPC™ View.salida disponibles Generación de señales PWM de hasta 37.09. versión 3. Inicialmente el microcontrolador ATMEL™ ATTiny13s que de ahora en adelante llamaremos coprocesador. El sistema de desarrollo iBOARD III incluye un poderoso microcontrolador fabricado por ATMEL™ el ATTiny13s.CAPÍTULO 11 EL COPROCESADOR ATMEL™ ATTiny13s Introducción. iBOARD III. Cualquier referencia adicional sobre este coprocesador. viene totalmente preprogramado para realizar funciones de coprocesamiento. a través del computador.exe. nos concentraremos en el coprocesador. aplicaciones y accesorios para microcontroladores a nivel mundial. Sistema de desarrollo para microcontroladores PIC®. Este último integrado.

Para tener acceso al coprocesador, es necesario pre-configurar el integrado DS2409 multiplexor 1-Wire® (U6) a fin de que este multiplexor haga la conexión física y eléctrica del pin PORTB<0> a través del pin 3 del DS2409 (MAN) al pin de entrada – salida pin 7 (IO) del coprocesador. Como el protocolo de comunicación utilizado es el 1-Wire®, se anexa un listado codificado en Basic® PROTON® que deberá colocar en su programa a fin de poder tener acceso al coprocesador. OWrite OWP,1,[$CC, $CC, $FF] ORead OWP,0,[RESP, FED] ' Skip ROM, Seleccionar Aux ' Respuesta, feedback

OWrite OWP,0,[$DD] ORead OWP,0,[I,J,K] HRSOut "Device: ",I,J," Versión: ", Dec K,13 DelayMS 1000 GoTo Main

Estos comandos son necesarios (obligatorios) para tener acceso al coprocesador. Más adelante se hará una explicación detallada de los mismos. Por ahora sólo nos concentraremos en colocar éste código en el programa principal. A continuación se presenta un programa que permite visualizar el tipo de dispositivo y la versión del firmware del coprocesador ATMEL™ incluido en la iBOARD III.
CAP_11_Ejemplo_01.bas ' Programa para identificar el coprocesador ATMEL del sistema ' de desarrollo iBOARD III. ' -------------------------------------------------------------Device 16F876 XTAL 20 Dim I As Byte Dim J As Byte Dim K As Byte Dim RESP As Byte Dim FED As Byte Symbol OWP = PORTB.0 DelayMS 10 ' ' ' ' ' Var. Var. Var. Var. Var. uso uso uso uso uso general general general general general para identificación para identificación para identificación (Obligatoria) (Obligatoria)

' Puerto.pin conexión a la iBOARD III ' Retardo inicial requerido por el ' coprocesador ATMEL.

' PROGRAMA PRINCIPAL -----------------------------------------Main: ' Instrucciones requeridas para configurar el multiplexor ' 1-Wire del sistema iBAOR III. Integrado (U6) OWrite OWP,1,[$CC, $CC, $FF] ' Skip ROM, Seleccionar Aux (U6) ORead OWP,0,[RESP, FED] ' Respuesta, feedback ' ' ' ' ' De Aquí en adelante ya se trabajará directamente con el coprocesador ATMEL. Primero se envía el comando $DD para indicarle que queremos conocer su identificación. El co_ procesador devolverá tres (3) bytes de información: I,J se refieren al tipo de dispositivo, K se ref. versión Figura 11.2. Resultado de la ejecución del programa CAP_11_Ejemplo_01.bas.

11.1. El coprocesador utilizado como Salidas Digitales El proceso para configurar y activar los pines de salida del coprocesador es sencillo. Se realiza la configuración a través del envío de un byte que contiene la información de los pines que se activarán como salidas digitales y además el valor que tomarán estos pines de salida cero (0) lógico ó uno (1) lógico.

79

El formato es el siguiente: 0 Si Si Si Si A1 A1 A1 A1 A0 A0 A0 A0 0 = = = = 00; 01; 10; 11; A1 entonces entonces entonces entonces A0 se se se se activa activa activa activa 0 como como como como 1 0 al al al al N pin pin pin pin CP0 CP1 CP2 CP3

salida salida salida salida

Si N = 0; El valor de salida de la salida(s) activada(s) será = 0 lógico Si N = 1; El valor de salida de la salida(s) activada(s) será = 1 lógico
' ' ' ' ' ' CAP_11_Ejemplo_02.bas Programa para configurar al coprocesador como salida digital y en_ cender - apagar un led conectado al pin CP0 del coprocesador. Pa_ ra ello habrá que conectar un diodo led entre el pin CP0 de la iBOARD III en serie con una resistencia de 220 ohm a tierra. -----------------------------------------------------------------Device 16F876 XTAL 20 Dim RESP As Byte ' Var. uso general (Obligatoria) Dim FED As Byte ' Var. uso general (Obligatoria) Symbol OWP = PORTB.0 ' Puerto.pin conexión a la iBOARD III DelayMS 10 ' Retardo inicial requerido por el ' coprocesador ATMEL. Main: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III. Integrado (U6). (Obligatorio) ........ OWrite OWP,1,[$CC, $CC, $FF] ' Skip ROM, Seleccionar Aux (U6) ORead OWP,0,[RESP, FED] ' Respuesta, feedback ' ' ' ' ' ' ' De Aquí en adelante ya se trabajará directamente con el coproce_ sador ATMEL. Primero se envía el comando $04 para colocar un cero lógico (0 Vdc) en el pin CP0, esto apagará el LED conectado en este pin. Después de una pausa de 250 ms. Se enviará el coman do $05 para colocar un lógico (5Vdc) en el pin CP0,esto encederá el LED conectado en este pin. Luego de otro retardo de 250 ms,el programa volverá a ejecutarse en forma cíclica.

Figura 11.3. Resultado de la ejecución del programa CAP_11_Ejemplo_02.bas.

Nota: Los 4 pines disponibles del coprocesador (CP0, CP1, CP2 y CP3) se pueden configurar como salidas y tomar valores arbitrarios 0 ó 1. Si se desea que todas las salidas sean de valor cero lógico (0Vdc), se le debe enviar al coprocesador los bytes de configuración: 0 $04; $14; $24; $34;
80

Loop: OWrite OWP,0,[$04] DelayMS 250 OWrite OWP,0,[$05] DelayMS 250 GoTo Loop End

0 para para para para

A1 activar activar activar activar y y y y

A0 poner poner poner poner a a a a

0 cero cero cero cero la la la la

1 salida salida salida salida

0 al al al al pin pin pin pin

N CP0 CP1 CP2 CP3

Por el contrario, si se desea que todas las salidas tengan el valor uno lógico (5Vdc), se le debe enviar al coprocesador los bytes de configuración: 0 $05; $15; $25; $35; 0 para para para para A1 activar activar activar activar y y y y A0 poner poner poner poner a a a a 0 cero cero cero cero la la la la 1 salida salida salida salida 0 al al al al pin pin pin pin N CP0 CP1 CP2 CP3

' ' ' ' ' ' ' ' '

De Aquí en adelante ya se trabajará directamente con el coproce_ sador ATMEL. Primero se envía el comando $10 para configurar al pin CP1 como entrada analógica. Luego se lee el valor de ésta entrada y se almacena en la variable EstadoPin. Luego se pre_ gunta por el valor de la variable EstadoPin si es: . cero (0) se activa al pin CP0 como salida y se coloca a 0Vdc . uno (1) se activa al Pin CP0 como salida y se coloca a 5Vdc Luego de un retardo de 50 ms, el programa volverá a ejecutarse en forma cíclica. ' Se configura CP1 como entrada ' Se lee el valor del pin CP1 y su ' valor se almacena en EstadoPin. ' Si EstadoPin = 0 se apaga el LED ' Si EstadoPin = 1 se enciende LED ' Retardo 50 ms

Loop: OWrite OWP,0,[$10] ORead OWP,4,[EstadoPin] If EstadoPin = 0 Then OWrite OWP,0,[$04] Else OWrite OWP,0,[$05] EndIf DelayMS 50 GoTo Loop End

11.2. El coprocesador utilizado como Entradas Digitales El proceso para configurar y activar los pines de entrada del coprocesador, se realiza con el envío de un byte que contiene la información de los pines que se activarán como entradas digitales. El formato es el siguiente: 0 Si Si Si Si
' ' ' ' ' ' ' '

0 = = = = 00; 01; 10; 11;

A1 entonces entonces entonces entonces se se se se

A0 activa activa activa activa

0 como como como como

0

0 al al al al

0 pin pin pin pin CP0 CP1 CP2 CP3

A1 A1 A1 A1

A0 A0 A0 A0

entrada entrada entrada entrada

CAP_11_Ejemplo_03.bas Programa para configurar los pines del coprocesador. Pin CP0 como salida digital y el pin CP1 como entrada digital. El programa de_ berá funcionar de la siguiente forma. El pin CP0 deberá tomar el valor del pin de entrada CP1. Así, si conectamos un pulsador en el pin CP1 en configuración activa - alto, cada vez que este sea pre_ sionado deberá encender el LED conectado al pin CP0. -----------------------------------------------------------------Device 16F876 XTAL 20 Dim RESP As Byte ' Var. uso general (Obligatoria) Dim FED As Byte ' Var. uso general (Obligatoria) Dim EstadoPin As Bit ' Var. uso general estado del pin Symbol OWP = PORTB.0 ' Puerto.pin conexión a la iBOARD III DelayMS 10 ' Retardo inicial requerido por el ' coprocesador ATMEL.

Main: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III. Integrado (U6). (Obligatorio) ........ OWrite OWP,1,[$CC, $CC, $FF] ' Skip ROM, Seleccionar Aux (U6) ORead OWP,0,[RESP, FED] ' Respuesta, feedback 81 Figura 11.4. Resultado de la ejecución del programa CAP_11_Ejemplo_03.bas.

En ocasiones es necesario colocar a un pin de entrada simplemente en tres estados (Alta impedancia). Esto lo podrá hacer enviando el mismo byte de configuración como si el pin fuera una entrada, pero con la diferencia de usar el modo de comunicación 1-Wire® (2). Por ejemplo, si se desea configurar el pin CP1 como tres estados, se deberá enviar la siguiente instrucción: OWrite OWP,2,[$10] ' Se configura CP1 como tres estados

A3..A0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Frecuencia (Hz) 37500,oo 18823,53 4687,50 2352,94 585,94 294,12 146,48 73,52 36,62 18,38

Codificación OWrite OWP,0,[$F0] OWrite OWP,0,[$F1] OWrite OWP,0,[$F2] OWrite OWP,0,[$F3] OWrite OWP,0,[$F4] OWrite OWP,0,[$F5] OWrite OWP,0,[$F6] OWrite OWP,0,[$F7] OWrite OWP,0,[$F8] OWrite OWP,0,[$F9]

11.3. El coprocesador utilizado como Salidas PWM Los pines del coprocesador CP2 y CP3 se pueden configurar como salidas de una señal PWM (Modulación del ancho del pulso) con un ciclo útil programable (0100)% en 255 pasos independientes. Si a la salida del pin que está generando una señal PWM se coloca un filtro pasa bajos, se podrá implementar un convertidor digital – analógico; por supuesto de poca precisión. La salida PWM puede ser utilizada para manejar, con un apropiado circuito “driver”, cargas inductivas y elementos de electrónica de potencia. La frecuencia máxima a la cual se puede generar la PWM es de 37.5 KHz. El comando requerido para la generación de la PWM utiliza dos bytes. El primer byte configura cual(es) pin(es) de salida(s) serán salidas PWM y el segundo byte es un número entre $00 y $FF que especifica el ciclo útil de la señal PWM a generar. Ambos pines CP2 y CP3 se pueden configurar en forma arbitraria y con valores diferentes de ciclo útil. 0 0 A1 A0 0 1 1 Inv
' ' ' ' ' ' ' ' '

Figura 11.5. Diferentes frecuencias de salida para la señal PWM.

Nota: El fabricante diseñó el coprocesador para que la selección de las frecuencias arriba indicadas bajo números impares (1,3,5,7,9) produzcan una señal PWM con pulsos corregidos en fase, es decir, cuando el valor del ciclo útil cambia, el cambio es hecho en forma simétrica sobre el centro del pulso. Esto es muy utilizado en aplicaciones para controlar la velocidad de los motores DC, donde un corrimiento de fase del pulso no es deseado.
CAP_11_Ejemplo_04.bas Programa para configurar los pines del coprocesador Pin CP2 como salida digital PWM con un ciclo útil que variará entre (0-100)% en 10 pasos generados en un intervalo de 10 seg. La frecuencia de la PWM generada será de aprox. 4.687 KHz. El pin de salida CP2 se de_ berá conectar a un diodo LED en serie con una resistencia de 220 Ohm de esta forma el LED cambiará cada segundo su brillo en forma ascendente. Esto será repetido en forma cíclica. -----------------------------------------------------------------Device 16F876 XTAL 20 Dim RESP As Byte ' Var. uso general (Obligatoria) Dim FED As Byte ' Var. uso general (Obligatoria) Dim I As Byte ' Var. uso general como contador Symbol OWP = PORTB.0 ' Puerto.pin conexión a la iBOARD III DelayMS 10 ' Retardo inicial requerido por el ' coprocesador ATMEL.

Segundo Byte: de $00 a $FF Si A1 A0 = 10; entonces se activa como salida PWM al pin CP2 Si A1 A0 = 11; entonces se activa como salida PWM al pin CP3 Si Inv = 0; Los pulsos PWM serán ascendentes (Alfa) Si Inv = 1; Los pulsos PWM serán descendentes (Beta) La frecuencia a la cual se generará(n) la(s) señal(es) PWM es la misma para los dos pines CP2 y CP3 y se puede configurar a través del envío de un comando con el siguiente formato: 1 1 1 1 A3 A2 A1 A0

donde A3 A2 A1 A0: representa un número binario de 4 bits, que puede tomar el valor desde cero (0) a nueve (9). La figura 11.5., muestra una tabla que relaciona las diez posibles combinaciones binarias con las frecuencia PWM de salida que se pueden obtener para los pines de salida PWM CP2 y CP3.
82

Main: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III. Integrado (U6). (Obligatorio) ........ OWrite OWP,1,[$CC, $CC, $FF] ' Skip ROM, Seleccionar Aux (U6) ORead OWP,0,[RESP, FED] ' Respuesta, feedback

' ciclo útil = I DelayMS 1000 Next GoTo Loop End Main: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III.. OWrite OWP.0.bas Programa para configurar los pines del coprocesador: Pin CP2 como salida digital PWM con un ciclo útil del 50% a una frecuencia de 4..6.[$CC..[RESP.1.[$26..687 KHz El pin de entrada CP1 se configurará como "counter" y se deberá conectar al pin CP2 a fin de medir la frecuencia de salida de la señal PWM generada en ese pin.0. 11. Integrado (U6). Conteo. 10. Salida PWM = 4687. uso general (Obligatoria) Dim Conteo As Word ' Var. por ello el conteo mínimo será cero (0) y el máximo de 65535.0. Dec Conteo*2. 0 A1 se se se se A0 activa activa activa activa como como como como 0 0 1 1 al al al al pin pin pin pin CP0 CP1 CP2 CP3 entonces entonces entonces entonces entrada entrada entrada entrada “counter” “counter” “counter” “counter” El conteo de la señal de entrada devuelve un resultado de un número de 16 bits. de pulsos/2 contados en 1 s El resultado se presentará a través del IDE Serial Comunicator . $CC.pin conexión a la iBOARD III DelayMS 10 ' Retardo inicial requerido por el ' coprocesador ATMEL. Figura 11.' De Aquí en adelante ya se trabajará directamente con el ATMEL ' ------------------------------------------------------------OWrite OWP..[$F2] ' Configura Freq.0. $FF] ' Skip ROM.[$26. uso general como contador Symbol OWP = PORTB.LowByte] HRSOut "Frec. Resultado de la ejecución del programa CAP_11_Ejemplo_05. 01.. -----------------------------------------------------------------Device 16F876 XTAL 20 Dim RESP As Byte ' Var. Leída en CP1 = ".4. 127] ' Configura Salida PWM = CP0.1. uso general (Obligatoria) Dim FED As Byte ' Var.HighByte. El conteo de los pulsos se hará en un intervalo de 1 seg.. I] ' Configura Salida PWM = CP2.0.0 ' Puerto.bas. FED] ' Respuesta. 13 DelayMS 500 GoTo Loop End 11.5 KHz Loop: For I = 0 To 255 Step 25 OWrite OWP.5 KHz Loop: OWrite OWP. feedback ' De Aquí en adelante ya se trabajará directamente con el ATMEL ' ------------------------------------------------------------OWrite OWP. El formato del byte de control es el siguiente: 0 Si Si Si Si A1 A1 A1 A1 A0 A0 A0 A0 = = = = 00.0. ' ' ' ' ' ' ' ' ' ' CAP_11_Ejemplo_05.[$F2] ' Configura Freq. Seleccionar Aux (U6) ORead OWP. CU=50% Conteo = 0 ' Configura Entrada CP1 "counter" y OWrite OWP. 83 .. (Obligatorio) . a fin de determinar la frecuencia de entrada que deberá ser igual al No. Salida PWM = 4687.[$13] ' comienza a medir los pulsos de CP2 DelayMS 1000 ' Retardo de 1000 ms = 1 seg ORead OWP.. El coprocesador utilizado como Contador Digital El proceso para configurar y activar los pines del coprocesador como entradas de conteo “counter” se realiza a través del envío de un byte que contiene la información de los pines que se activarán como entradas de conteo de pulsos.[Conteo.

el valor del registro TMR1 es colocado a cero (0). En la figura 12.com Sistema de desarrollo para microcontroladores PIC®.1. coloca a uno (1) lógico el pin de salida PORTC<2:1>. En la Figura 12. cada transición alfa 0-> 1 Modo Captura. cada transición beta 1-> 0 Modo Captura. el significado de cada bit es el siguiente: bit 7-6: No implementados: Se leerán como ceros “0” bit 5-4: CCPxX:CCPxY: Bits menos significativos asociados al módulo PWM En modo Captura : No se utilizan En modo Comparación: No se utilizan En modo PWM: Estos bits son los bits menos significativos del ciclo útil PWM. Captura. se observan los bits que conforman cada uno de los registros de configuración CCP1CON y CCP2CON.2. 0000 0100 0101 0110 0111 1000 = = = = = = Figura 12. TMR1L) en los registros (CCPR1H. bit 3-0: CCPxM3:CCPxM0: Bits de selección Reset del módulo CCPx. Figura 12. Fuente: Tomado de www. El módulo CCP1 tiene asignado el pin PORTC<2> y el CCP2 tiene asignado el pin PORTC<1>. cuando se activa la bandera de int. CCPR1L) y la activación de la bandera de interrupción. el valor del TMR1 es colocado a cero (0) y se produce la habilitación del módulo de conversión A/D.1.2. Registro de configuración del módulo CCP ( CCP1CON y CCP2CON). transición alfa 0-> 1 Modo Comparación. a la cuarta transición alfa 0 -> 1 Modo Captura. El PIC16F876 posee dos módulos CCP (CCP1 y CCP2) Captura. genera interrupción CCPxIF. 11xx = Modo PWM. Si está utilizando el CCP1. Ambos módulos pueden ser configurados a través de sus registros asociados CCP1CON y CCP2CON. Representación en bloques del módulo CCP1.1. iBOARD III. Captura/Comparación/PWM = OFF Modo Captura.CAPÍTULO 12 MODULO CCP/PWM. la captura del valor del TMR1 se copia al registro CCPR1 y al mismo tiempo la bandera de interrupción bit CCPR1IF se activa. CCPxIF 1001 = Modo Comparación. CCPxIF 1010 = Modo Comparación. cuando se active la bandera de int. Los ocho bits más significativos se encuentran en el registro CCPRxL. Comparación y PWM. 12. Para el PIC16F876. Si está utilizando el CCP2. los cuales. 85 . se observa el diagrama de bloques funcionales del módulo CCP1. realiza tres funciones diferentes según su nombre lo indica. Los posibles cambios en los pines PORTC<2:1> que pueden desencadenar una captura son: • Una (01) transición de nivel Alto a nivel Bajo en el pin PORTC<2:1> • Una (01) transición de nivel Bajo a nivel Alto en el pin PORTC<2:1> • Cuatro (04) transiciones de nivel Bajo a nivel Alto en el pin PORTC<2:1> • Dieciséis (16) transiciones de nivel Bajo a nivel Alto en el pin PORTC<2:1> Los registros de configuración tanto para el CCP1 y CCP2 son los encargados de la selección y/o configuración de las diferentes funciones y bits asociadas a los módulos CCP. Comparación y PWM Introducción. lo cual. genera interrupción CCPxIF. el valor lógico del pin de salida PORTC<2:1> no cambia. 1011 = Modo Comparación.mikroe. Cuando el evento preprogramado a través de los bits CCP1M3 al CCP1M0 dispara. Modo de Captura Modo Captura: Esta función se utiliza para la determinación de la duración de un pulso aplicado a los pines PORTC<2:1>. a la 16va. La Captura de una señal comienza cuando cambia el valor de entrada del pin PORTC<2> ó PORTC<1>. el valor lógico del pin de salida PORTC<2:1> no cambia. coloca a cero (0) lógico el pin de salida PORTC<2:1>.. desencadena una serie de eventos como la copia el contenido del Timer1 (TMR1H.

mikroe.com 86 . Diferente ciclos útiles de una señal PWM. Representación en bloques del módulo CCP2. La Comparación literalmente significa: El valor del registro del Timer1 es continuamente comparado con un valor prefijado en el registro CCPR1 ó CCPR2. Figura 12. El TMR1 deberá estar sincronizado con el oscilador interno del PIC. Fuente: Tomado de www. evento es dependiente de la comparación de dos registros internos del microcontrolador. asociados al módulo CCP.2. Para el módulo CCP2 • • • • El Pin PORTC<1> es colocado a uno (1) lógico El Pin PORTC<1> es colocado a cero (0) lógico El Pin PORTC<1> no sufre ningún cambio de estado lógico El Pin PORTC<1> no sufre ningún cambio de estado lógico. Nota: El TMR1 deberá estar sincronizado con el oscilador interno del PIC.com Figura 12. entonces.3.5.3. podemos observar la figura 12.12.3.com Período de una Señal: El período de una señal (T). Si un cero (0) lógico por analogía representa la conexión abierta de un interruptor que alimenta a una bombilla y un uno (1) lógico representa la conexión cerrada de un interruptor. Esta relación se denomina ciclo útil. lo que significa. uno de los cuatro posibles eventos ocurrirán: Para el módulo CCP1 • • • • El Pin PORTC<2> es colocado a uno (1) lógico El Pin PORTC<2> es colocado a cero (0) lógico El Pin PORTC<2> no sufre ningún cambio de estado lógico El Pin PORTC<2> no sufre ningún cambio de estado lógico y el Timer1 es colocado en cero (reset). Fuente: Tomado de www. El Timer1 es colocado en cero (reset) y se habilita el módulo de conversión A/D para realizar una conversión como se puede observar en la Figura 12. se define a través del registro PR2 perteneciente al TMR2.mikroe. Fuente: Tomado de www. que las señales pueden variar en forma independiente la frecuencia y el ciclo útil. El período de una señal puede ser calculado a través de la siguiente formula: PWM Período (T) = (PR2 +1) * 4Tosc * TMR2 Prescale Value Frecuencia F = 1/T Figura 12. Modo PWM Modo PWM: Se utiliza para generar señales con el algoritmo de la modulación del ancho del pulso. la potencia en la bombilla será directamente proporcional a la duración del pulso. cuando los registros alcancen el mismo valor. Modo de Comparación Modo Comparación: Esta función se utiliza en general. para disparar un evento externo a través del pin PORTC<2:1> del microcontrolador. Período y ciclo útil de una señal.mikroe.4. 12. Para entender que significado tiene la frecuencia y el ciclo útil.4.

Fuente: Manual técnico del PIC16F876.mikroe.9 . existen un número discreto de combinaciones. la cual. Este número es llamado resolución. sin embargo. se observan diferentes resoluciones obtenidas de una señal PWM cuando se utiliza un oscilador de 20 MHz. Estos valores están relacionados al uso de un oscilador de 20 MHz. El ciclo útil se puede calcular a través de la siguiente formula: Ciclo útil = (CCPR1L:CCP1CON<5:4>) * Tosc * TMR2 Prescale Value Los registros CCPR1L y CCP1CON<5:4> pueden ser escritos en cualquier momento. Fuente: Tomado de www. Resolución obtenida a partir de la frecuencia y el valor del registro PR2.9. Figura 12. tiene una resolución de 10 bits. Cuando el valor contenido en el registro TMR2 es igual al valor contenido en el registro PR2. depende de del valor contenido en el registro PR2 y de la frecuencia generada.Figura 12.com Resolución: Una señal PWM no es más que una secuencia de pulsos que varían su ciclo útil. Representación en bloques del módulo PWM. Los ocho bits más significativos se encuentran en el registro CCPR1L y los dos bits menos significativos se encuentran en el registro de configuración CCP1CON bits (CCPxX:CCPxY ).com Figura 12.6.8. Fuente: Tomado de www. Fuente: Tomado de www. La tabla de la Figura 12. Período y ciclo útil de una señal relacionada a los registros del Timer2.7.com 87 .mikroe. Para una frecuencia específica (No. La mayor resolución es obtenida cuando el registro PR2 tiene el valor $FF. el valor del ciclo útil no pasará al registro CCPR1H hasta que el valor del registro PR2 y el valor del registro TMR2 sean iguales. ocurren los siguientes eventos: • • • El valor del registro TMR2 es colocado en cero (0) El pin relacionado al CCP1 es colocado a uno (1) lógico El valor del ciclo útil del PWM es pasado desde el registro CCPR1L al CCPR1H Ciclo útil de una Señal: El ciclo útil de una señal generada utilizando el modo PWM.7. Frecuencia de una señal obtenida a partir el valor de los registros TMR2 y PR2. En la figura 12. Figura 12.mikroe. de pulsos x seg). muestra como generar señales PWM de diferentes frecuencias a través del microcontrolador PIC.

Registros asociados al módulo PWM y TMR2 Figura 12. Banderas de interrupción: CCP1IF. Registros asociados a la Captura. Fuente: Manual técnico del PIC16F876. TMR1IE Configuración del módulo CCPx: CCPxM<3:0> Configuración Timer1: T1CON<5:0> Banderas de interrupción: CCP2IF. el usuario tendrá que configurar los registros asociados al módulo CCP en forma manual y/o habilitar las interrupciones.4. Registros asociados al módulo PWM y al TMR2.11. Comparación y TMR1 12. muestra como trabajar con el módulo CCP para realizar la captura de una señal introducida a través el módulo CCP1 y de esta forma determinar el período y la frecuencia de la misma. Comparación y al TMR1.12. TMR2IE Configuración del módulo PWMx: CCPxCON<5:0>. Figura 12. El siguiente ejemplo. CCP2IE.10. CCP2IF. TMR2IF Habilitación de interrupciones: CCP2IE. Registros asociados al módulo de Captura. El resultado se presentará en la pantalla LCD. 88 . TMR1IF Habilitación de interrupciones: CCP1IE. Si se desea utilizar estos módulos. Fuente: Manual técnico del PIC16F876.5. CCPxCON<5:0> Configuración Timer2: T2CON<6:0> El compilador Basic® PROTON® no posee comandos en alto nivel para el manejo de los módulos de Captura y Comparación.

0. $FF] ' Skip ROM. Salida PWM = 4687.0.50 KHz. para almacenar el período Symbol CCPR1 = CCPR1L. Integrado (U6).12. Ejemplos de aplicación del módulo CCP1 en modo Captura ' ' ' ' ' ' ' ' CAP_12_Ejemplo_01. CU=50% Return Main: While CAPTURE = 0 : Wend ' Espera la bandera de Captura PERIOD = CCPR1 ' Almacena valor capturado en PERIOD If OVERFLOW = 0 Then ' Si TMR1 = overflow no muestra LCD Print At 1.: " . alias reg. OWrite PORTB. Nota: para la generación de la señal se utilizará el microcontrolador coprocesador ATMEL.[RESP.[$CC.0.. (Obligatorio) . TMR1L Symbol CAPTURE = PIR1. 127] ' Configura Salida PWM = CP2.0 / PERIOD.4 ' Pin de Datos LCD conec.: " .. "Freq.1.5 KHz OWrite PORTB. por CCP1 Symbol OVERFLOW = PIR1. "Peri. por TMR1 ' Programa principal ' ---------------------------------------------------------------DelayMS 1000 ' Retardo requerido por la LCD ALL_DIGITAL = True ' Configura todos los puertos dig.0. Seleccionar Aux (U6) ORead PORTB. uso general (Obligatoria) ' Variables. Captura por CCP1.. Captura Se inicializa el Timer 1 Se inicializa bandera Captura Se inicializa bandera overflow T1 Coprocesador: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III.1 Low PORTB. al PORTB. feedback ' De Aquí en adelante ya se trabajará directamente con el ATMEL ' --------------------------------------------------------------OWrite PORTB. FED] ' Respuesta.2 ' Pin de RW LCD conec. al PORTB.[$26. 89 .Word ' Crea una var. al PORTB. $CC.Word ' Crea una var. 50% CU 4687. al PORTB.1.bas Ejemplo básico de utilización del módulo de Captura / Comparación CCP1 para la medición del período y la frecuencia de una señal introducida por el pin PORTC<2>.. Dec PERIOD . " KHz " DelayMS 250 EndIf Figura 12.5 Hz CCP1CON = %00000100 T1CON = %00000001 ' Hab. El resultado deberá ser mostrado en la pantalla LCD.3 Declare LCD_RSPIN PORTB.Freq. generando una una señal PWM de 50% Ciclo útil a 4687.. ----------------------------------------------------------------Device = 16F876 XTAL 20 ' Declaraciones para el manejo y utilización de la LCD '----------------------------------------------------------------Declare LCD_DTPIN PORTB.6.bas Módulo de Captura y comparación. constantes y símbolos utilizados por el programa ' ---------------------------------------------------------------Dim PERIOD As Word ' Var. GoSub Coprocesador ' Configura coprocesador para generar ' señal PWM por CP2..12.1 ' Pin de RS LCD conec.4 Declare LCD_ENPIN PORTB.0.2 ' Variables requeridas por el coprocesador ATMEL ' ---------------------------------------------------------------Dim RESP As Byte ' Var.[$F2] ' Conf. CCPRL1 Symbol TIMER1 = TMR1L. DEC2 5000.0.0 ' Bandera de interrup. Fotografía de la corrida del programa CAP_12_Ejemplo_01. por flanco ' beta (1 ->0) TMR1 prescale = 1 CAPTURE = 0 While CAPTURE = 0 : Wend Clear TIMER1 CAPTURE = 0 OVERFLOW = 0 GoTo Main End ' ' ' ' ' Se limpia la bandera de Captura Espera para el prox.2 ' Bandera de interrup. " us " Print At 2.. alias reg.0.1.3 ' Pin de Enable LCD conec. uso general (Obligatoria) Dim FED As Byte ' Var.

si el ciclo útil es igual a 127 voltaje del pin aprox = 127/255 * 5Vdc = 2. Debido a que el condensador se descargará gradualmente. mientras que el ciclo útil es ajustable e independiente para cada canal. significa señales PWM generadas por algoritmos en software. La ventaja de la PWM por software. ejecutadas por el CPU del microcontrolador y no ejecutadas en forma independiente por el hardware periférico módulo CCPx. o expresión que especifica la relación entre los estados lógicos altos y bajos de la señal. constante (0-255). por ejemplo. puede ser utilizado para generar voltajes analógicos en el rango de (0-5) Vdc a través de un pin del microcontrolador y un arreglo resistencia – condensador como el mostrado en la figura anexa. Frecuencia • 12. Ciclo útil . Si el ciclo útil es uno (1) el pin estará alimentado constantemente con un voltaje cercano al de alimentación Vdd = 5 Vdc. Ciclos • • • Pin – Un valor constante que especifica cual pin del microcontrolador se utilizará. PORT.7. En el PIC16F876 la frecuencia para la generación PWM en ambos canales deberá ser la misma. Los pines del microcontrolador asociados a cada módulo CCPx son: Para el CCP1 -> PORTC<2> y para el CCP2 -> PORTC<1>. 1 ms. La directiva declare se utiliza al comienzo del programa para indicar los pines asociados a los módulos CCPx. Por defecto para el módulo CCP1 es el pin PORTC<2> y para el CCP2 es el pin PORTC<1>. La sintaxis para este tipo de comando es: PWM Pin . Y la menor frecuencia que se puede generar utilizando un oscilador como el que viene incluido en el sistema de desarrollo es de 1221 Hz. Por el contrario. La sintaxis del comando es: HPWM Canal . Esto sin necesidad de que usted tenga que configurar los registros asociados en el microcontrolador. si el ciclo útil es cero (0) el pin tendrá un voltaje cercano a 0 Vdc. se hará un ejercicio práctico para llevar a cabo la generación de una señal PWM a través de la configuración de los registros del modulo CCP1 y otro ejercicio utilizando el comando en alto nivel HPWM.2 DECLARE CCP2_PIN PORTC. para un oscilador de 20 MHz la duración de cada ciclo será aprox. La mayor frecuencia que se puede generar es de 32767 Hz. Comando en Alto nivel para HPWM por hardware El compilador Basic® PROTON® posee un comando denominado HPWM. el cual.1 El comando PWM. el comando PWM deberá ser ejecutado en forma periódica a fin de refrescar el voltaje en el condensador. relación entre los estados lógicos altos y bajos de la señal. o expresión que especifica la Frecuencia – Una variable.8.pin Canal – Un valor constante que especifica cual módulo CCPx se utilizará. es que se puede ejecutar sobre cualquier pin del microcontrolador. La desventaja es que consume ciclos de reloj del CPU y por ello no es una tarea que se pueda realizar en al mismo tiempo de ejecución de otras instrucciones en el microcontrolador.49 Vdc. Para valores entre 0 y 255 la proporción será: Ciclo útil /255. Esto no significa que no podamos generar una señal PWM a través de la configuración de los registros. de echo. frecuencia en (Hz) de la señal a generar. constante (0-32767). o expresión que especifica la salida de la señal a generar. DECLARE CCP1_PIN PORTC. fue creado para manejar en alto nivel módulos CCPx del PIC16F876 y generar señales utilizando algoritmo de la modulación del ancho del pulso PWM. Ciclos – Una Variable ó constante (0-255) que especifica el número de ciclos de • • Ciclo útil – Una variable.12. Comando en Alto nivel para PWM por software El compilador Basic® PROTON® también puede generar señales PSEUDOS PWM. Ciclo útil. El valor de los ciclos es dependiente del oscilador utilizado. constante (0-255). Ciclo útil – Una variable. las opciones son CCP1 ó CCP2. 90 . PWM colocará un cero(0) ó un uno (1) en la salida del pin a una rata controlada por el ciclo útil escogido.

CCP1 se_ ra el módulo a utilizar PORTC<2> al mismo se le colocará un LED en serie con una resistencia de 220 Ohm para poder observar los cambios en el brillo del LED. 5000 Hz.bas Ejemplo básico de utilización del módulo de CCP1 a través de el comando en alto nivel HPWM.4 = Duty. CCP1 será el módulo a utilizar PORTC<2> al mismo se le colocará un LED en serie con una resistencia de 220 Ohm para observar los cambios en el brillo del LED. Prescalador = 4 Ajusta PR2 para obtener 5KHz salida Ajusta el ciclo útil a 20% Almacena el ciclo útil como una palabra de 10-bit Incrementa Retardo de Incrementa Se regresa el ciclo útil 50 ms seg. registro: ' CCPR1L:CCP1CON<5:4>) ' ' ' ' ' CCP1 como salida PORTC<2> pin salida Configura a CCP1 como PWM Configura Timer2. ' HPWM pin PORTC<2> ciclo útil ' y freq. hasta el 80% a 20% Loop: CCP1CON.5000 DelayMS 250 Next GoTo Loop End ' Declaración del pin a usar ' Variable Ciclo útil Figura 12.Duty. 91 . 5 KHz que varie su ciclo útil entre 20% y 80% en 3 seg. comparación y PWM.1 ' CCPR1L = Duty >> 2 Duty = Duty + 10 ' DelayMS 50 ' If Duty < 800 Then Loop ' Duty = 200 ' GoTo Loop 12.12. Módulo de Captura. Fotografía de la corrida del programa CAP_12_Ejemplo_02.2 Dim Duty As Byte Loop: For Duty = 50 To 200 Step 15 HPWM 1. Ejemplo de HPWM y configuración a través de registros ' ' ' ' ' ' ' ' CAP_12_Ejemplo_02.bas y CAP_12_Ejemplo_03.bas Ejemplo básico de utilización del módulo de CCP1 a través de los registros.9. Se generará una señal HPWM de frecuencia aprox. ----------------------------------------------------------------Device = 16F876 XTAL 20 Dim Duty As Word TRISC.5 = Duty. Se generará una señal de frecuencia aprox. 5 KHz que varia su ciclo útil entre 20% y 80% en 3 segundos. ---------------------------------------------------------------Device = 16F876 XTAL 20 Declare CCP1_PIN PORTC. Ejemplo de HPWM y comandos en alto nivel ' ' ' ' ' ' ' ' CAP_12_Ejemplo_03.0 ' CCP1CON.12.10.2 = 0 CCP1CON = %00001100 T2CON = %00000101 PR2 = 249 Duty = 200 ' Ciclo útil.

. ' ' ' ' ' ' ' CAP_11_Ejemplo_06..[RESP. uso general para la CAD Symbol OWP = PORTB.bas.[%00001011] 'Conf..pin conexión a la iBOARD III DelayMS 10 ' Retardo inicial requerido por el ' coprocesador ATMEL..7. Main: ' Instrucciones requeridas para configurar el multiplexor 1-Wire ' del sistema iBOARD III. Figura 11. $FF] ' Skip ROM. entonces se activa como entrada A/D el pin CP0 Si A1 A0 = 01. uso general para la CAD Dim Busy As Bit ' Var.. utilizado para la CAD será 1. Integrado (U6).27) www.4.LowByte] Voltaje = ValorAD * (5/1023) ' Factor de conversión A/D HRSOut "Volt. feedback ' De Aquí en adelante ya se trabajará directamente con el ATMEL ' ------------------------------------------------------------Loop: OWrite OWP.1 Volt." Vdc". el valor mínimo será de 0 y el máximo de 1023. = Vdd Repeat ORead OWP. La configuración se realiza con el envío de un byte que contiene la información de los pines que se activarán como entradas para la conversión A/D. entonces se activa como entrada A/D el pin CP1 Si Ref = 0.5. El voltaje de ref. Seleccionar Aux (U6) ORead OWP.[$CC. Se deberá conectar el Pin CP0 al ánodo del diodo LED. muestra como realizar una conversión A/D a través del pin CP0 del coprocesador.0.1 Volt El resultado de la conversión A/D es un número de 10 bits. El formato del byte de control es el siguiente: 0 0 A1 A0 1 Ref 1 1 OWrite OWP. $CC.0. El resultado se presentará a través del IDE Serial Comunicator .08. La conversión A/D se puede realizar utilizando como referencia el voltaje de alimentación al chip (Vdd) ó a través de una referencia interna de 1. DEC2 Voltaje. 84 En el manual AVR Firmware: GPIO-3 (2006. El coprocesador utilizado como Conversor A/D El coprocesador dispone de dos pines (CP0 y CP1) que pueden ser configurados como entradas analógicas a fin de realizar la conversión A/D de 10 bits de resolución.0.0 ' Puerto. Resultado de la ejecución del programa CAP_11_Ejemplo_06.1. FED] ' Respuesta.11.parallax.. algunos comandos no fueron incluidos en este trabajo. puede encontrar más información sobre los comandos implementados por el coprocesador. -----------------------------------------------------------------Device 16F876 XTAL 20 Dim RESP As Byte ' Var. . uso general (Obligatoria) Dim FED As Byte ' Var. LED(On) = ".. El voltaje de ref. Para poder leer el valor obtenido de una conversión A/D será necesario consultar el coprocesador para determinar si está ocupado “busy” o ya ha alcanzado la conversión A/D.com. (Obligatorio) . El siguiente ejemplo. 13 DelayMS 1000 GoTo Loop End Si A1 A0 = 00.HighByte. ValorAD.. A/D con Ref.bas Programa para configurar los pines del coprocesador: Pin CP0 como entrada para realizar una conversión A/D y de esta forma determinar la tensión en directo (ON) de un diodo LED conectado a Vdd a través de una resistencia en serie de 220 Ohm. uso general (Obligatoria) Dim ValorAD As Word ' Var.[ValorAD. CP0 conv. por ello. utilizado para la CAD será Vdd Si Ref =1..[Busy] Until Busy <> 1 ORead OWP. uso general para la CAD Dim Voltaje As Float ' Var.

C. Disponible a a través de http://pdfserv. 2007).pdf Dallas Semiconductor Corp. Hoja de especificaciones técnicas. Inc. 8-bit Microcontroller with 1K Bytes In-System Programmable Flash ATtiny13. Inc.microchip.microchip. FTDI# 38. DS30292B. 2535G–AVR–01/07.PDF Rodríguez. 92 .maximic.com/Documents/DataSheets/DS Editorial Elector- development England. Hoja de especificaciones técnicas. Microchip Technologies. Inc. Dallas Semiconductor Corp.com/en/books/picbook/picbook. ISBN 13.maxim-ic. Hoja de especificaciones técnicas. Hoja de especificaciones técnicas.REFERENCIAS BIBLIOGRÁFICAS ATMEL™ Corporation.pdf Application Note 155: 1-Wire® Software Resource Guide Device Description.com/Portals/0/Downloads/docs/prod/boards/28300-MoBo0906. ISBN 987-20960-1-5. (2005). . 3ra. 1997).0.maxim-ic.ftdichip. Comunicación 1-Wire®. 2005. (Agosto 1.com/en/an/AN187.com/WEB_ROSO/_Download/Cursos/MDK_B28_Manual_ Full. 2004). Disponible a través de http://www. Disponible a través de http://datasheets.asp?product_id=28300. DS2409 MicroLAN Coupler.. (Junio 19. Soluciones en Control SRL.pdf Smith. DS1307 64 x 8 Serial Real-Time Clock.. Disponible a través de Dallas Semiconductor Corp. ISBN: 978-0-905705-68-2. PIC16F876 28/40-pin 8-Bit CMOS FLASH Microcontrollers 1999. Integrated environmnet compiler user manual (2004). (Septiembre 13. Disponible a través de http://www.: FT_000053. App Note 27: Understanding and Using Cyclic Redundancy Checks with Maxim iButton Products.NET..maxim-ic. 24LC16B 16K I2C™ Serial EEPROM.com/en/an/AN155. Material didáctico de consulta gratuita a través de Internet. Disponible a través de http://ww1. 2006. Division of Maxim Integrated Products.atmel. 415-417). Inc. Division of Maxim Integrated Products. Inc. “PIC Microcontrollers” mikroElektronika. Disponible Dallas Semiconductor Corp. 2007). Development suite Proton. App Note 937: Book of iButton Standards. 2005). (Marzo 28. (Enero. MoBoStamp-pe BS2pe Motherboard (#28300). Programming the PIC Microcontroller with MBasic. (Enero 1. Disponible a través de http://www. (Agosto 12. http://pdfserv. Disponible a través de http://www. Division of Maxim Integrated Products. Elektroniccs.pdf Dallas Semiconductor Corp. Hoja de especificaciones técnicas. VBA.. 1st edition (2008).pdf http://pdfserv. Hoja de especificaciones técnicas.pdf Milan Verle. (Mayo 4. J. Inc.pdf Parallax.com/getds.com/downloads/en/DeviceDoc/21703H.978-86-84417-15-4 http://www.cfm?qv_pk=2688 Dallas Semiconductor Corp. Document No. Editorial ELSEVIER.pdf Dallas Semiconductor Corp. AVR Firmware: GPIO. México. (Agosto 8. Parallax.com/en/an/appibstd.parallax. Himpe. App Note 187: 1-Wire® Search Algorithm.com/en/an/AN27.com/en/ds/DS2409. FT232R USB UART IC. Enero. (Octubre 11. Disponible a través de http://datasheets.com/downloads/en/DeviceDoc/30292c. (Junio 19. Division of Maxim Integrated Products. Hoja de especificaciones técnicas. Division of Maxim Integrated Products.roso-control. En Sistema de Desarrollo MDK-B28 (pág.. Disponible a través de http://pdfserv. (Enero 5. Edición Mayo 2007. Inc. Adquisición de datos.maximic. (2005). Hoja de especificaciones técnicas. Inc.htm Microchip Technologies.0. 2006). medir para conocer y controlar.pdf Crowhill Associates Limited. Inc. Jack R. Disponible a través de http://www. Hoja de especificaciones técnicas. Visual Basic 5. 6. iBOARD III.com/detail . Cambridge Future Technology Devices International Ltd. Burlington USA.maxim-ic..mikroe. Disponible a través de través de http://ww1. 2002). Venezuela. 2007) DS21703G. 2007). Inc.com/en/ds/DS18B20. Vicent. Version 3.pdf Sistema de desarrollo para microcontroladores PIC®. Division of Maxim Integrated Products. Valencia.com/dyn/ resources/prod_documents/doc2535. Disponible a _FT232R. Division of Maxim Integrated Products. 2004). Chicala.pdf través de http://www. ISBN: 0-7506-7946-8. (2008). Hoja de especificaciones técnicas. Inc. 2007). DS18B20 Programmable Resolution 1-Wire® Digital Thermometer.maxim-ic. 2002).parallax.

3. Figura A. muestra el diagrama de conexiones de la pantalla LCD al sistema de desarrollo iBOARD III. es extraíble a través de un conector tipo lineal de 14 pines. incluye un microcontrolador interno como el HITACHI 44780 ó compatible y puede entre otras cosas: · · · · · Presentar caracteres ASCII y griegos Recibir y mostrar caracteres personalizados Desplazamiento de caracteres (Scroll) tanto a la derecha como a la izquierda Cambiar el aspecto y el movimiento del cursor Direccionar de manera simple la posición de visualización de los caracteres Sistema de desarrollo para microcontroladores PIC®. Para ello deberá utilizar las especificaciones que suministra fabricante. cuando el (pin) RS está en nivel alto. se encuentran las mostradas en la figura A. iBOARD III. son suficientes para manejar la pantalla LCD. un usuario puede crear sus propios comandos de control para el manejo de la LCD. Distribución de pines de conexión de la pantalla LCD 2x16 del iBOARD III. 93 . buena visibilidad y precio reducido se ha convertido en el estándar de visualización más utilizado con los microcontroladores.3.2.ANEXO A PANTALLA LCD DE CARACTERES La Pantalla LCD es uno de los periféricos más empleados para la presentación de mensajes. cuando se coloca al (pin) denominado RS en nivel bajo y como un carácter. El sistema de desarrollo iBOARD III. La pantalla LCD deL iBOARD III. Este conjunto de caracteres lo podemos observar a través de la figura A. Figura A. CONJUNTO (SET) DE CARACTERES Aún cuando los comandos mostrados en la tabla de la figura A.4.2.1.1. la cual. variables y casi cualquier información proveniente de un microcontrolador. La figura A. incluye una pantalla LCD 2x16 caracteres. Los terminales de conexión de las pantallas LCD de caracteres han sido estandarizados y generalmente son compatibles pin a pin con la distribución de pines mostrada en la Figura A. Un comando es un dato numérico de 8 bits que le indica al controlador HITACHI 44780 ó compatible. COMANDOS UTILIZADOS La información que se envía a la pantalla LCD puede interpretarse de dos formas: como un comando. incluyen un conjunto de caracteres precargados en la memoria RAM. La totalidad de las pantallas LCD compatibles con la Hitachi 44780. que deber realizar una operación. entre las cuales. en la mayoría de las aplicaciones. Gracias a su flexibilidad. Conexiones de la pantalla LCD 2x16 al sistema de desarrollo iBOARD III.

lo que significa. Figura A. Una vez desenergizada la LCD. Comandos disponibles en una pantalla LCD con controlador HITACHI 44780 ó compatible. es una memoria volátil. La memoria CGRAM de un LCD estándar compatible con el controlador HITACHI 44780. 94 .3. la memoria CGRAM perderá su contenido. Sistema de desarrollo para microcontroladores PIC®. iBOARD III. en la cual. Todo carácter visualizado en la pantalla LCD está conformado por una matriz de 5x8 pixel. en la cual. con la fila inferior reservada para la visualización del cursor. puede utilizar la memoria CGRAM para almacenar hasta ocho (8) caracteres personalizados. Conjunto (set) de caracteres para una pantalla LCD con controlador HITACHI 44780 ó compatible. se almacenan los caracteres predefinidos que soportan la pantalla y su controlador CARACTERES PERSONALIZADOS Si el set de caracteres estándar de la LCD no contiene un carácter requerido por usted. CGROM (Character Generator ROM): Memoria no volátil. que no almacena la información en forma permanente.Usted podrá crear sus propios símbolos. se almacenan los caracteres que se van a mostrar en la pantalla.4. Figura A. Sólo se utilizarán los bit 0 al 4. TÉRMINOS UTILIZADOS CON LAS LCD’S CGRAM (Character Generator RAM): Memoria volátil de 64 bytes que permite almacenar hasta 8 caracteres personalizados para ser mostrados en la pantalla. SCRRAM (Display Data RAM): Memoria volátil de 80 bytes. simplemente vaya a la dirección de la memoria de símbolos de la LCD (CGRAM) y escriba en ella los ocho bytes que contienen su selección.

Figura A. antes se describirán los comandos en alto nivel que posee en compilador Basic® PROTON® para el manejo de una pantalla LCD. al final el programa le indica el código en hexadecimal del carácter por cada una de los 8 líneas de la matriz 5x8. iBOARD III. Este ejemplo se encuentra en el CD entregado a usted. Código en formato decimal para un carácter especial. El código puede expresarse en Hexadecimal ó en formato decimal como aparece también el la figura A. muestra una fotografía del sistema de desarrollo iBOARD III.parallax. en la carpeta 34 Aplicaciones\10 LCDCC\LCDCC. Fotografía de la ejecución del programa CAP_04_Ejemplo_01. sin embargo.7. 95 . el de su preferencia. Como se observa en la figura. mediante el cual. ejecutando el programa de demostración de la pantalla LCD. se había descrito como cargar y ejecutar el programa de demostración. la cual. en la carpeta Ejemplos/ CAP_04/iBOARD_III_DEMO. Fuente: www.inc dispone de una aplicación que facilita la creación de caracteres especiales denominada LCDCC.com Figura A. viene en el CD que se ha entregado a usted junto al sistema de desarrollo iBOARD III. En la Figura A.inc. En esta sección explicaremos su funcionamiento. La figura A.bas.bas en el sistema de desarrollo iBOARD III. Sistema de desarrollo para microcontroladores PIC®.7.6.6. Ya en el capítulo 04. puede dibujar cualquier píxel.Parallax.5. Figura A. inc. Programa LCD Carácter Creador de Parallax. se muestra el programa “LCD Character Creador” de la empresa Parallax.exe.exe "LCD Character Creator". usted podrá crear sus propios caracteres especiales.5.

expresión. Por defecto se utiliza el pin PORTB<4>. PIN Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea de habilitación (EN) de la pantalla LCD. variable.xpos CLS BIN{1. Declara el Puerto C como salida dig.2 Coloca en PORTB. Por defecto se utiliza el modo 4 bits.. primero hay que configurarla a través de las directivas del compilador... Item . de '$' Envía el carácter “c” repetido “n” veces Envía todo ó parte de un arreglo Envía datos tipo “string” definidos por el comando CData DECLARE LCD_LINES 1 .. Dim Contador As Byte Dim ValorF As Float ValorF = 0 TRISA = $FF TRISC = $00 Declaración de var. de uso general Inicializa la variable en cero Declara el Puerto A como entrada dig.8} IBIN{1. (1) selecciona una pantalla LCD del tipo gráfica.4 LCD_ENPIN PORTB. de uso general Declaracion de var. XTAL = 20 ' Define la velocidad del resonador Declare Declare Declare TRISB. Por defecto se utiliza el valor de dos (2) líneas.32} ISDEC{1. DECLARE LCD_TYPE 1 or 0 . el cual. 2 . Por defecto se utiliza el pin PORTB<3>.8} ISBIN{1.10} HEX{1.32} SDEC{1. modificador de formato y/o un(a) string.1 = 0 = 0 ' ' ' ' ' ' ' ' ' ' ' Pines de conexión Pin de Datos LCD Pin de Enable LCD Pin de RS LCD Declara a PORTB.3 conec..4 conec.. DECLARE LCD_INTERFACE 4 or 8 Informa al compilador si la pantalla LCD trabajará en modo 4 bits ó 8 bits. } DECLARE LCD_ENPIN PORT .. or 4 Informa al compilador el número de líneas de la pantalla LCD. Item.. iBOARD III. hace uso de la pantalla LCD para mostrar un mensaje inicial y luego el valor incremental de una variable. DECLARE LCD_RSPIN PORT ..COMANDO EN ALTO NIVEL PARA EL MANEJO DE UNA LCD El compilador Basic® PROTON® dispone de un comando para el manejo de las pantallas LCD. todos los puertos como dig.. DECLARE LCD_DTPIN PORT .y de la LCD Limpia la Pantalla LCD y crea un retardo de 30ms Envía dígitos en formato binario Envía dígitos en formato decimal Envía dígitos en formato hexadecimal Envía dígitos en formato binario con signo Envía dígitos en formato decimal con signo Envía dígitos en formato hexadecimal con signo Envía dígitos en formato binario precedidos de '%' Envía dígitos en formato decimal precedidos de '#' Envía dígitos en formato hexadecimal precedidos de '$' Envía dígitos en formato binario con signo precedidos de '%' Envía dígitos en formato decimal con signo precedidos de '#’ Envía dígitos en formato hexadecimal con signo prec. al PORTB. Ejemplos de utilización pantalla LCD. PIN Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea de selección (RS) de la pantalla LCD.2 a la pantalla LCD conec. Ya en el capítulo 4..32} DEC{1. Por defecto se utiliza el pin PORTB<2>. También el comando PRINT acepta modificadores de formato como los mostrados en la siguiente tabla. 96 .. (0) selecciona una pantalla LCD del tipo carácter.10} IHEX{1.2 PORTB.bas. AT ypos. PRINT Item { .2 LCD_DTPIN PORTB..Es una constante. PIN Asigna el Puerto y el pin de conexión que se utilizarán para la conexión de la línea data de la pantalla LCD. Sistema de desarrollo para microcontroladores PIC®. La codificación del programa es mostrada a continuación: ' CAP_04_Ejemplo_01.3 LCD_RSPIN PORTB. al PORTB. se había cargado y ejecutado el programa CAP_04_Ejemplo_01.8} REP c\n STR array\n CSTR cdata Posiciona el cursor de una pantalla al valor x. un cero (0) Lógico A fin de utilizar la pantalla LCD de caracteres con el sistema de desarrollo iBOARD III.10} SHEX{1. Estas directivas son las denominadas “Declares”.. Existen seis declaraciones diferentes para la configuración de una LCD. Por defecto se escoge el uso de una pantalla de caracteres.bas ' Ejemplo básico de utilización del sistema iBOARD III con LCD ' ------------------------------------------------------------------Device = 16F876 ' Define el microcontrolador utilizado ALL_DIGITAL = True ' Config.8} SBIN{1.10} ISHEX{1. al PORTB. GRAPHIC or ALPHA Informa al compilador el tipo de pantalla LCD a utilizar.1 como Salida Dig.32} IDEC{1.

habilitación y selección de la pantalla LCD.2 PORTC.3. al PORTB.64.1 el cursor a posic.1. "iBOARD III" ' Lleva DelayMS 2000 ' Pausa For Contador = 0 To 255 ValorF = ValorF + 0. "Valor = ".04. "Sist. Esto se logra a través de las siguientes directivas: Declare Declare Declare TRISB.1. Retardo de 100 ms Se utiliza para limpiar la pantalla LCD.4 Mostrará el contenido dentro de las comillas en la posición (línea1. columna 4). Otras instrucciones se utilizan para visualizar mensajes en la LCD.2 como Salida Digital ' Coloca en PORTB.1 TRISB. 2. encenderán los Led's correspondientes a la posición corresp. 1. el cual. "Sist.bas ' Creación y visualización de un caracter especial en LCD ' ------------------------------------------------------------------Device = 16F876 ALL_DIGITAL = True XTAL = 20 Declare LCD_DTPIN PORTB.2 = 0. al PORTB. la pantalla LCD se habilitara en modo de escritura y estará lista para visualizar la información enviada desde el microcontrolador. se realiza la configuración de los pines de conexión entre el sistema de desarrollo iBOARD III y la pantalla LCD.10. Esto lo hace a partir de la línea 2. Columna) posiciona el cursor de la pantalla LCD a la posición especificada. configura al pin PORTB<2> como una salida digital. Desarrollo" Print At 2. "iBOARD III" ' Lleva el cursos a posic. al PORTB.2 = 0. iBOARD III. 0 ' muestra caracter especial DelayMS 1000 ' segunda línea GoTo Main End Sistema de desarrollo para microcontroladores PIC®.2 = 0.Main: Print $FE. Por último. 1 ' Comando para Print At 1.4 = PORTA. así: Print At 1. Esto es: Borrar todo el contenido mostrado en la pantalla LCD. no incluye la definición de este pin dentro de las directivas del compilador. Note que el comando Print At (Linea.2 LCD_DTPIN PORTB.10. columna 3. 31. Como el compilador Basic® PROTON® sólo da soporte para la escritura de la LCD y no la lectura.3 = PORTA. al PORTB.14.1 = 0 = 0 ' ' ' ' ' Pin de Datos LCD Pin de Enable LCD Pin de RS LCD Declara a PORTB. DEC1 ValorF Note que en el programa anterior.1. 1.7.2 = 0 PORTB. la instrucción: Print At 2.04. al PORTB. La instrucción cinco: PORTB.2 un Edo. Coloca al pin RW de la LCD a cero. DEC1 ValorF PORTC. Este pin está conectado al pin RW de la pantalla LCD.3 ' Pin de RS LCD conect.1 PORTC.1 como Salida Dig.3 DelayMS 100 Next GoTo Main End ' ' ' ' ' ' ' ' ' limpiar pantalla LCD el cursos a posic. En la figura A.4.3 LCD_RSPIN PORTB.31 Print Cls ' Limpia la pantalla LCD ' Muestra texto en línea1 Print At 1.7.2 = PORTA. 1 ' Comando para limpiar pantalla LCD Main: 'CARGANDO EL 1ER. 97 .2 PORTB. 2.0 PORTC.4. Esto es justamente lo que hace la instrucción cinco: PORTB.2 Coloca en PORTB. columna1) y el texto “BOARD III” en la (línea 2. Desarrollo" ' Lleva Print At 2.1 ' Declara a PORTB.2 conec.4 conec.4 LCD_ENPIN PORTB. coloca un cero (0) lógico 0 Vdc en el pin PORTB<2>. CARACTER PERSONALIZADO EN LA CGRAM Print 254.1 Print At 2.4 ' Pin de Enable LCD conect.3.1 ' Lleva el cursor a posic. Ejemplo_02.3 Declare LCD_RSPIN PORTB.14. La cuarta línea TRISB. Si RW en la pantalla LCD se coloca a cero (0) lógico 0 Vdc. al PORTB. "CaracterEspecial" ' CaracterEspecial Print At 2. "Valor = ". Las instrucción: Print $FE. Creando un carácter especial ' Anexo_A_Ejemplo_02. Bajo 0 VDC ' Apuntador a la Memoria CGRAM del LCD Las primeras tres instrucciones se utilizan para indicarle al compilador cual pin del microcontrolador será utilizado para manejar las líneas de datos.4 de 2000 ms Ciclo iterativo "For" éste segmento de código mostrará en la pantalla Si presionan los pulsa_ dores. un cero (0) Lógico Permite visualizar el valor d la variable “ValorF” con un digito decimal. puede visualizar el resultado de la ejecución del programa mencionado.5 = PORTA. colocar el cursor en la primera línea – columna y generar un retardo de 30ms. deberá estar conectado a tierra para que la pantalla reciba los datos del microcontrolador.4 Declare LCD_ENPIN PORTB.2 = 0 Symbol CGRAM = $64 Dim I As Byte ' Pin de Datos LCD conect.3 conec.

Print 254,80, 31,00,31,00,31,00,31,00 'CARGANDO EL 4TO. CARACTER PERSONALIZADO Print 254,88, 31,21,21,21,21,21,21,31 'CARGANDO EL 5TO. CARACTER PERSONALIZADO Print 254,96, 00,21,21,21,21,21,21,00 'CARGANDO EL 6TO. CARACTER PERSONALIZADO Print 254,104, 00,27,27,04,04,04,17,14 'CARGANDO EL 7MO. CARACTER PERSONALIZADO Print 254,112, 31,31,31,04,04,31,31,31 'CARGANDO EL 8VO. CARACTER PERSONALIZADO Print 254,120, 00,27,27,04,04,00,14,17 Print Cls For I = 0 To 7 Print I," " DelayMS 1000 Next Figura A.8. Fotografía de la ejecución del programa Anexo_A_Ejemplo_02.bas Creación de un carácter especial en CGRAM de la LCD. GoTo Main End

EN LA CGRAM EN LA CGRAM EN LA CGRAM EN LA CGRAM EN LA CGRAM

' Limpia la pantalla LCD ' muestra los 8 caracteres

Ejemplo 3. Creación de ocho caracteres especiales
' Anexo_A_Ejemplo_03.bas ' Creación y visualización de 8 caracteres especiales en LCD ' ------------------------------------------------------------------Device = 16F876 ALL_DIGITAL = True XTAL = 20 Declare LCD_DTPIN PORTB.4 Declare LCD_ENPIN PORTB.3 Declare LCD_RSPIN PORTB.1 TRISB.2 = 0 PORTB.2 = 0 Symbol CGRAM = $64 Dim I As Byte ' Pin de Datos LCD conect. al PORTB.4 ' Pin de Enable LCD conect. al PORTB.3 ' Pin de RS LCD conect. al PORTB.1 ' Declara a PORTB.2 como Salida Digital ' Coloca en PORTB.2 un Edo. Bajo 0 VDC ' Apuntador a la Memoria CGRAM del LCD

Main: 'CARGANDO EL 1ER. CARACTER PERSONALIZADO EN LA CGRAM Print 254,64, 31,04,14,10,10,14,04,31 'CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM Print 254,72, 31,31,31,31,31,31,31,31 'CARGANDO EL 3RO. CARACTER PERSONALIZADO EN LA CGRAM

Figura A.9. Fotografía de la ejecución del programa Anexo_A_Ejemplo_03.bas Creación de ocho caracteres especiales en CGRAM de la LCD.

Sistema de desarrollo para microcontroladores PIC®, iBOARD III. 98

Ejemplo 4. Efectos especiales con una Pantalla LCD El siguiente programa presentará un mensaje en la pantalla LCD y lo correrá hacia la izquierda (Scroll Left) dieciséis posiciones. Luego lo correrá a la derecha (Scroll Right) otras dieciséis posiciones.
' Anexo_A_Ejemplo_04.bas ' Efectos especiales con una pantalla LCD ' ------------------------------------------------------------------Device = 16F876 ALL_DIGITAL = True XTAL = 20 Dim Index As Byte Symbol SCRLEFT = 24 Symbol SCRRIGHT = 28 Declare LCD_DTPIN PORTB.4 Declare LCD_ENPIN PORTB.3 Declare LCD_RSPIN PORTB.1 TRISB.2 = 0 PORTB.2 = 0 Main: Print $FE, 1 Print At 1,1, " Print At 2,1, " DelayMS 2000 ' ' ' ' ' Constante para hacer SCR a la izq. Constante para hacer SCR a la der. Pin de Datos LCD conect. al PORTB.4 Pin de Enable LCD conect. al PORTB.3 Pin de RS LCD conect. al PORTB.1

' Declara a PORTB.2 como Salida Digital ' Coloca en PORTB.2 un Edo. Bajo 0 VDC ' Limpia la pantalla LCD ' Visualiza mensaje en la ' Línea 1 y Línea 2 Figura A.10. Fotografía de la ejecución del programa Anexo_A_Ejemplo_04.bas Efectos especiales con una pantalla LCD.

Pantalla LCD iBOARD III

" "

GoSub Scroll_Izquierda GoSub Scroll_Derecha DelayMS 1000 GoTo Main

'Desplaza todo el texto a la izquierda 'Desplaza todo el texto a la derecha

'SUB-RUTINAS '-------------------------------------------------------------------Scroll_Izquierda: For Index = 0 To 15 Print $FE, SCRLEFT DelayMS 300 Next Return Scroll_Derecha: For Index = 0 To 15 Print $FE, SCRRIGHT DelayMS 300 Next Return Sistema de desarrollo para microcontroladores PIC®, iBOARD III. 99

Ejemplo 5. Gráfica de Barras con LCD
' ' ' ' ' Programa: Anexo_A_Ejemplo_05.bas Ejemplo para generar un código de barras horizontal en la LCD |||||||||||||||||||||| Valor = xx -----------------------------------------------------------------Device = 16F876 ALL_DIGITAL = True XTAL = 20 Declare LCD_DTPIN PORTB.4 Declare LCD_ENPIN PORTB.3 Declare LCD_RSPIN PORTB.1 Low PORTB.2 ' Config. todos los puertos como dig. ' Define la velocidad del resonador ' ' ' ' ' Pines de conexión Pin de Datos LCD Pin de Enable LCD Pin de RS LCD Pin de RW LCD a la pantalla LCD conec. al PORTB.4 conec. al PORTB.3 conec. al PORTB.1 conec. al PORTB.2 For BAR_VAL = 48 To 0 Step -1 GoSub Bargraph DelayMS 100 Next GoTo Main 'SubRutinas '-----------------------------------------------------------------Bargraph: WARNINGS = OFF BYTE_MATH = On BARS = (BAR_VAL Min MAXBAR) / 3 BALANCE = (BAR_VAL Min MAXBAR) //3 BALF = BALANCE Min 1 Print At 1,1,Rep FULLBAR\BARS,Rep (BALANCE + BASEBAR)\BALF,_ Rep " " \B_WDTH - (BARS + BALF) Print At 2,1,"Valor = ", Dec BAR_VAL," " BYTE_MATH = OFF WARNINGS = On Return

' Declaración de variables y constantes ' ----------------------------------------------------------------Dim BAR_VAL As Byte ' Valor a graficar Dim BARS As Byte ' Numero de barras ||| a graficar Dim BALANCE As Byte ' Balance a la izq. | después barras Dim BALF As Byte ' Se necesita un caracter de balance Symbol Symbol Symbol Symbol Symbol B_WDTH = 16 MAXBAR = B_WDTH * 3 FULLBAR = 3 BASEBAR = 0 CGRAM = 64 ' ' ' ' Max No. de caracteres en la barra Max No. de segmentos barra Valor ASCII de la barra ||| Valor ASCII de la barra en blanco

DelayMS 1000 Cls

' Retardo requerido por la LCD ' Limpia todas variables en RAM EN LA CGRAM EN LA CGRAM EN LA CGRAM EN LA CGRAM

'CARGANDO EL 1ER. CARACTER ( ) PERSONALIZADO Print 254,64, $00,$00,$00,$00,$00,$00,$00,$00 'CARGANDO EL 2DO. CARACTER (| ) PERSONALIZADO Print 254,72, $10,$10,$10,$10,$10,$10,$10,$10 'CARGANDO EL 3RO. CARACTER (|| )PERSONALIZADO Print 254,80, $14,$14,$14,$14,$14,$14,$14,$14 'CARGANDO EL 4TO. CARACTER (|||)PERSONALIZADO Print 254,88, $15,$15,$15,$15,$15,$15,$15,$15

' Programa Principal '-----------------------------------------------------------------Main: For BAR_VAL = 0 To 48 GoSub Bargraph DelayMS 100 Next

Figura A.11. Fotografía de la ejecución del programa Anexo_A_Ejemplo_05.bas Gráfica de barras con una pantalla LCD.

Sistema de desarrollo para microcontroladores PIC®, iBOARD III. 100

permite efectuar la programación de los microcontroladores PIC® en forma “boot-loader” ICSP. un convertidor USB a Serial RS232 TTL. Fotografía del software iLOADER + iFT232. ofreciendo el menor costo de un sistema de desarrollo con comunicación USB. Nivel II: iLOADER + PT-40. PROGRAMA iLOADER El programa iLOADER es una aplicación desarrollada para trabajar con los productos: iFT232. Fotografía del software iLOADER + PT-40. . Esta única mezcla de características permite su uso en diversos campos que abarcan desde la enseñanza hasta el desarrollo de soluciones de bajo costo para aplicaciones comerciales y/o industriales. se combinan las aplicaciones típicas del microcontrolador junto con la instrumentación virtual y la automatización/control de procesos en un sólo entorno unificado. Esta combinación le permitirá trabajar con la mayoría de los microcontroladores PIC® de 40 pines de la serie 16F y 18F. . un oscilador de 20 MHz y una pantalla LCD de 2 líneas x 16 columnas. visualizar datos en forma de texto o gráfica e incluso intercambiar datos con el microcontrolador utilizando el estándar OPC® ampliamente aceptado en el campo de la automatización industrial. ya que. Nota: Mayor información sobre el producto PT-40.1. el cual. el sistema PT-40 puede ser incluido como parte de sus proyectos. Por su pequeño tamaño. en la base de colocación de cuarenta pines DIP 40 del microcontrolador PIC®. Esta combinación constituye el nivel básico de desarrollo. ocupa una superficie muy similar a la de un circuito integrado con encapsulado de 40 pines. todo listo para su correcto funcionamiento sin necesidad de utilizar componentes adicionales. iLOADER® se fundamenta en un concepto novedoso. iBOARD III. tales como: PIC16F874 PIC18F448 PIC18F4331 PIC18F4480 PIC18F4580 PIC16F874A PIC18F452 PIC18F4420 PIC18F4520 PIC18F4585 PIC16F877 PIC18F458 PIC18F4431 PIC18F4525 PIC18F4620 PIC16F877A PIC18F4220 PIC18F4439 PIC18F4539 PIC18F4680 PIC18F442 PIC18F4320 PIC18F4455 PIC18F4550 Figura B.1. iBOARD III y PT-40. Nivel I: iLOADER® + iFT232. . La combinación iLOADER + iFT232. Con el nivel intermedio usted dispondrá de una plataforma compacta de desarrollo que incluye. Un Un Un Un Un (01) (01) (01) (01) (01) Conversor USB a Serial RS232 TTL Programador para PIC boot-loader ICSP Osciloscopio virtual de ocho (08) canales Uart ( Hyper – Terminal ) recepción – transmisión Servidor de datos OPC Figura B.2. le permiten a usted disfrutar de: .roso-control. . en el cual. está disponible a través de la página web: http://www.com Sistema de desarrollo para microcontroladores PIC®.ANEXO B B. un circuito de RESET. 101 .

3. B. Durante la instalación. Seleccione la carpeta de instalación.4. 2. Siga las instrucciones que se le presentarán en la pantalla.4. Introduzca el CD que acompaña al programador etiquetado como “iLOADER” en la unidad de CD-ROM ó DVD de su PC. Esta plataforma le permitirá trabajar con los microcontroladores PIC® de 28 pines DIP 40 tales como: PIC16F870 PIC16F876A PIC18F2220 PIC18F2455 PIC18F2550 PIC16F871 PIC18F242 PIC18F2320 PIC18F2480 PIC18F2580 PIC16F873 PIC18F248 PIC18F2331 PIC18F2520 PIC18F2585 PIC16F873A PIC16F252 PIC18F2420 PIC18F2525 PIC18F2620 PIC16F876 PIC18F258 PIC18F2431/39 PIC18F2539 PIC18F2680 5. Pasos para la instalación del programa 1. se acompaña de un CD de instalación que contiene todos los elementos necesarios para su utilización. se observará la secuencia de pantallas como las indicadas en las figuras B. Le agradecemos lea detenidamente las siguientes indicaciones antes de continuar. Al concluir verifique que los drivers o controladores de su producto han sido instalados de forma correcta según se indica en su respectivo manual de usuario en cada producto en particular.1” permite su fácil instalación sobre un protoboard y/o tarjetas finales de control. su conexión al exterior por medio de terminales estándar de 0. como el reloj de tiempo real DS1307. La amplia variedad de periféricos incluidos en la iBOARD III. 4. 6. Si el programa de instalación no se inicia de forma automática. Asegúrese de recordar el directorio donde instaló el programa. 102 . utilice el explorador de Windows® y haga doble clic sobre el archivo “setup.Nivel III: iLOADER + iBOARD III. los archivos para el boot-loader. iBOARD III.2. ya que.3. Fotografía del software iLOADER + iBOARD III.2.(1. Sistema de desarrollo para microcontroladores PIC®. Figura B.4). INSTALACIÓN DEL SOFTWARE Requerimientos mínimos del computador • • • • • • Procesador Pentium 266 MHz o superior Memoria Ram 128 MBytes Espacio disponible HD 50 MBytes Unidad de CD ROM y/o DVD Puerto de comunicaciones USB Sistema Operativo Windows XP®/ Vista® Figura B. manual de operación y otros documentos de interés serán copiados en este directorio. Por otra parte. la memoria EEprom y el coprocesador ATMEL®. Asistente para la instalación del iLOADER. El software iLOADER. con una interfaz para Windows® muy amigable.1. 3. Obtenga el máximo beneficio y la mayor potencia de desarrollo al combinar el iLOADER con el sistema de desarrollo para microcontroladores PIC® iBOARD III. la hacen adecuada para el desarrollo de proyectos ambiciosos como trabajos especiales de grado y resolución de problemas en el área tanto comercial como industrial. La instalación del software es sencilla.exe”.

Selección de la carpeta de instalación del iLOADER.4.3. el programa soporta los siguientes microcontroladores Microcontroladores soportados en la versión actual del iLOADER: PIC16F87 PIC16F873A PIC16F877 PIC18F258 PIC18F1220 PIC18F2420 PIC18F2525 PIC18F2620 PIC18F4420 PIC18F4520 PIC18F4585 PIC18F6585 PIC18F6720 PIC18F8621 PIC16F88 PIC16F874 PIC16F877A PIC18F442 PIC18F1320 PIC18F2431/39 PIC18F2539 PIC18F2680 PIC18F4431 PIC18F4525 PIC18F4620 PIC18F6620 PIC18F6722 PIC18F8627 PIC16F870 PIC16F874A PIC18F242 PIC18F448 PIC18F2220 PIC18F2455 PIC18F2550 PIC18F4220 PIC18F4439 PIC18F4539 PIC18F4680 PIC18F6621 PIC18F8520 PIC18F8680 PIC16F871 PIC16F876 PIC18F248 PIC18F452 PIC18F2320 PIC18F2480 PIC18F2580 PIC18F4320 PIC18F4455 PIC18F4550 PIC18F6520 PIC18F6627 PIC18F8525 PIC16F873 PIC16F876A PIC18F252 PIC18F458 PIC18F2331 PIC18F2520 PIC18F2585 PIC18F4331 PIC18F4480 PIC18F4580 PIC18F6525 PIC18F6680 PIC18F8620 Figura B. Actualmente. Visualización de la instalación del iLOADER.2.4.roso-control. B.4. Sistema de desarrollo para microcontroladores PIC®.3. Figura B. 103 .Figura B. iBOARD III.com.4. Secuencia de pantallas mostradas durante la instalación del iLOADER. DISPOSITIVOS SOPORTADOS El programa iLOADER es completamente actualizable en forma gratuita a través de la página web: http://www.

la cual. B. Para ello. Se observa que el firmware se puede grabar a través de un programador del tipo serial y/o un programador del tipo USB. es necesario utilizar un programador para PIC® del tipo serial (iP3. el mismo se encuentra en el directorio donde instaló el programa. abarcando desde de la programación de los microcontroladores PIC®. iP3B) ó del tipo USB (iPROG18 ó PICKit2).hex Antes de utilizar el programa iLOADER como grabador/cargador de microcontroladores PIC®.hex de todos los dispositivos soportados y listos para trabajar con dos diferentes tipo de reloj ó resonador en 4Mhz y 20Mhz. Programador Serial Programador USB Firmware Boot-loader Figura B. Para seleccionar el firmware adecuado para su aplicación. los cuales. permite al núcleo del procesador trabajar a una velocidad muy superior al cristal/resonador externo que se encuentra conectado. ARCHIVOS “boot-loader” *.B.4. éstos deben pre-programarse con un “firmware” suministrado por el fabricante. (2) Convertir el microcontrolador comprado en un microcontrolador tipo bootloader.6. encontrará una carpeta con el nombre “12_PIC_Boot.hex indica que el microcontrolador utilizado es un PIC18F4550.. En la figura B.5. Una aplicación servidor de datos basada en el estándar OPC®.hex. PROGRAMA iLOADER. Algunos microcontroladores PIC incluyen un multiplicador de frecuencias PLL. el firmware identificado como PLL_18F4550_04_48. Programación del PIC con el archivo *.hex) de su preferencia.hex. basta con ubicar el nombre del archivo junto con su velocidad de trabajo. Una herramienta de visualización de datos gráficos y terminal de comunicaciones ASCII. Por ejemplo. el cual. La conjunción de estas potentes herramientas permite su utilización en múltiples aplicaciones.5. iBOARD III. 2. ha sido compilado para trabajar con un microcontrolador PIC18F4320 y un reloj con frecuencia de 20 Mhz. instrumentación virtual hasta incursionar en áreas como el control de procesos por computadora y la automatización industrial. la visualización de datos en tiempo real. iLOADER® se compone de las siguientes partes: 1. RAM y Eeprom del microcontrolador. Una herramienta de programación o carga de código en microcontroladores tipo boot-loader. se muestra el esquema de bloques utilizado para la programación del microcontrolador PIC® con el firmware boot-loader.hex”. 104 . el archivo 18F4320_20. 3.5. En este caso. Dentro del directorio de instalación del programa. Grabar la memoria flash del microcontrolador PIC® con el archivo (*. Sistema de desarrollo para microcontroladores PIC®. PASOS A SEGUIR PARA CONVERTIR UN MICROCONTROLADOR PIC® NUEVO (Virgen) EN UN MICROCONTROLADOR TIPO BOOT-LOADER (1) Adquirir el modelo del microcontrolador deseado en base a los modelos soportados por el software iLOADER. B. con un oscilador externo de 4Mhz pero que su recurso PLL ha sido configurado para que el microcontrolador trabaje internamente a 48 Mhz. leer la versión del “firmware” instalado.hex. contiene los archivos *. Este código se suministra gratuitamente en forma de archivos binarios con extensión *. permiten al programa iLOADER: identificar al microcontrolador PIC®. identificar tipo y memoria Flash.

opciones para el manejo del código ejecutable del • Importar Archivo *. Menú de la aplicación (2) El menú del programa iLOADER.hex: Carga el contenido de un archivo con código ejecutable de extensión *. 105 . iBOARD III. junto con los controles para minimizar y cerrar el programa iLOADER. • Verificar: Compara el contenido de la memoria de programa y de datos EEPROM existente en el microcontrolador con el contenido cargado en el programa iLOADER en caso de haber discordancias envía un mensaje de error. Vista general del programa iLOADER. Ofrece un acceso por medio del menú a las funciones básicas de programación. Programar EEPROM: Habilita/Deshabilita la escritura en la memoria EEPROM. • Salir: Finaliza la ejecución del programa iLOADER®. Esta lista se pierde al cerrar al iLOADER®. iLOADER. Borrar. Figura B. • Escribir: Graba el contenido de la memoria de programa y/o de la memoria de datos EEPROM • Leer: Realiza la lectura de las memorias del microcontrolador.B. Barra de identificación del programa (1) Presenta el nombre del programa.7. DESCRIPCIÓN GENERAL DEL iLOADER. brinda las siguientes opciones: Archivo. En esta pantalla podemos distinguir los siguientes elementos: • • • • • • • • Barra de Identificación del programa (1) Menú de la aplicación (2) Cuadro de información del hardware (3) Funciones para la programación de microcontroladores PIC® (4) Contenido de la memoria de Programa (5) Contenido de la memoria de datos (6) Íconos de información y estado (7) Cuadro de mensajes (8) • Opciones. Controla las opciones de programación del microcontrolador.6. La pantalla principal de la aplicación se presenta en la figura B.6. Borra el programa grabado en el microcontrolador PIC®.“hex” para ser grabado en el microcontrolador. A continuación se describen cada uno de ellos: Sistema de desarrollo para microcontroladores PIC®. Ofrece microcontrolador. • Lista de Archivos Recientes: Presenta los tres últimos archivos abiertos por el programa durante su ejecución actual. • • Programar Flash: Habilita/Deshabilita la escritura en la memoria flash.

permite transformar al microcontrolador en una fuente de datos en tiempo real utilizando uno de los estándares de intercambio de datos más aceptados por el entorno industrial. Si está deshabilitado el PIC® se quedará en estado de RESET. Modelo del PIC© detectado. Este sub-menú despliega El cuadro “Acerca de. Dispositivo.hex nuevo o al efectuar la lectura del microcontrolador. De esta forma. El componente gráfico tiene un gran campo de aplicación.. Se actualiza al cargar un archivo . Despliega la herramienta UART/SCOPE. llevan asociadas las mismas funciones que el menú iLOADER descrito en la sección anterior. El terminal de datos puede ser utilizado para depurar los programas escritos para el microcontrolador funcionando como un visualizador de texto. Es un cuadro de sólo lectura que no puede ser editado por el usuario. Esta poderosa herramienta al ser desplegada. Cuadro de Información del Hardware (3) • • • • En este cuadro podemos encontrar la siguiente información: Hardware. el pin de re-inicialización o /MCLR del microcontrolador PIC® sea liberado para permitir la ejecución del programa. Corresponde a la versión del firmware boot-loader residente en el PIC®. Sistema de desarrollo para microcontroladores PIC®.• Verificar al programar: Controla la verificación automática al terminar de programar. UART/SCOPE. pudiendo interactuar con cientos de programas de aplicación y otros dispositivos de control presentes en la industria moderna. Versión. Los datos graficados pueden ser impresos como parte de reportes o para analizar el comportamiento de las variables capturadas por el microcontrolador. permitiendo efectuar el registro de valores de forma visual en tiempo real de hasta 8 canales independientes de información. iFT232 ó PT-40). • Ejecutar programa al terminar: Esta opción al estar habilitada. Funciones para la programación de microcontroladores PIC® (4) Este conjunto de botones. 106 . Puerto. Indica el producto detectado (iBOARD III. Servidor OPC. Es el puerto COM virtual creado por el hardware al conectarse al puerto USB del computador. la cual se compone de un terminal bi-direccional de comunicaciones seriales ASCII y de un gráfico de visualización de señales de múltiples canales. Contenido de la memoria de programa (5) Muestra el contenido de la memoria de programa o memoria flash del microcontrolador. permite que una vez concluida la programación. iBOARD III. resulta muy simple integrar al microcontrolador en aplicaciones de automatización y control.” con información de la versión del programa iLOADER. Ayuda. El botón “Ejecutar” efectúa un reset del microcontrolador y comienza la ejecución del programa grabado en el PIC®.

suministra mensajes auxiliares que para indicar el estado del programa o de las acciones realizadas por el mismo. junto con los controles para minimizar. Sistema de desarrollo para microcontroladores PIC®. Figura B. 107 .Contenido de la memoria de datos EEPROM (6) Muestra el contenido de la memoria de datos EEPROM del microcontrolador. • • • • • • • • Barra de Identificación del programa (1) Cuadro de recepción de mensajes desde el microcontrolador (2) Selector del modo de trabajo (3) Configuración de la conexión (4) Opciones de la UART (5) Opciones del SCOPE (6) Escala de tiempo del SCOPE (7) Cuadro de edición de texto enviado al microcontrolador (8) A continuación se describen cada uno de ellos: Barra de identificación de la herramienta (1) Presenta el nombre de la herramienta: “iLOADER Herramienta UART/SCOPE”. HERRAMIENTA DE VISUALIZACIÓN DE DATOS UART/SCOPE La herramienta UART/SCOPE implementa un completo interfaz de visualización tipo texto (como un Hyper terminal) trabajando en forma de UART y tipo gráfico (como un osciloscopio) con capacidad de envío y recepción de datos a velocidades en el rango de 2400 a 57600 Baud. La figura B. iBOARD III..7. en la cual. Se actualiza al efectuar la lectura del microcontrolador PIC®. maximizar y cerrar la aplicación. Íconos de información y estado (7) Constituyen una ayuda gráfica que facilita el uso del programa iLOADER y advierte sobre el funcionamiento y las operaciones realizadas de forma exitosa o fallida. De ésta forma podemos transformar en segundos al iLOADER en un registrador gráfico en tiempo real de los datos provenientes desde el microcontrolador PIC®. Algunos de los íconos presentados durante el uso normal del programa se muestran a continuación: Cuadro de mensajes (8) Ubicado en el extremo inferior izquierdo de la pantalla. Muestra la pantalla de la herramienta UART/SCOPE. Cuando trabajamos con el modo gráfico (SCOPE) disponemos de un componente que permite graficar de forma simultánea hasta 8 canales de información digital o analógica.7. Herramienta UART/SCOPE incluida en el iLOADER. disponemos de un terminal de comunicaciones bi-direccional para enviar y recibir mensajes en forma de cadenas de texto codificados en ASCII. Tiene dos formas de operación: la primera destinada a manejar datos tipo texto (UART).8. En esta pantalla podemos distinguir los siguientes elementos: B.

iBOARD III. Opciones de la UART (5) Este grupo de controles solo está activo en el modo UART y permite efectuar las siguientes acciones: • Eco Activado: Al estar activo. C1 y C2. Selector del modo de trabajo (3) Es un selector con forma de interruptor deslizante con dos posiciones: UART/SCOPE. Configuración de la conexión (4) Este grupo de controles está conformado por cuatro (04) elementos: • Caja de selección de la velocidad de conexión: Establece la velocidad de la comunicación en baudios (bits/seg) entre el microcontrolador PIC® y el computador. los cuales se denominan: C0. • • Botón “Desconectar”: Se utiliza para cerrar el puerto de comunicaciones del computador. la gráfica SCOPE sólo mostrará los datos recibidos durante una ventana temporal. 30 segundos. • Incluir CR+LF: Añade un carácter de fin de línea a los datos enviados al microcontrolador. Mediante este selector el usuario puede cambiar la escala de tiempo horizontal de la gráfica desde un valor de 10 segundos a 10 minutos. ya que. se observa la diferencia entre ambos modos de trabajo al recibir los mismos datos. Permite el uso de los comandos de control mostrados en la tabla anexa figura B. Emite un sonido por la campana del computador. • Mostrar CH. Opciones del SCOPE (6) Este conjunto de opciones estará disponible sólo cuando esté activada la opción SCOPE. • Limpiar: Borra el contenido del cuadro de recepción de mensajes y realiza un reset al microcontrolador. hace que el fondo de la pantalla cambie de color negro a color blanco. con un bit de inicio. Comandos de control soportados por la Herramienta UART/SCOPE del iLOADER. 1 minuto y 10 minutos. permite que los mensajes enviados al microcontrolador PIC®. 108 . Comando ASCII 0 7 8 9 13 Significado Clear.9. debe seleccionar primero la velocidad de comunicación en Baudios. Advertencia: El uso de velocidades no estándar al momento de comunicarse con el microcontrolador PIC® debe hacerse cuidadosamente. Carriage Return. En la figura B. permite definir una velocidad personalizada comprendida entre estos mismos valores. En modo comprimido. Los datos se transmiten utilizando el formato 8N1.Cuadro de recepción de mensajes desde el microcontrolador (2) Es este cuadro se observan los datos enviados por el microcontrolador.8. Para poder activarse. • La opción “Color Negro”. Botón “Conectar”: Se utiliza para abrir el puerto de comunicaciones del computador. Se pueden seleccionar velocidades de comunicación estándar entre 2400 y 57600 baudios. permite la visualización o no de las grillas horizontales y verticales de la gráfica SCOPE. Bell. Borra la pantalla de textos. a fin de. Allí se visualizan los valores que toman los tres (03) primeros canales disponibles de la pantalla SCOPE. TAB. Agrega un tabulador para dar formato al texto. Avance el texto a la siguiente línea. se visualicen en pantalla del UART.8. el eje del tiempo de la gráfica se comprime cada vez que llega un nuevo dato. Se comporta como un terminal de datos ASCII que admite todos los caracteres ASCII estándar (0 al 127). • Tracking: Establece el modo de visualización de los datos. Backspace. Figura B. se refiere a mostrar los paneles indicadores digitales que se encuentran en la parte inferior de la pantalla SCOPE. En el modo deslizante. Botón “Salir”: Cierra la herramienta UART/SCOPE. pudiendo en ser forma deslizante o comprimido. • Sistema de desarrollo para microcontroladores PIC®. Escala de tiempo del SCOPE (7) Define la escala horizontal de tiempo de la gráfica cuando se trabaja en modo deslizante. La opción “Otro Valor”. disminuir el costo de impresión de la gráfica mostrada. 8 bits de datos y un bit de parada sin verificación de paridad. Borra un carácter. algunos compiladores para PIC® sólo soportan velocidades normalizadas. • Grillas On. Los valores posibles: 10 segundos.

Esto implica que el microcontrolador puede comenzar a actuar como un equipo de medición o control abriéndole a usted un enorme conjunto de posibilidades.opcfoundation. Cuadro de edición de texto enviado al microcontrolador (9) Este cuadro se compone de dos elementos. la cual. Figura B. Figura B. Sistema de desarrollo para microcontroladores PIC®. El segundo elemento. El OPC. el cual.org) y consiste básicamente en un sistema de interfaces estándar basado en OLE/DCOM de Microsoft™. la hace una aplicación única en su tipo. Con el iLOADER correctamente configurado.10. Gráfica de datos en modo deslizante (arriba) y modo comprimido (abajo). 109 . Interconexión de elementos heterogéneos en un ambiente de trabajo.10. usted ahora puede desarrollar sus propios equipos. se caracteriza por la presencia de elementos heterogéneos que intercambian datos de forma transparente tal como se muestra en la figura B. Ud. en el botón “Enviar”. ya que.B. Un sistema de automatización industrial en un ambiente moderno basado en OPC®. HERRAMIENTA SERVIDOR DE DATOS OPC® Una de las características más interesantes del iLOADER. (OLE para el Control de Procesos) es una especificación técnica no propietaria definida por la OPC Foundation (http://www.9. sólo tendrá que enviar y recibir sus datos de forma serial – USB al computador y el software iLOADER se encargará del resto. el primero es una caja de texto estándar. podemos escribir mensajes en forma de texto o valores numéricos que posteriormente se enviarán al microcontrolador PIC®. iBOARD III. Con OPC® es posible ínter-operar dispositivos industriales con sistemas de información. se utiliza para enviar los datos desde el computador hacia el microcontrolador PIC®. podemos incluir al microcontrolador PIC® como un equipo más dentro de este tipo de ambientes de una manera sumamente sencilla. instrumentos y aparatos e integrarlos a la red de instrumentación y control OPC® disponible en la industria. en la cual. Para disfrutar de todo estos beneficios.9. es la implementación de la herramienta servidor de datos OPC®.

Figura B. Se pueden seleccionar velocidades de comunicación estándar entre 2400 y 57600 baudios. utilizado por el hardware.Descripción de la Herramienta Servidor de Datos OPC La figura B. Estado del Servidor OPC: Indica si el servidor se encuentra o no configurado para trabajar. maximizar y cerrar la aplicación. Variables de salida: Indica la cantidad de variables que son enviadas desde el PC al microcontrolador PIC®. si está ejecutándose de manera correcta o si ha ocurrido un error. permite definir una velocidad personalizada comprendida entre estos mismos valores. Advertencia: El uso de velocidades no estándar al momento de comunicarse con el microcontrolador debe hacerse cuidadosamente. muestra la pantalla de la herramienta Servidor OPC.. 110 . Estas variables sólo deben ser leídas por los clientes OPC conectados. Herramienta Servidor de Datos OPC incluida con el iLOADER. No. • • • Sistema de desarrollo para microcontroladores PIC®. Configuración de la conexión al PIC® (3) Este grupo de controles está conformado por cuatro (04) elementos: • Caja de selección de la velocidad de conexión: Establece la velocidad de la comunicación en baudios (bits/seg) entre el microcontrolador PIC® y el computador. Información del Servidor de Datos OPC (2) Contiene la información referente a: • • Puerto (COM): Puerto COM virtual. Clientes OPC conectados: Refleja la cantidad clientes que están recibiendo datos desde el servidor OPC iLOADER.11. Variables de entrada: Indica la cantidad de variables que son enviadas desde el PIC® al PC. iBOARD III. algunos compiladores para PIC® sólo soportan las velocidades normalizadas. No. Los datos se transmiten utilizando el formato 8N1. ya que. La opción “Otro Valor”. con un bit de inicio. junto con los controles para minimizar. No. 8 bits de datos y un bit de parada sin verificación de paridad. En ésta pantalla podemos distinguir los siguientes elementos: • • • • • Barra de Identificación del programa (1) Información del Servidor de Datos OPC (2) Configuración de la conexión al PIC® (3) Configuración de variables de entrada (4) Configuración de variables de salida (5) A continuación se describen cada uno de ellos: Barra de identificación de la herramienta (1) Presenta el nombre de la herramienta: “iLOADER Herramienta Servidor de Datos OPC ”.11. Una vez que se está ejecutando no puede cerrarse el servidor hasta que todos los clientes están desconectados.

para actualizar el valor de la variable entera “E0”. • • Configuración de las variables de entrada (4) Las variables de entrada del servidor OPC. iBOARD III. 2. Estando detenido el servidor.net y otras plataformas. 5. El servidor OPC actualiza internamente el valor de la variable. se definen como aquellas que van en sentido Microcontrolador PIC® -> al PC. Entero. Para enviar un dato desde el microcontrolador PIC® al servidor OPC. el cual. las cuales. donde x es un número entero en el rango de 0 al 19. Mediante los botones “Añadir” y “Eliminar” podemos modificar la cantidad de variables de entrada desde 0 hasta 19. La celda “Valor” puede ser editada de forma manual. Double y String. LABView®. 13 6. 111 . Mediante los botones “Añadir” y “Eliminar” podemos modificar la cantidad de variables de salida desde 0 hasta 19. 13 El servidor procesa la solicitud de lectura y envía al PIC® el último valor disponible de la variable utilizando el siguiente formato: Nombre Variable . Detiene el servicio y el servidor ya no estará disponible hasta presionar de nuevo “Iniciar Servidor”. el software mostrará un mensaje de error. Botón “Detener Servidor”: Sólo se activa una vez que todos los clientes OPC se han desconectado. DEC Valor_Variable. de utiliza el siguiente formato: Nombre Variable . debe seleccionarse primero: la velocidad de conexión en Baudios. Entero. se definen como aquellas que van en sentido del PC -> al microcontrolador PIC®. éste se actualizará en forma inmediata en la celda denominada “Valor”. es posible cambiar la configuración de sus variables de entrada o salida. El nombre de cada variable es visible para los clientes OPC® que hagan uso del servidor dentro de una carpeta llamada “Entradas”. Double y String. Las variables de entrada se identifican mediante “Ex”. El nombre de cada variable es visible para los clientes OPC que hagan uso del servidor dentro de una carpeta llamada “Salidas” Haciendo clic sobre la celda “Tipo de Dato” se puede seleccionar el tipo canónico de las variables entre las opciones: Boolean. Por ejemplo. El microcontrolador PIC® debe enviar una solicitud de lectura de la variable de salida que requiere. el PIC® debe enviar al PC : “E0”. Para su correcta activación. Por ejemplo. por ejemplo: Boolean. Valor . El servidor OPC expone a los clientes OPC los nombres y tipos de las variables de salida disponibles. donde x es un número del 0 al 19. Configuración de las variables de salida (5) Las variables de salida del servidor OPC. Normalmente estas variables son modificadas por una aplicación tipo cliente OPC®. Botón “Salir”: Cierra la herramienta Servidor de Datos OPC. *. Haciendo clic sobre la celda “Tipo de Dato” se puede escoger la forma canónica de las variables. El mecanismo de funcionamiento de las variables de salida es el siguiente: 1. 13 3. hace uso del servidor para intercambiar información con el microcontrolador PIC®. programas propietarios y/o aplicaciones genéricas realizadas en VB6. En caso de alcanzar el máximo de variables permitidas. Al recibir el valor de la variable enviada por el microcontrolador PIC®. Valor . La aplicación “cliente” envía el valor de la salida al servidor OPC del iLOADER. 13 Es imprescindible el uso del carácter de terminación 13 (CR) para poder establecer la comunicación con el PC. la cantidad de variables de entrada o salida requeridas y el tipo canónico de las mismas. Sistema de desarrollo para microcontroladores PIC®. para leer la variable “S0” el PIC® debe enviar al iLOADER: “S0”. El Microcontrolador PIC® recibirá la información (variable) enviada por el PC.• Botón “Iniciar Servidor”: Al presionar este botón se crea el servidor de datos OPC. estará disponible de inmediato a los clientes OPC. 4. Las variables de salida se identifican mediante “Sx”. por ejemplo: el programa MatLAB®.

13.13. iBOARD III. Mensaje de error del programa iLOADER al no detectar ningún hardware compatible. vienen pre-programados de fábrica. elija el archivo que contiene su programa.10. y el programa se cerrará automáticamente. Preparación del Microcontrolador PIC® como Boot-Loader Siga las instrucciones señaladas en la sección B. para leer el valor de la variable entera “S0”.12. Pantalla principal del iLOADER. Sistema de desarrollo para microcontroladores PIC®. Inicie el programa iLOADER. Figura B. los cuales.2. 13 B. Conecte el Hardware al puerto USB Antes de inicializar el software asegúrese que los controladores o drivers adecuados para el hardware utilizado han sido cargados de forma satisfactoria. la secuencia de operaciones es la siguiente: PIC -> PC : “ S0”.hex de la figura anterior. Conecte un extremo del cable USB al PC y el otro al hardware de desarrollo y verifique es éste se encuentra energizado.hex Figura B. Esta acción no es necesaria para los microcontroladores incluidos en los sistemas PT-40 y/o iBOARD III. En caso de ocurrir algún error.5. Paso No.12. 13 PC -> PIC : ”S0”. En esta sección describiremos los pasos necesarios para lograr utilizar el iLOADER® como programador ICSP boot-loader de microcontroladores.Por ejemplo. aparecerá el mensaje de la figura B. DEC Valor_Variable. Paso No.3. En este ejemplo. COMO UTILIZAR AL PROGRAMA iLOADER. Paso No. para convertir un microcontrolador nuevo en boot-loader de manera que pueda ser utilizado con el programa iLOADER.1. iBOARD III ó iFT232). aparecerá la pantalla principal mostrada en la figura B. Importar el archivo ejecutable Seleccione el Menú: Archivo->Importar Archivo *. Utilizando el cuadro de búsqueda de archivos . Al encontrar un hardware válido (PT-40. utilizaremos uno de los archivos ejemplos incluidos en CD de instalación del iLOADER. 112 .

Usted puede habilitar la opción “Verificar al Terminar” para comprobar la correcta grabación del PIC® de forma automática. Archivo *. . Figura B.hex. Ejemplo de error en la carga de archivo . La opción “Ejecutar Programa al Terminar” permite que el programa cargado al micro se ejecute inmediatamente después de terminar la programación del PIC®. iBOARD III.15. En caso de ocurrir algún error. Flash y Eeprom”.hex. Sistema de desarrollo para microcontroladores PIC®. El ícono de la parte inferior derecha de la pantalla indicará que la operación ha sido exitosa (figura B.14.15). El contenido de la memoria Flash y Eeprom se pueden visualizar activando la opción “Ver Memo.hex.4. Paso No.Al cargar de forma exitosa el archivo. Figura B. En la parte inferior podemos observar el directorio y nombre del archivo cargado.16.hex cargado de forma exitosa. se mostrará en los cuadros Memoria de Programa y Datos en EEPROM el contenido del archivo . Selección del archivo . Programar EEPROM y Ejecutar Programa al Terminar. se indicará en forma de texto y mediante el ícono gráfico como se muestra en la figura B. 113 . Seleccione las opciones de programación (opcional) Por defecto. Figura B. las opciones de programación activas son: Programar Flash.16.

Figura B. Ejecutar Programa (opcional) Si desea ejecutar el programa recién transmitido al microcontrolador PIC®. Paso No. La figura B.3. Se desplegará la pantalla de la figura B. El ícono de programa en ejecución le informará que el PIC® se encuentra ejecutando su programa.11. Paso No.Paso No.hex Veamos en detalle el código fuente en lenguaje PROTON® del programa UART_01. iBOARD III. Iniciar Herramienta UART/SCOPE Haga clic en el menú UART/SCOPE. Todos los programas utilizados en esta parte se encuentran se dentro del CD que acompaña al iLOADER en la carpeta de instalación del software en su computador. Paso No. 114 .7. Sistema de desarrollo para microcontroladores PIC®. Cargar el Programa Cargue el programa UART_01. Pantalla de la aplicación UART/SCOPE B. haga clic sobre “Ejecutar”. Conexión con el PIC® Seleccione la velocidad de conexión en 19200 baudios y oprima conectar. Paso No.6.bas La instrucción DECLARE HSERIAL_BAUD 19200 define la velocidad de la comunicación en el PIC® en 19200 Baudios.1. Una barra de progreso le indicará el desarrollo de la operación y al finalizar de forma satisfactoria el ícono de verificación exitosa aparecerá en parte inferior de la pantalla. En esta sección describiremos los pasos necesarios para lograr utilizar la herramienta UART/SCOPE del iLOADER con los programas de ejemplo incluidos en el CD de instalación. MANEJO DE LA UART/SCOPE La comunicación con la herramienta UART/SCOPE se hace mediante el formato 8N1 a una velocidad ajustable entre 2400 y 57600 bps. Verificar la programación del Microcontrolador (opcional) Presione el botón “Verificar” para iniciar el proceso.16. Escribir en el Microcontrolador Presione el botón “Escribir” para iniciar el proceso de grabación.16.2. Paso No.5.17 muestra la ejecución del ejemplo UART_01. Una barra de progreso le indicará el desarrollo de la operación y al finalizar de forma satisfactoria el ícono de grabación exitosa aparecerá en parte inferior de la pantalla.hex al microcontrolador siguiendo las indicaciones dadas en la sección anterior. Directorio: “\16_Uart_Scope_OPC”.

.13 HRSOut "------------------------------------------------"..13.. iii. Limpia la pantalla y lleva el cursor". Clear Screen (Limpiar pantalla) 7 .."El Comando 0.hex ' ' ' ' ' ' ' ' ' ' ' ------------------------------------------------------------------Programa: UART_01 Utilización de la herramienta UART del iLOADER. utilización de HRSIN HRSOut 13.) Se emitio otro beep.13 DelayMS 5000 ' Se utilizará el comando 9 para colocar tabulaciones y se ' mostrarán los códigos ASCII(32) al ASCII(127) HRSOut "Uso del Comando 9 Tabulaciones y los codigos ASCII ". 7 End EndIf GoTo Loop End Sistema de desarrollo para microcontroladores PIC®.. Main: ' El comando 0 hará una limpieza de pantalla y colocará el cursor ' en la primera posición de la pantalla arriba y a la izquierda. 13 Next ' Iteración con el usuario." (.) Se emitio un beep .13 Loop: HRSOut "Desea ir al inicio del programa (s/n)? ".13 HRSOut 7. se practicarán los comandos: 0 . Dec i. "..La instrucción HRSOUT se utiliza para transmitir información serial por medio de la USART del PIC® mientras que HRSIN recibe los datos provenientes del computador.". 9 HRSOut "El Valor ASCII(". "...13 DelayMS 5000 ' Se utilizará el comando 7 para emitir un sonido (beep) en el PC HRSOut "Ahora utilizaremos el comando 7 (Beep) . Carry Return (Control de Carro) Los caracteres ASCII permitidos son desde el ASCII (32 .13 HRSOut 7.Dec iii. columna 0 . Campana) 9 . Tabulador (Cursor Tabulación) 13 . 115 ."...13 Figura B.13 HRSOut "-----------------------------------------------".Dec i. 9 HRSOut "El Valor ASCII(". ")= "..127). iBOARD III.13 DelayMS 5000 HRSOut 7. hasta luego .13 HRSOut "-------------------------------------------".13 HRSOut "---------------------------------------------------". 7. ii.13. HRSOut 0."."Iteracciones con el usuario a traves del HRSin ". i... ")= "..13 HRSin i If i = "s" Or i = "S" Then GoTo Main EndIf If i = "n" Or i = "N" Then HRSOut "Fin del programa.17. Beep (Emite un Beep. ------------------------------------------------------------------Device = 16F876 ' Microcontrolador Utilizado XTAL 20 ' Velocidad del Reloj (resonador) Dim i As Byte Dim ii As Byte Dim iii As Byte Declare HSERIAL_BAUD 19200 DelayMS 1000 ' ' ' ' ' Variable auxiliar Variable auxiliar Variable auxiliar Velocidad de conexión Micro <-> PC Retardo inicial requerido por el Repeat HRSOut "Marque un numero entre cero (0) y nueve (9) = " HRSin Dec i Until i >= 0 And i <= 9 HRSOut "Usted ha marcado el numero ". ")= ".." (..Dec ii..13 DelayMS 2000 For i = 32 To 125 Step 3 ii = i+1 iii = i+2 HRSOut "El Valor ASCII(". Ejecución del programa UART_01..13 HRSOut "Al punto inicial: linea 0..

En este programa vemos como desplegar datos en forma de texto. "HEX i". Para ello escriba el valor en la casilla “Enviar String” y presione “Enviar”. For i=0 To 255 HRSOut 9. ' Comando 0 (Clear) HRSOut HRSOut HRSOut HRSOut HRSOut HRSOut 0 "Este programa presenta los valores de i". "BIN i". DEC3 i. 13 ' ' ' ' ------------------------------------------------------------------Programa: UART_02 Visualización lineal de datos .. Durante la ejecución.13 "-----------------------------------------".hex .13 9. Una vez cargado en el microcontrolador PIC® el programa UART_02.. BIN8 i. Hex2 i. 9. 9. DEC3 i. 9. presenta en la pantalla del computador la variable i en tres formatos numéricos diferentes: (a) decimal de 3 dígitos (DEC3). La figura B.13 Next End HRSOUT "Este programa presenta los valores de i". BIN8 i.13 "-----------------------------------------".bas en lenguaje Basic PROTON®. Ejecución del programa UART_02.hex. HRSOUT 9. es obligatorio su uso.18. Al hacer esto. ' ' El comando 0 hará una limpieza de pantalla y colocará el cursor ' en la primera posición de la pantalla arriba y a la izquierda. los valores escritos por usted ya sean del tipo texto (String) o numéricos serán enviados al microcontrolador PIC®. HEX2 i.bas muestra cómo utilizar todos los comandos de control admitidos por la herramienta UART/SCOPE."DEC i". iBOARD III. por ejemplo: la instrucción envía el texto encerrado entre comillas seguido del comando 13. Veamos en detalle el código fuente del programa UART_02. mediante el menú UART/SCOPE seleccione la velocidad de comunicación a 19200 baudios y oprima conectar. (b) Hexadecimal de 2 dígitos (HEX2) y binario de 8 dígitos (BIN8). ------------------------------------------------------------------Device = 16F876 ' Microcontrolador Utilizado XTAL 20 ' Velocidad del Reloj (resonador) Dim i As Byte ' Variable auxiliar Sistema de desarrollo para microcontroladores PIC®. 116 Figura B.hex. Así la instrucción mostrada a continuación.13 También se puede observar el uso del comando 0 para borrar el contenido de la pantalla y de los modificadores de formato para presentar información numérica en diferentes formas.13 OTRO EJEMPLO CON EL UART. 9.18 muestra la ejecución del programa UART_02. 9. También podemos observar la forma en que es recibida la información enviada desde el PC. se le solicita al usuario que introduzca valores por medio del teclado.13 "en formato Decimal. 9.El programa UART_01. Hexadecimal y binario". Declare HSERIAL_BAUD 19200 DelayMS 1000 Main: ' Velocidad de conexión al PC ' Retardo inicial requerido por el ' UART.

” mientras el símbolo de separación de miles debe ser una coma “.hex. 2. 3. DEC3 i . con x = 1. La herramienta permite trabajar con 8 canales. respectivamente.bas. La figura B. “C2”.12. El programa debe incluir un retardo al principio del mismo de 1000 ms. DEC Valor. el cual. Programa SCOPE_01. 117 .1. ------------------------------------------------------------------Device = 16F876 ' Microcontrolador Utilizado XTAL 20 ' Velocidad del Reloj (resonador) Dim i As Word Declare HSERIAL_BAUD 19200 DelayMS 1000 Main: For i = 0 To 999 HRSOut "C0". “C6” y “C7”. Se pueden graficar datos tipo entero o flotante. se identifican como “C0”. los cuales.hex En la parte inferior de la pantalla. se encuentra en el CD de instalación y es mostrado a continuación: ' ' ' ' ------------------------------------------------------------------Programa: SCOPE_01 Visualización de datos Enteros a través del canal "C0" del SCOPE . El formato usado para enviar datos a un canal del SCOPE. necesario para sincronizar correctamente los datos. es obligatorio su uso.4. es el siguiente: “Cx”.. “C4”. Paso No. Sistema de desarrollo para microcontroladores PIC®.3.2.B. Cargar el Programa Siga las indicaciones suministradas anteriormente y programe al microcontrolador PIC® con el código del programa denominado SCOPE_01. iBOARD III. Iniciar Herramienta UART/SCOPE Haga clic en el menú UART/SCOPE. reflejan el último valor graficado en los canales C0.19.5.3. “C1”. muestra la ejecución del programa SCOPE_01. Graficando una señal diente de sierra. Al trabajar con números en flotante debe considerarse la configuración regional del computador y ajustar el símbolo decimal en punto “. 13 Paso No. “C3”.13 Next i GoTo Main ' ' ' ' Variable auxiliar Velocidad de Conexión al PC Retardo inicial requerido por el SCOPE.6 y/o 7 Figura B. OPERACIÓN EN MODO SCOPE Las recomendaciones generales para el manejo del SCOPE son las siguientes: 1. Se desplegará una pantalla como la mostrada de la figura B. Coloque el selector de modo de trabajo en la posición “SCOPE” (a la derecha).19. El programa fuente en Basic PROTON® puede cargarse a través del archivo SCOPE1. 4. “C5”. los cuales.2. Conexión con el PIC® Seleccione la velocidad de comunicación a 19200 baudios y oprima conectar. Paso No.”.hex.19. C1 y C2. podemos observar tres indicadores numéricos.

10 j = ((Random)/10000. Dec HRSOut "C2". "C4". Sistema de desarrollo para microcontroladores PIC®. muestra como graficar datos tipo entero en los 8 canales del SCOPE en forma simultánea.5) j = j + 20. El resultado del programa podemos verlo en la figura B. i+400.21. ver figura B. i+200. "C6".0 / 2. podemos observar como el SCOPE puede graficar datos con diferentes formas canónicas. i+500.21. Dec HRSOut "C7".En el ejemplo del programa SCOPE_04. Programa SCOPE_05. Figura B. "C3". iBOARD III. ------------------------------------------------------------------Device = 16F876 ' Micro Utilizado XTAL 20 ' Velocidad del Reloj Dim i As Float ' Variable auxiliar Dim j As Float Declare HSERIAL_BAUD 19200 ' Velocidad de conexión al PC i = 0 j = 0 DelayMS 1000 HRSOut "C0". suministrado en el CD del iLOADER como programa SCOPE_05. Dec HRSOut "C3". Dec HRSOut "C5". i+700. 13 i+100. ' ' ' ' ' -------------------------------------------------------------Programa: SCOPE_05 Visualización de datos en los 8 canales en forma simultánea "C0". 13 If i >= 10 Then i = 0 j = 0 EndIf i = i + 0. DEC2 j. Dec HRSOut "C6". i+300.bas en Basic PROTON® se presenta a continuación: ' ' ' ' ' ------------------------------------------------------------------Programa: SCOPE_04 Visualización de datos en punto flotante a través de los canales "C0". 13 HRSOut "C1".0 GoTo Main Main: El ejemplo siguiente. 13 13 13 13 13 13 13 Figura B. mientras que los datos correspondientes al canal en azul son del tipo entero. DEC2 i. i+600. Dec HRSOut "C4". "C1". El listado de la codificación del programa SCOPE_04.20. 118 . "C7". Dec HRSOut "C1". "C5".bas graficando dos señales de diferentes tipo canónico. "C2". "C1". Programa SCOPE_04.bas. Los datos correspondientes al canal de color rojo son del tipo punto flotante.20. Dec Next GoTo Main i.bas graficando en los 8 canales en forma simultánea. -------------------------------------------------------------Device = 16F876 ' Micro Utilizado XTAL 20 ' Velocidad del Reloj Dim i As Byte ' Variable auxiliar Dim Valor As Byte Declare HSERIAL_BAUD 19200 ' Velocidad de conexión al PC Main: For i = 0 To 99 HRSOut "C0".

Dec a.bas.22. Configurar el Servidor Como puede observarse en el código fuente. Dec ((i/64*127)+256). Paso No. 13 Next GoTo Main Paso No.NET. También debemos ajustar mediante la casilla de selección de tipo.24 se observa al servidor OPC ejecutando el programa OPC_01. MANEJO DEL SERVIDOR OPC En esta sección. 13 HRSOut "E2". A continuación se presenta el código fuente del programa OPC_01. Paso No.13. es decir E0. del tipo canónico entero. Utilizando el botón “Eliminar”.1.23). iBOARD III. ya sea en la computadora local o en cualquier otra computadora instalada en red. En la figura B. permitirá a los clientes OPC recibir los datos. Esta acción dará inicio al servicio OPC en el computador.bas en el PIC®. 119 . Excel®. Utilizando el botón “Eliminar”.3. E1" y "E2" del Servidor OPC ------------------------------------------------------------------Device = 16F876 ' Micro Utilizado XTAL 20 ' Velocidad del Reloj Dim i As Byte ' Variables auxiliar Dim a As Byte Declare HSERIAL_BAUD 19200 ' Velocidad de conexión al PC Main: For i = 0 To 127 a = Sin i HRSOut "E0". dejaremos en el cuadro de variables de entrada del menú Servidor OPC. este programa utiliza 3 variables de entrada al servidor (E0. entre otros: MatLAB®. Conexión con el PIC® Seleccione la velocidad de comunicación adecuada (en este ejemplo 19200 Baudios) y oprima “Iniciar Servidor”. Figura B. Nota: La velocidad de conexión estará establecida por la velocidad de comunicación serial utilizada por usted en el programa realizado. Sistema de desarrollo para microcontroladores PIC®. LabView® y aplicaciones realizadas en VB6®. Estas variables son generadas por el microcontrolador PIC® a través del programa Basic PROTON®. en los ejemplos aquí incluidos se utiliza una velocidad de 19200 Baudios. el tipo de las variables siendo E0.22. ' ' ' ' ------------------------------------------------------------------Programa: OPC_01 Envío de datos a las variables "E0". Vista del Servidor OPC® al iniciarse. E1 y E2) siendo todas de ellas de tipo canónico entero. Cargar el Programa e inicializar el servidor Siguiendo las instrucciones previas programe el código OPC_01. Estos programas podrán ser. se eliminarán todas las variables de salida no requeridas.2. Con el servidor de datos OPC usted podrá exportar – importar variables desde su microcontrolador a cualquier programa con capacidad de manejo de datos a través del protocolo OPC®. . E1 y E2. 13 HRSOut "E1". Se mostrará la pantalla de configuración/trabajo del Servidor OPC tal como se muestra en la figura B. describiremos el manejo y uso del servidor de datos OPC incluido en el iLOADER.B. solamente a aquellas variables que se utilizarán.bas codificado en Basic PROTON®. E1 y E2. El servidor ya ha sido configurado y está listo para ser iniciado (ver figura B. Seguidamente presione en el menú principal del programa iLOADER la opción “Servidor OPC”. local y/o extendida. lo cual. Dec (i+127).

bas Figura B. es necesario el uso de un programa cliente OPC para visualizar los datos que exporta el microcontrolador PIC® a través del servidor OPC del programa iLOADER. Servidor OPC ejecutando el programa OPC_01. Anexo se presenta su codificación en Basic PROTON®. Dentro del CD del iLOADER encontrará una aplicación ejecutable llamada iLOADER_OPC_Cliente.25.23. El ejemplo denominado OPC_02. Configuración del servidor OPC para el ejemplo OPC_01. la cual.exe” OTRO EJEMPLO CON EL OPC®. iBOARD III. Figura B.25. 120 .bas es un programa que muestra las capacidades de exportación e importación de variables a través del microcontrolador PIC® y el uso del servidor OPC. ' ' ' ' ------------------------------------------------------------------Programa: OPC_02.En este punto.24. Ejecute la aplicación “iLOADER_OPC_Cliente”. Visualización de la aplicación “Cliente_OPC_iLOADER. Observe los valores graficados y los valores correspondientes a las entradas como se muestra en la figura B. nos servirá para poder interactuar con el servidor OPC y microcontrolador PIC®.bas Declare HSERIAL_BAUD 19200 HSERIAL_CLEAR = On ' Variables Auxiliares ' Velocidad de conexión al PC ' Limpia el Buffer antes de recibir Sistema de desarrollo para microcontroladores PIC®.bas Porgrama para probar el servidor OPC ------------------------------------------------------------------Device = 16F876 ' Micro Utilizado XTAL 20 ' Velocidad del Reloj Dim i As Byte Dim J As DWord Figura B.

26. Dec J] Si el servidor envía el valor de S0 el dato recibido se almacena en la variable j y se re-transmite hacia la variable de entrada E1 dentro del servidor: HRSOut "E1". HRSOut "S1". Figura B. se re-transmite hacia la variable de entrada E2. 13 HSerIn 100 .. Seguidamente. al ser recibida por el microcontrolador PIC®. 13 El PIC® solicita al servidor OPC el valor de la variable de salida S0 y espera la respuesta durante 100 ms. TIMEOUT1. Dec J. Estado de la aplicación OPC®. Dec J] HRSOut "E2".[Wait("S1") . Dec J. debemos configurar e iniciar el servidor como se muestra en la figura B. HRSOut "E0". Dec i. Sistema de desarrollo para microcontroladores PIC®. 13 TIMEOUT1: Next GoTo Main Si la ejecución es exitosa.[Wait("S0") . cantidad suficiente como para manejar un pequeño proceso de control industrial. Dec J. se actualizan en el servidor. Estado del Servidor OPC®. se observa el resultado de la ejecución del programa. las variables E1 y S0 deben contener en todo momento el mismo valor. Configuración del servidor OPC para el programa OPC_02. 13 HRSOut "S0". Dec J. TIMEOUT.27. procesada por el servidor y luego recibida correctamente en el microcontrolador PIC®. Dec J] HRSOut "E2".2. como la variable de salida. iBOARD III. TIMEOUT. 13 HSerIn 100 . 121 . la cual.[Wait("S0") . 13 HSerIn 100 . el PIC® solicita y espera por el valor de la variable S1. 13 Este proceso de re-transmisión permite visualizar en la pantalla del computador.26. Dec J] HRSOut "E1". Las variables S0 y S1 escritas mediante su respectivo cuadro editable de la aplicación cliente. envían al PIC® y luego re-escriben sus valores en la variables de entrada E1 y E2 mostrando el flujo de la información en forma bi-direccional. Dec i. TIMEOUT1. ha sido escrita por el programa cliente OPC®. En caso de no existir respuesta del servidor.[Wait("S1") . el programa continúa en la etiqueta TIMEOUT. al igual que E2 y S1. el PIC® envía un valor de 0 a 255 a la variable de entrada E0 del servidor. 13 HSerIn 100 .bas Explicación del programa anterior Por medio de un ciclo for. esto lo hace mediante la instrucción: En la figura B. 13 Figura B.Main: For i = 0 To 255 HRSOut "E0". HRSOut "S0". En total el servidor OPC puede procesar hasta veinte (20) variables de entrada y (20) variables de salida. 13 TIMEOUT: HRSOut "S1". Para ejecutar el programa.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->