Elementos de Estructura de Computadores JEA/jea 27 diapositivas 1 DESARROLLO DE APLICACIONES CON MICROCONTROLADORES • Aplicación • Análisis del hardware necesario para construir la aplicación • Diseño del programa • Edición del programa • Estructura del programa • Análisis del programa • Ensamblar el programa • Simulación del programa • Bajar el programa al microcontrolador • Prueba y verificación del programa sobre el hardware asociado 2 Proceso de desarrollo de un programa 3 Construyendo programas estructurados • Diagramas de flujo 4 Diagramas de estado 5 PIC 16F877-Arquitectura • Este MCU es ampliamente usado como un dispositivo avanzado en la enseñanza ya que posee una variado complemento de interfaces: entrada análoga, puerto serial, puerto esclavo, entre otros mas un buen rango de temporizadores en hardware 6 • El PIC 16F877 es una elección adecuada para el aprendizaje sobre microcontroladores, debido a que su lenguaje de programación es relativamente simple, en comparación con un microprocesador tal como el Pentium INTEL, el cual es usado en los computadores tipo PC. Este tiene un set de instrucciones poderoso pero complejo para poder soportar operaciones multimedia avanzadas 7 PIC 16F877 Pin out • Este chip puede ser obtenido en diferentes formatos de encapsulado y la versión tipo DIP es recomendada para la construcción de prototipos • La mayoria de los pines son I/O estructurados en 5 puertos: A(6), B(8), C(8), D(8), y E(3), dando un total de 33 pines I/O 8 • Estos pueden operar como simples pines I/O digitales, pero la mayoría tiene mas de una función, y el modo de operación de cada uno es seleccionado inicializando varios registros de control dentro del chip • Observe en particular, que los puertos A y E son entradas analogas por omisión (...by default...) al alimentar el chip o con Reset, así ellos tienen que ser configurados si operación I/O digital es requerida • El puerto B es usado para bajar el programa a la ROM FLASH del chip (RB6 y RB7) y RB0 y RB4..RB7 pueden generar una INT 9 • El puerto C da acceso a los temporizadores (en adelante TIMERs) y puerto serial • El puerto D puede ser usado como un puerto esclavo, con el puerto E proporcionando los pines de control para este efecto • El chip puede operar realmente con una tensión algo menor de 2 Volts para trabajo con batería autónoma y ahorro de power • Un circuito de CLK de baja frecuencia usando solo un capacitor y un resistor para establecer la frecuencia puede ser conectado a CLKIN 10 11 • O un circuito oscilador con XTAL puede ser conectado a través de CLKIN y CLKOUT • MCLR es la entrada de RESET; cuando es 0 la MCU se detiene y se restablece cuando MCLR es 1. Esta entrada se debe afianzar en alto permitiendo al chip ejecutar si un circuito de reset externo no está conectado, pero usualmente es una buena idea incorporar un botón reset manual en todas las aplicaciones incluidas aquellas mas triviales. 12 Diagrama de bloque PIC 16F877 • La memoria de programa principal es una Flash ROM la cual almacena una lista de instrucciones de 14 bits. Estas son alimentadas a la unidad de control y usadas para modificar el archivo de registros de la RAM • Los registros incluyen registros especiales de control, los registros de puerto y un set de registros de propósito general los cuales pueden ser usados para almacenar datos temporalmente • Un registro de trabajo separado, W, es usado junto a la ALU para procesar datos • Varios módulos especiales de periféricos proveen 13 de un rango de opciones I/O 14 • Hay 512 direcciones RAM en el archivo de registros: 0..1FF, los cuales están organizados en 4 bancos (0..3), cada banco contiene 128 direcciones • Se selecciona por omisión (seleccionado al POWER-UP) el banco 0. • Banco 0: es numerado 00..7F • Banco 1: 80..FF • Banco 2: 100..17F • Banco 3: 180..1FF • Los bancos contienen registros especiales de funciones (SFRs), los cuales tienen un propósito dedicado, y los registros de propósito general (GPRs). Los registros del archivo son mapeados en la figura 2-3 de la hoja de datos 15 • Los SFRs pueden ser mostrados en el diagrama de bloques como separados de los GPRs pero ellos están de hecho en el mismo bloque lógico y direccionados del mismo modo • Deduciendo los SFRs desde el numero total de localizaciones de RAM y admitiendo que algunos registros se repiten en mas de un banco, esto resulta en 368 bytes de registros de datos GPR 16 Prueba de hwr • Es usual definir el hwr sobre el cual se pueden mostrar las operaciones de un programa PIC. • Inicialmente un diagrama de bloque es usado para esquematizar el diseño de hwr, como el que se muestra a continuación. El símbolo esquemático para la MCU es mostrado indicando los pines a ser usados • Para el programa de prueba simplemente se necesitan entradas que conmuten entre 0V y 5V y una indicación lógica en las salidas 17 Bosquejo de Hwr – diagrama de bloques 18 Conexiones MCU 16F877 19 Una aplicación simple • RB0..RB7: el puerto B actúa como un contador binario de 8 bit • RD0: un CLEAR por un push-button • RD1: un COUNT por un push-button 20 Hardware 21 • Cuando el botón RUN es presionado, un cero lógico es ingresado en RD1, y un incremento en la cuenta binaria es observada en los LEDs, donde LSB=RB0. • Cuando es liberado, (RD1=1) la cuenta se detiene y es retenida. • Cuando el botón de RESET (RD0) es presionado, la cuenta desplegada va a cero (“reseteada” a cero) • La velocidad del reloj de la MCU puede ser ajustada en RV1, alrededor de 40kHz, pero en adelante se usará XTAL de 4 MHz. 22 Programa • El código para las aplicaciones se programará en lenguaje C • Para ello se utilizará el compilador CCS de Microchip para programar en C • O MPLAB + CCS, que permite programar en Assembly, o en C o combinación. • Para grabar el MCU, se puede usar ICPROG o WinPIC800, o MPLAB directamente • Todo el software anteriormente mencionado es sin costo y se puede obtener desde microchip.com • El simulador Proteus se obtiene en versión trial 23 desde el mismo sitio • Todo el software anteriormente mencionado es sin costo y se puede obtener desde microchip.com • El simulador Proteus se obtiene en versión trial desde el mismo sitio • También existe la modalidad ICD (In Circuit Debugging) en todos los grabadores disponibles en el comercio 24 Palabra de configuración del chip • La directiva de assembler _CONFIG establece aspectos relacionados con la operación del chip. Un área especial de la memoria de programa fuera del rango normal (2007h) almacena la palabra de configuración del chip. • La función de cada bit se muestra en la tabla a continuación, junto con algunas configuraciones típicas. Mayores detalles en la sección 12 de la hoja de datos 25 Palabra de configuración `F877 26 Palabra de configuración en C • Se usará para todos los programas la siguiente palabra de configuración en lenguaje C #fuses XT,PUT,NOWDT,NOPROTECT, NOBROWNOUT,NOLVP,NOCPD,NOWRT, NODEBUG 27 Palabra de configuración • Oscilador (b1..b0) permite configurar el tipo de oscilador que se usrá en el circuito. Las principales opciones son RC, XT • Watchdog timer (b2) permite habilitar o deshabilitar el timer WDT. Dentro de cada 18 ms ejecuta un RESET del MPU si se presenta un lazo indefinido por cualquier razón • Power Up Timer (b3) es un temporizador(timer) interno que demora(72 ms) la ejecución del programa en el MCU, hasta que la alimentación sea estable • Code protection (b5..b4; b13..b12) protección del programa que evita copia del código, para evitar robo industrial y comercial 28 • Brown-out reset(b6) cuando es habilitado permite mantener en estado de RESET al MCU, cuando la alimentación cae a un determinado nivel, hasta que la fuente se recupere • Low Voltage programming(b7) permite que el voltaje de programación usual de +12 V pueda cambiarse a +5 V (sin embargo los pines de programación del portB no pueden ser usado para I/O y deben ser de dedicación exclusiva a la grabación del código) • CPD (b8) protección contra escritura de la EEPROM 29 • WRT(b9) habilita escritura de la memoria de programa • Debug(b11) In-Circuit debbugging ICD, permite la programación sobre el protoboard o placa sin extraer el MCU 30 Fin Diapositivas C_CS02Control.pptx 31