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.