Download Presentación de PowerPoint
Document related concepts
no text concepts found
Transcript
Contexto de aplicación: Se trata de una alternativa de diseño para sistemas sencillos, donde basta un chip con un modesto número de terminales y un escueto programa desarrollado en lenguaje ensamblador. Esto no es más que un discreto complemento de los recursos que se aprenden a utilizar en las asignaturas de Automática, donde la complejidad del producto recomienda el uso de lenguajes de alto nivel. Este estudio se basará en el modelo 16F684 de Microchip. Hardware El chip PIC tiene estructura de circuito integrado y se presenta en casi cualquiera de las versiones: DIL y las variantes SMD compatibles con su número de patillas. El resumen más drástico que podemos hacer acerca de su patillaje es que consta de ALIMENTACIÓN Y PUERTOS. Noción Básica: El objeto del programa que se graba en el chip es, fundamentalmente, controlar los niveles eléctricos de sus Puertos. Como ya venimos haciendo, en el contexto más corriente a estas líneas se les llama PUERTOS. PUERTO: Un Puerto es un conjunto de líneas (8 típico) pertenecientes a una posición específica de la Memoria. Cada patilla se corresponde con un bit de esa posición. Las líneas de un Puerto tienen "doble personalidad" porque: Para un Matemático son bits de un número que tienen su valor aritmético específico. Para el Ingeniero es un cale que tiene conexión física con la memoria. A estas posiciones especiales se les llama Interfaces (Entrecaras), pues actúan entre dos aguas. ¿Encender bombillas con un microprocesador? Esta disposición permite entender cómo es posible que un chip dotado de un programa informático puede hacer que se enciendan y apaguen dispositivos eléctricos. La única limitación es la técnica del chip (capacidad, velocidad etc) y la capacidad de innovación del técnico. ¿Decirle cosas al programa? Igual que el chip puede "mandar" señales eléctricas al exterior, también puede "leer" el nivel de esas mismas líneas si se conecta a ellas pulsadores, interruptores, etc. Con ello se tiene lo necesario para que el sistema realice operaciones atendiendo a los eventos que las condicionan. Entradas y Salidas Así las cosas, una de las previsiones más importantes antes de acometer la programación es la confección del esquema de EntradasSalidas: Entradas.- Todo lo que genera niveles eléctricos que el sistema debe "leer" para poder cumplir su cometido. Salidas.- Líneas mediante las que el sistema, generando los niveles eléctricos pertinentes ejecuta las acciones. Nuestros Puertos Nuestro micro controlador 16F684 ofrece dos puertos un poco especiales: Puerto A.- En la dirección 05, es de 6 líneas (RA0 a RA5) y pueden actuar, independientemente cada una, como Entrada o como Salida. Puerto B.- En la dirección 07, también de 6 líneas (RC0 a RC5) y (de momento para nosotros) con las mismas características que el puerto A. Notación Hexadecimal Como tenemos que interpretar los datos como valores numéricos y como señales eléctricas indistintamente, nos trae más cuenta usar la notación Hexadecimal. En binario.- Este estado se escribiría "10111001", demasiado engorroso, pero muy clarificador. En Decimal.- Es 185d, muy compacto, pero nada clarificador sobre los niveles eléctricos que representa. En Hexadecimal.- Es B9h, compacto y con una traducción inmediata a binario (B=1011 y 9=1001), lo que permite "ver" claramente su efecto eléctrico. Memoria RAM La Memoria de Datos está organizada en "Direcciones" que se extienden entre la 00 hasta la 7Fh (128 bytes), distribuida según el mapa adjunto. Las primeras posiciones están destinadas a REGISTROS DE FUNCIÓN, entre ellos, los Puertos (05≡RA, 06 ≡RB (nuestro chip no tiene RB) 07 ≡RC etc). Para nuestro uso quedan libres las direcciones a partir de la 20h. Algunas posiciones se encuentran localizadas en un "apartado" distinto porque la memoria de este chip se encuentra dividida en dos Bancos: Banco = 0, en la instrucción la dirección 05 tiene efecto sobre la posición 05h. Banco = 1, en la instrucción la dirección 05 tiene efecto sobre la posición 85h. Registros Todo microprocesador contiene Registros que, como las posiciones de la memoria tienen la facultad de almacenar datos (uno por registro, claro). Su tamaño da entidad al chip: Microprocesadores de 8 bits, de 16 bits, de 32bits… Y es que como la máquina ejecuta las operaciones con ayuda de los registros, cuanta más capacidad de "cálculo" mayores son éstos. Un chip que realiza operaciones de 8 bits debe trabajar como mínimo el cuádruple que otro capaz de trabajar con 32 bits, pero esta referencia en realidad tiene valor cuadrático (𝟒𝟐 = 𝟏𝟔) porque casi siempre la multiplicidad exige multitud de operaciones complementarias Un Registro, además de no formar parte de la Memoria se caracteriza por: Nombre propio.- El registro no reside en la Memoria sino en la CPU, así que en lugar de dirección tiene su nombre propio (Acumulador, Contador de programa etc). Función específica.- Los registros intervienen en operaciones donde no pueden participar las posiciones corrientes de la memoria (suma artimética, organizar el orden de ejecución del programa, etc). Nuestro chip es de 8 bits y ahora solo nos interesa su Registro Acumulador (Work) que se identifica con la letra (W) e interviene en las operaciones aritméticas y lógicas. Memoria de Programa: Consta de PALABRAS DE 14 BITS. Cada palabra tiene capacidad para UNA INSTRUCCIÓN COMPLETA DE MÁQUINA. El vector Reset.- En la posición 000 se escribe la posición donde se ha colocado el programa que se ha escrito para el chip. Es memoria Flash.- Como la de un pendrive, lo que significa que la podemos grabar multitud de veces sin estropear el chip. Disponemos de 4.096 bytes de memoria programa, al caso una cantidad bastante considerable. Instrucciones de nuestro micro controlador La familia del 16F684 tan solo tiene 35 instrucciones. Los microprocesadores de la primera generación ofrecían del orden de 256 instrucciones. Los microprocesadores para PC tienen un repertorio aún más amplio. PROGRAMA Un Programa es un "trabajo" estratégicamente pensado, que se ha escrito en la memoria de Instrucciones con el formato de un PROGRAMA DE TAREAS prediseñadas para ser ejecutadas, cuanto más rápido, mejor. El lenguaje Máquina Un programa de microprocesador solo puede contener números binarios que son interpretados por éste de la siguiente manera: 1.- Un oscilador (Clock) marca la pauta de trabajo y como un director de orquesta, por cada pulso los circuitos ejecutan una pequeña (ínfima) operación eléctrica. 2.- Los números binarios del programa, interpretados como INSTRUCCIONES, son para la máquina señales eléctricas que dirigen su actuación. 3.- Cada instrucción queda terminada "solo después de haberse producido varios pulsos" del oscilador. La instrucción que en nuestro lenguaje se interpreta: MOVLW 25 Llevar al registro Acumulador (W) el número 25h En nuestra máquina debe ser proporcionada por la Memoria de Instrucciones así: 0011000000100101 Que en formato hexadecimal, más compacto resulta: 3025h Introducción al lenguaje Ensamblador No pretendemos aprender Ensamblador en dos lecciones, sino conocer sus pautas más sobresalientes. El objeto del Ensamblador es humanizar la programación de manera que el frío LENGUAJE DE MÁQUINA se convierta en una lista de instrucciones con forma de texto (Mnemotécnicos) en lugar de números. Un programa ensamblador tiene forma de lista con referencias cruzadas, donde las Etiquetas relacionan entre sí todos y cada uno de los puntos de control. Asimismo, el ensamblador permite definir a voluntad nombres para referirse a los registros y posiciones de memoria, lo cual aporta familiaridad a la tarea de programación. Se muestra el listado de un segmento de programa en lenguaje Ensamblador. 1.- Dirección que ocupan las instrucciones en la memoria de programa. 2.- Las instrucciones tal cual son (el programa en LENGUAJE MÁQUINA). 3.- Número de orden de las líneas en el Ensamblador. (1) 0048 0049 004A 004A 004B 004C 004D 004E (2) 307F 00A3 0BA2 284A 0BA3 284A 0008 (3) (4) (5) 00059 movlw 00060 movwf 00061 Delay1: 00062 decfsz 00063 goto 00064 decfsz 00065 goto 00066 return 4.- Etiquetas. 5.- Mnemónicos de las instrucciones (Código Operación). 6.- Dirección Operando. 7.- Comentarios aclaratorios. (6) 7F Auxi2 (7) ; Valor inicial de la cuenta ;Poner en memoria Auxi1,1 Delay1 Auxi2,1 Delay1 ;decremento del bucle interior ;bucle mientras no llega a cero ;decremento del bucle exteriror ;bucle mientras no cero ;retorno La Directiva EQU: Se racionaliza mucho el trabajo si a las direcciones de memoria y registros se les asigna un nombre acorde con su cometido en el programa. Para referirse a estas variables en adelante, ya no será necesario recordar su dirección numérica. Asimismo, si hay que cambiar la asignación física de alguna, basta con hacerlo en la declaración de EQUs. La Directiva #DEFINE: Se personaliza el trabajo si se definen bloques de instrucciones, datos o instrucciones y datos, con nombres propios. El texto 'Banco0' en el campo Instrucción, tiene el mismo efecto que si se hubiera escrito 'bcf 03,5'. El texto 'Banco1' en al campo Instrucción tiene el mismo efecto que si se hubiera escrito 'bsf 03,5' La Potencia de #DEFINE: Esto nos da incluso la posibilidad de redefinir los Mnemotécnicos a nuestro antojo: El listado normal, que tiene este aspecto: Se convierte en este otro, más legible para nosotros. Pero hay que andarse con cuidado, pues podemos definir las instrucciones con tan alto grado de personificación, que nuestros listados se hagan ilegibles para el resto. Algunas fotografías se han obtenido gracias a la cortesía de Google y a la aportación de libre uso que ofrece Wikipedia. Todas ellas conservan la referencia al link web de donde proceden. Nuestra Tarjeta de trabajo Tarjeta con los recursos mínimos para las prácticas con el PIC 16F684 Nuestro programa Conectaremos la tarjeta a la entrada de consigna de un regulador de velocidad de CA Con ella controlaremos un motor con cinco velocidades. Utilizaremos la técnica de PWM Pulse Width Modulation (Modulación de la Anchura de Pulsos) es una técnica digital para proporcionar valores medios de CC (Vdc) a partir de una fuente de nivel fijo. Para ello se entregan pulsos durante un tiempo, siempre el mismo (Ciclo), que duran una fracción de éste (Ton), más cuanto mayor sea el nivel de CC medio deseado. Las teclas están conectadas a pc,0 pc,1 pc,2 pc,3 pc,4 y pc,5 Algunas fotografías se han obtenido gracias a la cortesía de Google y a la aportación de libre uso que ofrece Wikipedia. Todas ellas conservan la referencia al link web de donde proceden.