curso - clase 01
TRANSCRIPT
Microcontroladores
PIC
¿ Qué es un Microcontrolador ?
Un Microcontrolador es un circuito integrado o chip
que incluye en su interior las tres unidades funcionales
de un computador: CPU, Memoria y Unidades de E/S,
es decir, se trata de un computador completo en un
solo circuito integrado.
Aunque sus prestaciones son limitadas, además de
dicha integración, su característica principal es su alto
nivel de especialización.
Es un microprocesador dedicado y optimizado para
controlar equipos electrónicos.
Pueden encontrarse en casi cualquier dispositivo
eléctrico como automóviles, lavadoras, hornos
microondas, teléfonos, etc...
Microcontroladores
PIC
¿ Qué es un PIC ?
Los 'PIC' son una familia de microcontroladores
fabricados por Microchip Technology Inc. y derivados
del PIC1650, originalmente desarrollado por la división
de microelectrónica de General Instruments.
El nombre actual no es un acrónimo. En realidad, el
nombre completo es PICmicro, aunque generalmente
se utiliza como Peripheral Interface Controller
(Controlador de Interfaz Periférico).
Microcontroladores
PIC
Características de los PIC
1ª. La arquitectura del procesador sigue el modelo Harvard.
En esta arquitectura, el CPU se conecta de forma independiente y
con buses distintos con la memoria de instrucciones o de programa y
con la memoria de datos.
La arquitectura Harvard permite a el CPU acceder simultáneamente a
las dos memorias. Además, propicia numerosas ventajas al
funcionamiento del sistema como se irán describiendo.
Microcontroladores
PIC
Características de los PIC
2ª. Se aplica la técnica de segmentación (“pipe-line”) en la ejecución
de las instrucciones.
La segmentación permite al procesador realizar al mismo tiempo la
ejecución de una instrucción y la búsqueda del código de la siguiente.
De esta forma se puede ejecutar cada instrucción en un ciclo de
máquina o de instrucción (un ciclo de instrucción equivale a cuatro
ciclos de reloj en los microcontroladores PIC).
Instrucción #1
Fin #1
Instrucción #2
Instrucción #3
Fin #2 Fin #3
CLK
Segmentación
Microcontroladores
PIC
Características de los PIC
La segmentación permite al procesador ejecutar cada instrucción en
un ciclo de instrucción equivalente a cuatro ciclos de reloj. En cada
ciclo se realiza la búsqueda de una instrucción y la ejecución de la
anterior.
3ª. El formato de todas las instrucciones tiene la misma longitud.
Todas las instrucciones de los microcontroladores de la gama baja
tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y
16 bits las de la gama alta. Esta característica es muy ventajosa en la
optimización de la memoria de instrucciones y facilita enormemente la
construcción de ensambladores y compiladores.
4ª. Procesador RISC (Computador de Juego de Instrucciones
Reducido) Los modelos de la gama baja disponen de un repertorio de
33 instrucciones, 35 los de la gama media y casi 60 los de la alta.
Microcontroladores
PIC
Características de los PIC
5ª. Todas las instrucciones son ortogonales.
Cualquier instrucción puede manejar cualquier elemento de la
arquitectura como fuente o como destino.
6ª. Arquitectura basada en un banco de registros.
Esto significa que todos los objetos del sistema (puertos de E/S,
temporizadores, posiciones de memoria, etc.) están implementados
físicamente como registros.
7ª. Diversidad de modelos de microcontroladores con prestaciones y
recursos diferentes.
La gran variedad de modelos de microcontroladores PIC permite que
el usuario pueda seleccionar el más conveniente para su proyecto.
Microcontroladores
PIC
Características de los PIC
8ª. Herramientas de soporte potentes y económicas.
La empresa Microchip y otras que utilizan los PIC ponen a disposición
de los usuarios numerosas herramientas para desarrollar hardware y
software. Son muy abundantes los programadores, los simuladores
tipo software, los emuladores en tiempo real, ensambladores,
Compiladores C, Intérpretes y Compiladores BASIC, etc.
Microcontroladores
PIC
¿Como se programa un PIC?
Para programar un PIC es necesario disponer de un editor del lenguaje
de nuestra preferencia, un compilador que traducirá nuestro lenguaje
al lenguaje del PIC llamado lenguaje de maquina y un conjunto
Software-Hardware Programador para transferir el programa realizado
a la memoria del PIC.
Microcontroladores
PIC
¿Como se programa un PIC?
Desventaja de los compiladores de lenguajes de alto nivel.
Microcontroladores
PIC
Clasificación básica de los PIC
Los PICmicro se clasifican básicamente en tres Familias:
La Gama Baja que incluye a los microcontroladores con palabras de
instrucción de 12 bits
PIC12C/12FXX/XXX y PIC16C5X
La Gama Media que incluye a los microcontroladores con palabras de
instrucción de 14 bits
PIC16C/16FXX/XXX
La Gama Alta o Mejorada que incluye a los microcontroladores con
palabras de instrucción de 16 bits
PIC17C/17FXX/XXX y PIC18FXX/XXX
Microcontroladores
PIC
Clasificación básica de los PIC
Gama Baja :
La gama baja de los PIC encuadra nueve modelos fundamentales en
la actualidad, La memoria de programa puede contener 512, 1 k. y 2 k
palabras de 12 bits, y ser de tipo ROM, EPROM. También hay modelos
con memoria OTP, que sólo puede ser grabada una vez por el usuario.
La memoria de datos puede tener una capacidad comprendida entre
25 y 73 bytes. Sólo disponen de un temporizador (TMR0), un repertorio
de 33 instrucciones y un número de patitas para soportar las E/S
comprendido entre 12 y 20. El voltaje de alimentación admite un valor
muy flexible comprendido entre 2 y 6,25 V, lo cual posibilita el
funcionamiento mediante pilas corrientes teniendo en cuenta su bajo
consumo ( menos de 2 mA a 5 V y 4 MHz ).
Al igual que todos los miembros de la familia PIC16/17, los
componentes de la gama baja se caracterizan por poseer los
siguientes recursos.
Microcontroladores
PIC
Clasificación básica de los PIC
1. Sistema POR ( POWER ON RESET).
Todos los PIC tienen la facultad de generar una autoreinicialización o
autoreset al conectarles la alimentación.
2. Perro guardián, (Watchdog)
Existe un temporizador que produce un reset automáticamente si no es
recargado antes que pase un tiempo prefijado. Así se evita que e!
sistema quede "colgado" dado en esa situación el programa no
recarga dicho temporizador y se genera un reset.
3. Código de protección
Cuando se procede a realizar la grabación del programa, puede
protegerse para evitar su lectura. También disponen, los PIC de
posiciones reservadas para registrar números de serie, códigos de
identificación, prueba, etc.
4. Líneas de E/S de alta corriente.
Microcontroladores
PIC
Clasificación básica de los PIC
Las líneas de E/S de los PIC pueden proporcionar o absorber una
corriente de salida comprendida entre 20 y 25 mA, capaz de excitar
directamente ciertos periféricos.
5. Modo de reposo (bajo consumo o SLEEP).
Ejecutando una instrucción (SLEEP), el CPU y el oscilador principal se
detienen y se reduce notablemente el consumo.
Gama Media: En esta gama sus componentes añaden nuevas prestaciones a las
que poseían los de la gama baja, haciéndoles más adecuados en las
aplicaciones complejas. Admiten interrupciones, poseen comparadores
de magnitudes analógicas, convertidores A/D, puertos serie y diversos
temporizadores.
Microcontroladores
PIC
Clasificación básica de los PIC
Algunos modelos disponen de una memoria de instrucciones del tipo
OTP ("One Time Programmable"), que sólo la puede grabar una vez el
usuario y que resulta mucho más económica en la implementación de
prototipos y pequeñas series.
Hay modelos de esta gama que disponen de una memoria de
instrucciones tipo EE-PROM, que, al ser borrables eléctricamente, son
mucho más fáciles de reprogramar que las EPROM, que tienen que
ser sometidas a rayos ultravioleta durante un tiempo determinado para
realizar dicha operación.
Comercialmente el fabricante ofrece cuatro versiones de
microcontroladores en prácticamente todas las gamas.
1ª. Versión EPROM borrable con rayos ultravioleta.
Microcontroladores
PIC
Clasificación básica de los PIC
La cápsula dispone de una ventana de cristal en su superficie para
permitir el borrado de la memoria de programa al someterla durante
unos minutos a rayos ultravioleta procedentes de lámparas
fluorescentes especiales.
2ª. Versión OTP. “Programable una sola vez”. Son similares a la
versión anterior, pero sin ventana y sin la posibilidad de borrar lo que
se graba.
3ª. Versión QTP. Es el propio fabricante el que se encarga de grabar el
código en todos los chips que configuran pedidos medianos y grandes.
4ª. Versión SQTP. El fabricante solo graba unas pocas posiciones de
código para labores de identificación, numero de serie, palabra clave,
checksum, etc.
Microcontroladores
PIC
Clasificación básica de los PIC
El temporizador TMR1 que hay en esta gama tiene un circuito
oscilador que puede trabajar asíncronamente y que puede
incrementarse aunque el microcontrolador se halle en el modo de
reposo ("sleep"), posibilitando la implementación de un reloj en tiempo
real.
Gama Alta:
En la actualidad, esta gama esta formada por tres modelos cuyas
prestaciones mas representativas se mostraron en las tablas
anteriores.
Desde los dispositivos PIC17C4X hasta los nuevos PIC18F responden
a microcontroladores de arquitectura abierta pudiéndose expansionar
en el exterior al poder sacar los buses de datos, direcciones y control.
Microcontroladores
PIC
Clasificación básica de los PIC
Así se pueden configurar sistemas similares a los que utilizan los
microprocesadores convencionales, siendo capaces de ampliar la
configuración interna del PIC añadiendo nuevos dispositivos de
memoria y de E/S externas.
Esta facultad obliga a estos componentes a tener un elevado numero
de pines comprendido entre 40 y 80. Admiten múltiples interrupciones,
poseen puerto Serial y USB, varios temporizadores, módulos
periféricos especiales y mayores capacidades de memoria, que
alcanza los 128 k de palabras en la memoria de instrucciones y 3840
bytes en la memoria de datos.
Microcontroladores
PIC
Clasificación básica de los PIC
Además de las familias existe variedad entre dispositivos en cuanto a
la tecnología de la memoria, voltaje de operación, rango operativo de
temperatura, frecuencia de operación, encapsulados, etc.
Sistema de identificación.
Microchip utiliza las siguientes letras para la identificación de sus
dispositivos:
Memoria Voltaje
Estándar Extendido EPROM PIC16CXXX PIC16LCXXX
PROM PIC16CRXXX PIC16LCRXXX
FLASH PIC16FXXX PIC16LFXXX
El Voltaje de operación estándar esta comprendido normalmente
entre los valores 4,5 – 5,5V y el extendido entre valores 2,5 – 6,0V
Microcontroladores
PIC
Organización de la memoria
La repercusión más importante del empleo de la arquitectura Harvard
en los microcontroladores PIC se manifiesta en la organización de la
memoria del sistema. La memoria de programa es independiente de
la de los datos, teniendo tamaños y longitudes de palabra diferentes.
Una programación eficiente esta determinada por la manipulación
correcta y adecuada, tanto de la memoria de programa como la de
datos.
Memoria De Datos
Memoria De Programa
Microcontroladores
PIC
La Memoria de Programa
La Memoria de Programa es donde se escriben (se programan) todas las instrucciones o el código del programa que se va a ejecutar. Esta dividida funcionalmente en tres partes muy importantes que el programador debe manejar y entender a la perfección, que son: El PC, el Stack y las Páginas de memoria de programa. El PC se refiere al Contador de Programa, el cual se incrementa con cada Ciclo de Maquina o de Instrucción y contiene la dirección en la memoria de la instrucción que se esta ejecutando. Para la sub – familia de PICmicro PIC16F87X/87XA el PC esta constituido de la siguiente manera:
Microcontroladores
PIC
La Memoria de Programa
Constitución del PC:
PC
PCH PCL
0 1 2 3 4 5 6 7 8 9 10 11 12
0 1 2 3 4 5 6 7 0 1 2 3 4 - - -
PCLATH PCL
Microcontroladores
PIC
La Memoria de Programa
Escritura del PC: PC
PCH PCL
0 7 8 12
0 1 2 3 4 - - -
PCLATH Manual
8-bits
Resultado de la ALU
8-bits
Manual
8-bits
Microcontroladores
PIC
La Memoria de Programa
Escritura del PC: PC
PCH PCL
0 10 12
3 4 - - -
PCLATH Resultado de instrucciones
de Salto, Llamada, Retorno
11-bits Manual
8-bits
- - -
Microcontroladores
PIC
La Memoria de Programa
La Pila o Stack es la encargada de mantener la información del paso
del programa (PC) en el que se encontraba en ese momento el
operador, en caso de que sea llamado a una subrutina o que el
programa sea interrumpido por alguna causa preestablecida por
programa. De tal manera de que cuando se vuelva de la subrutina o la
interrupción, el contador de programa irá a buscar de manera
automática la dirección de prosecución del programa a la stack (pila).
En la mayoría de los PIC la pila es de 8 niveles, es decir, que se
pueden guardar 8 direcciones de memoria referentes a alguna
instrucción o comienzo de una rutina, esto implica también que si
pretendemos guardar una 9ª dirección, perderemos la 1ª
Partiendo de esta premisa en los PIC no resulta conveniente hacer
bucles anidados de mas de 8 niveles.
Microcontroladores
PIC
La Memoria de Programa
La Pila o Stack:
Stack Nivel 1
Stack Nivel 2
Stack Nivel 3
Stack Nivel 8
.
.
.
PC
Instrucciones de Salto,
Llamada, Retorno
Microcontroladores
PIC
La Memoria de Programa
las Páginas de memoria de programa se refiere básicamente a
bloques de longitud 7FFh en las que se divide la memoria de
programa, la cantidad de paginas depende del tamaño de la memoria
del microcontrolador que se esta utilizando.
Vector de Reset 0000h
Vector de interrupción
.
.
.
Página 0
Página 1
Página 2
Página 3
0004h
0005h
07FFh 0800h
0FFFh 1000h
17FFh 1800h
1FFFh
Ejemplo para
PIC16F876/877/A
Bloque de 7FFh
Bloque de 7FFh
Microcontroladores
PIC
La Memoria de Programa
Como se puede observar en la figura, en la Página 0 se encuentra el
Vector de Reset y el Vector de Interrupción.
El vector de Reset es la dirección de memoria en la cual se posiciona
el programa luego de un evento de Reset. Esta dirección (0000h) es
utilizada ampliamente por el programador como vector de inicio, es
decir, se ordena por código para que el programa comience en esta
dirección y así en caso de existir un reset, el resultado obtenido es que
el programa comenzará de nuevo.
El Vector de Interrupción es la dirección de memoria en la cual se
posiciona el programa luego de alguna interrupción del mismo (0004h).
Es importante señalar que, a diferencia de otros microcontroladores,
los PICmicro solo tienen un Vector de Interrupción. La identificación de
la fuente de la interrupción, en este caso, debe realizarse por código.
Microcontroladores
PIC
La Memoria de Datos
La Memoria de Datos es donde se depositan las tanto las variables
creadas por el usuario como las que posee el microcontrolador para el
control y flujo de los datos en el programa.
Esta particionada como la memoria de programa, en bloques, esta vez
de 7Fh (128 Bytes) en donde se encuentran los Registros de
Propósito General (GPR) y los Registros de Funciones Especiales
(SFR).
Estos bloques reciben el nombre de Bancos y la cantidad de ellos en
los microcontroladores PIC varia de acuerdo a la cantidad de recursos
que estos ofrezcan, cantidad de periféricos, timers, etc.
En la siguiente figura se muestra el mapa de memoria de datos para
los PIC16F876/877/A:
Microcontroladores
PIC
La Memoria de
Programa
Memoria de Datos.
PIC16F876/877/A
Estos PICs tienen 4
bancos en los que se
pueden apreciar los
Registros De Propósito
General
(GPR). Y el resto son los
Registros de Funciones
especiales
(SFR).
Microcontroladores
PIC
La Memoria de Datos
Los Registros de Propósito General (GPR) Son aquellos que están
disponibles para el programador al momento de que necesite
almacenar una variable o constante. Existen tanto de acceso directo,
como indirecto.
Los Registros de Funciones Especiales (SFR) Son utilizados por el
CPU y los módulos periféricos (Puertos, convertidores, etc.) para
controlar todas las operaciones deseadas en el dispositivo, asi como el
flujo de datos en el mismo.
Mientras mas dispositivos periféricos o recursos auxiliares tenga el
microcontrolador mayor será el numero de registros de funciones
especiales.
Existen una gran variedad de SRFs, sin embargo, hay tres muy
importantes que el programador debe conocer y dominar a la
perfección, y son que estudiaremos a continuación:
Microcontroladores
PIC
La Memoria de Datos – SFRs
El Registro de Estado (STATUS):
IRP RP1 RP0 TO PD Z DC C Bit 7 Bit 0
RW RW RW R R RW RW RW
IRP: Selección de Bancos (Direccionamiento Indirecto)
0 = Banco 0,1
1 = Banco 2,3
RP<1,0>: Selección de Bancos (Direccionamiento directo)
00 = Banco 0 01 = Banco 1
10 = Banco 2 11 = Banco 3
TO: Bit de Time-Out (Se explicará mas adelante con detalle)
PD: Bit de Power-Down (Se explicará mas adelante con detalle)
Z: El resultado de una operación aritmético – lógica es cero
DC: Acarreo en el 4º bit (BCD) / Prestamo negado en el 4º bit (BCD)
C: Acarreo / Prestamo negado
Microcontroladores
PIC
La Memoria de Datos – SFRs
El Registro de Opciones (OPTION_REG):
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 Bit 7 Bit 0
RW RW RW RW RW RW RW RW
RBPU: Habilita los Pull – Ups en el Puerto B
INTEDG: Selecciona el flanco de la interrupción externa.
T0CS: Selección de la fuente de reloj para el Timer 0
0 = Ciclo de reloj interno
1 = Transición en el pin RA4/T0CKI
T0SE: Selección del flanco para el Timer 0
0 = Flanco de bajada en el pin RA4/T0CKI
1 = Flanco de subida en el pin RA4/T0CKI
PSA: Asignación del prescaler.
0 = Prescaler para el Timer 0
1 = Prescaler para el Perro Guardián
PS<2,0>: Prescaler.
Timer 0 WDT 000 = 2 001 = 4 010 = 8 011 = 16 000 = 1 001 = 2 010 = 4 011 = 8
100 = 32 101 = 64 110 = 128 111 = 256 100 = 16 101 = 32 110 = 64 111 = 128
Microcontroladores
PIC
La Memoria de Datos – SFRs
El Registro de Interrupciones (INTCON):
GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF Bit 7 Bit 0
RW RW RW RW RW RW RW RW
GIE: Habilita las interrupciones de manera general.
PEIE: Habilita la interrupción de los periféricos.
TMR0IE: Habilita la interrupción por desbordamiento del Timer 0.
INTE: Habilita la interrupción externa.
RBIE: Habilita la interrupción por cambio de estado en los pines RB4 a
RB7
TMR0IF: Flag de interrupción del Timer 0
INTF: Flag de la interrupción externa
RBIF: Flag de la inerrupción por cambio de estado en los pines RB4 a
RB7
Microcontroladores
PIC
Memoria De Datos
Memoria De Programa
Introducción a los PICmicro
CPU
Perifé
ricos
Ejecución Del Programa
Interacción Con las variables
Puertos, Convertidores, RS232, etc.
PC
OSC
Microcontroladores
PIC
Características de los PIC
El Oscilador:
El circuito de oscilación interno es el utilizado para generar el Clock
del dispositivo y es requerido por el mismo para ejecutar las
instrucciones y hacer funcionar los diferentes periféricos.
Los MCUs PICmicro poseen varios modos de oscilación que pueden
ser seleccionados dependiendo de la aplicación que se le de al
dispositivo, estos modos son:
LP: Cristal o resonador de baja frecuencia (baja potencia)
XT: Cristal o resonador
HS: Cristal o resonador de alta frecuencia o velocidad
RC , EXTRC: Red Resistor/Capacitor externa
INTRC: Red Resistor/Capacitor interna de 4MHz
Microcontroladores
PIC
Introducción a los PICmicro
OSC1
PICmicro
OSC2
VDD
VSS
MCLR Oscilador RC ó EXTRC
R Ext.
C Ext.
Fosc/4
Microcontroladores
PIC
Introducción a los PICmicro
OSC1
PICmicro
OSC2
VDD
VSS
MCLR Oscilador EXT
Fosc/4
Microcontroladores
PIC
Características de los PIC
En el caso del modo INTRC el oscilador posee una calibración de
fábrica de 4MHz a 5V y 25ºC y con una precisión del 1%, sin
embargo existe un registro especial en el microcontrolador llamado
OSCCAL que permite la calibración del mismo en tiempo de
ejecución o por programa.
Capacitores adicionales en los modos LP, XT, y HS:
C1 C2
PIC
Microcontroladores
PIC
Características de los PIC
En el caso de que se utilice uno de los tres primeros modos es
aconsejable utilizar dos capacitores estabilizadores para proporcionar
un arranque seguro y una oscilación estable, algunos valores típicos
son:
Modos Frecuencia C1 / C2
XT (Resonador)
455KHz
2MHz
4MHz
22 – 100pF
15 – 68pF
15 – 68pF
HS (Resonador)
8MHz
16MHz
20MHz
10 – 68pF
10 – 22pF
---
Modos Frecuencia C1 / C2 LP (Cristal) 32kHz
200kHz
68 – 100pF
15 – 30pF
XT (Cristal)
100KHz
2MHz
4MHz
68 – 150pF
15 – 30pF
15 – 30pF
HS (Cristal)
8MHz
10MHz
20MHz
15 – 30pF
15 – 30pF
15 – 30pF
Microcontroladores
PIC
Características de los PIC
Reinicialización o Reset :
La reinicialización o reset de los microcontroladores PIC16 puede ser
originada por varias causas, de las cuales se mencionan las mas
importantes:
1ª Conexión de la alimentación (POR: Power-On-Reset)
2ª Activación de la patita MCLR (Master Clear Reset) durante una
operación normal.
3ª Activación de MCLR en el estado de Reposo o SLEEP.
4ª Desbordamiento del Perro guardián (WDT).
5ª. Detección de fallo en la alimentación (Brown-Out)
Microcontroladores
PIC
Características de los PIC
El Perro Guardián: También se trata de un contador de 8 bits que actúa como
temporizador y tiene el objetivo de generar un reset a todo el sistema
cuando se desborda su valor. Su control de tiempos es independiente
del oscilador principal y se basa en una red RC.
La temporización nominal con la que se halla programado el Perro
guardián es de 18 ms, pero puede aumentarse utilizando el Divisor
de frecuencia, con el cual, trabajando en el rango mayor, puede
alcanzar hasta 2,3 segundos.
Para evitar que se desborde el WDT y genere un reset, hay que
recargar o refrescar su cuenta antes de que llegue el
desbordamiento. Este refresco, que en realidad consiste en ponerle a
0 para iniciar la temporización, se consigue por software con las
instrucciones CLRWDT y SLEEP.
Microcontroladores
PIC
Características de los PIC
El diseñador debe analizar el programa de trabajo y situar alguna de
estas dos instrucciones en sitios estratégicos por los que pasa el flujo
de control antes que transcurra el tiempo que controla el Perro
guardián. De esta manera, si el programa se “cuelga” (bucle infinito,
espera de acontecimiento que no se produce, etc.), no se refresca a
tiempo al Perro guardián y se produce una reinicialización.
La instrucción CLRWDT borra simplemente el valor de WDT,
reiniciando la cuenta. Sin embargo, la instrucción SLEEP, además de
borrar el WDT, detiene a todo el sistema entrando en un modo de
trabajo en el que el consumo es mínimo (modo de Reposo o de bajo
consumo). Si no se desactiva al Perro guardián cuando se entra en el
modo de Reposo, al acabar su conteo provocará un reset y se saldrá
de dicho modo. Otra forma de salir del modo de Reposo es activando
la patita MCLR. Para desactivar al Perro guardián, hay que poner un
0 en el bit 2 (WDTE) de la Palabra de configuración ( Configuration
Word).
Microcontroladores
PIC
Características de los PIC
Se refleja la posibilidad de que el Divisor de frecuencia opere con el
TMR0 o con el WDT, según el valor que tenga el bit PSA. Los
impulsos de conteo pasan por el Divisor antes de aplicarse al TMR0
(Prescaler). Por el contrario, los impulsos pasan primero por el WDT
y luego por el Divisor (Postcaler).
El modo de Reposo o SLEEP: Este modo especial de funcionamiento ocasiona un consumo muy
bajo y se entra en él con la ejecución de la instrucción SLEEP. Con
esta instrucción ocurren las siguientes acciones:
a) Si el perro guardián está activado, se refrescara su valor (se
borra) pero sigue funcionando normalmente.
b) El oscilador principal del sistema deja de funcionar.
c) Los puertos de E/S mantienen el mismo estado que tenían
antes de ejecutar SLEEP.
d) Los bits TO y PD del registro de estado toman los valores 1 y
0, respectivamente.
Microcontroladores
PIC
Características de los PIC
Para rebajar al máximo el consumo se recomienda conectar la patita
T0CKI a VDD o a tierra y la patita MCLR/Vpp a nivel lógico alto.
Para salir del estado de Reposo hay dos posibilidades:
1ª Se activa la patita MCLR y se genera un reset.
2ª El Perro guardián que estaba activo cuando se ejecuto SLEEP se
desborda y genera un reset.
Para conocer la causa por la que se ha salido del Estado de Reposo
se analizan los bits TO y PD.
Microcontroladores
PIC
Características de los PIC
Los bits TO y PD del Registro de STATUS toman el valor
correspondiente según la causa que haya provocado el. reset.
TO PD Estado tras el Reset
0 0 WDT en el modo “SLEEP” 0 1 WDT en el modo NORMAL
1 0 MCLR en el modo “SLEEP” 1 1 Conexión de la alimentación (POR)
u u MCLR en el modo NORMAL
Valores que toman los bits TO y PD del Registro de Estado según la
causa que ha originado el reset. Cuando TO = PD = u, significa que
estos bits no alteran su valor en el caso de que el reset se haya
provocado por la activación de MCLR en funcionamiento normal.
Cuando el reset es provocado por la activación de la patita MCLR en
modo normal, los bits TO y PD no varían su valor y no lo modifican
hasta que se produzca alguna otra de las condiciones de reset.
Microcontroladores
PIC
Características de los PIC
La instrucción CLRWDT pone a 0 los bits TO y PD.
En forma breve se describen los acontecimientos que se desarrollan
al ejecutarse un reset.
1º. Arranca el reloj interno tras un retardo de 18 ms
2º. Las patitas de los Puertos de E/S se configuran como Entradas al
cargarse con 1 todos los bits de los registros TRIS.
3º. El PC o Contador de Programa es cargado según el modelo de
PIC de que se trate.
4º. Todos los bits del Registro de opciones (OPTION) se ponen a 1.
5°. El Perro guardián y el Prescaler, son puestos a 0.
6º. Los bits PA2, PA1 y PA0 del Registro de Estado se ponen a 0
Microcontroladores
PIC
Características de los PIC
Puertos de Entrada y Salida: Un recurso imprescindible en los microcontroladores es el que
soporta las Entradas y Salidas con los periféricos del mundo exterior.
Los bits de cada puerto se configuran mediante los bits
correspondientes de un registro de control asociado que recibe el
nombre de TRISX. En realidad cada puerto soporta dos registros:
1º El registro de datos, al que se denomina Puerto X (PORTX).
Siendo X= A, B, C, D ó E. dependiendo del modelo de PIC
2º El registro de control TRISX, con el que se programa el sentido
(Entrada o Salida) de las líneas del puerto X.
Cada uno de sus bits puede programarse como una línea de Entrada
o de Salida, según se ponga un 1 ó un 0, respectivamente, en el bit
del registro de control TRIS correspondiente.
Microcontroladores
PIC
Características de los PIC
Puertos de Entrada y Salida:
8
Bus de datos interno
0 1 1 0 1 0 0 1 1 0 1 0 0 0 1 1
Manual
TRISX
PORTX
Manual
Salida
Entrada
Microcontroladores
PIC
Características de los PIC
Cada puerto de E/S tiene asociado un registro TRIS que configura
como Entrada o Salida cada línea.
Por ejemplo, Un 1 en el bit "i" del registro TRISA pone en alta
impedancia (Entrada) la línea asocia-da "i" del Puerto A.
Cualquier línea puede funcionar como Entrada o como Salida. Sin
embargo, si actúa como Entrada, la información que se introduce
desde el exterior no se memoriza o "amarra", pasa simple-mente por
un dispositivo triestado por lo cual el valor de dicha información debe
mantenerse hasta que sea leída. La lectura se realiza en "tiempo
real".
Cuando una patita de E/S funciona como salida, el bit que proviene
del bus de datos se guarda en un Biestable del dato con lo cual la
información que ofrece esta patita permanece invariable hasta que se
reescriba otro bit.
Microcontroladores
PIC
Características de los PIC
Cada línea de E/S de los puertos se programa de forma
independiente y puede ser Entrada o Salida. Cuando se produce un
reset, todos los bits de los registros TRIS pasan a tener el valor 1 y
todas las líneas de E/S actúan como Entrada por evidentes motivos
de seguridad para evitar daños irreparables.
Cada línea de un puerto puede suministrar una corriente máxima de
20 mA actuando como salida y absorber hasta 25 mA cuando actúa
como entrada. Sin embargo, hay que tener en cuenta que existen
unas limitaciones de disipación de potencia en el chip que son:
a) El puerto A puede absorber un máximo de 80 mA y suministrar
un máximo de 50 mA en total.
b) El puerto B puede absorber un máximo de 150 mA y
suministrar entre todas sus líneas un máximo de 100 mA.
Microcontroladores
PIC
Características de los PIC
Estas restricciones obligan a limitar la corriente de salida total de
cada puerto así como la de entrada. Por lo tanto, habrá que conjugar
los máximos admitidos por cada línea con los máximos permitidos
por cada puerto, que comprende a todas las líneas.
Hay que prestar mucha atención a las operaciones que, tras una
lectura de un puerto. sigue una escritura de la misma. Se debe dejar
pasar un tiempo determinado para que se estabilice el voltaje de las
patitas.
Insertando entre la lectura y la escritura una instrucción NOP o
cualquier otra que no implique a los puertos, se eliminan estos
errores potenciales.
Microcontroladores
PIC
Características de los PIC
Las Interrupciones: Una interrupción consiste en una detención del programa en curso
para realizar una determinada rutina que atienda la causa que ha
provocado la interrupción. Es como una llamada a subrutina, que se
origina por otra causa que por una instrucción del tipo CALL. Tras la
terminación de la rutina de interrupción, se retorna al programa
principal en el punto en que se abandono.
Las causas que originan una interrupción pueden ser externas, como
la activación de una patita con el nivel lógico apropiado, e internas,
como las que pueden producirse al desbordarse un temporizador,
como el TMR0.
En las aplicaciones industriales, las interrupciones son un producto
muy potente para atender los acontecimientos físicos en tiempo real.
Las interrupciones evitan que la UCP explore continuamente el nivel
lógico de una patita o el valor de un contador.
Microcontroladores
PIC
Características de los PIC
Fases de una interrupción: Se expone ordenadamente la secuencia de acciones que se llevan a
cabo cuando se atiende a una interrupción.
1ª. Se activa una posible causa de interrupción. El señalizador de
dicha causa, el bit de permiso correspondiente y el global para todas
las interrupciones (GIE) están a nivel alto.
2ª. Para evitar que se produzca otra interrupción mientras dura el
tratamiento de la que se ha aceptado, el bit GIE se pone a 0.
3ª. El valor actual del PC se guarda en la Pila.
4ª. El PC se carga con el valor 0004h, que es el del vector de
interrupción.
5ª. La rutina de interrupción comienza explorando el valor de los
señalizadores, para determinar la causa que la ha provocado.
Microcontroladores
PIC
Características de los PIC
6ª. Según la causa de la interrupción, la rutina se bifurca a la
subrutina correspondiente.
7ª. Se borran los señalizadores por software, antes de realizar el
retorno.
8ª. Cuando se llega a la ultima instrucción de la rutina de interrupción,
que es la de RETFIE, se carga en el PC el valor que inicialmente se
guardo en la Pila y se coloca automáticamente el bit GIE = 1.
Microcontroladores
PIC
Características de los PIC
Palabra de Configuración: La Palabra de configuración en los PIC de la gama media se
compone de 14 bits que se escriben durante el proceso de grabación
del dispositivo. Dichos bits ocupan la posición reservada de la
memoria de programa 2007h. Y están destinados a características
especiales y de control del CPU.
Microcontroladores
PIC
MPLAB IDE
El entorno de desarrollo integrado MPLAB corre bajo Microsoft
Windows. MPLAB proporciona funciones que permiten:
· Crear y Editar archivos fuentes
· Agrupar archivos fuente dentro de proyectos
· Depurar código fuente
MPLAB es un conjunto de herramientas para el desarrollo y
depuración de aplicaciones en un proyecto. MPLAB incluye un editor
de texto, un manejador de proyectos para mantener tu código
organizado y un ambiente para depurar el software que desarrollas
para tus propios diseños. Este ambiente incluye el simulador MPLAB-
SIM, y soporta otras herramientas de Microchip tales como el
emulador PICMASTER y el programador de dispositivos PICSTART
Plus. Manejador de Proyectos
El manejador de proyectos es la parte central del MPLAB. Sin la
creación de un proyecto no se puede hacer depuración alguna.
Microcontroladores
PIC
MPLAB IDE
A través del manejador de proyectos se hacen las siguientes
operaciones:
· Crear un proyecto
· Añadir un archivo de código fuente a un proyecto
· Ensamblar o compilar código fuente
· Editar código fuente
· Reconstruir todos los archivos fuente, o compilar un archivo sencillo
· Depurar el código fuente
El Editor MPLAB
El Editor de MPLAB permite a los programadores escribir y editar
código fuente para las familias de microcontroladores PIC16/17, así
como otros archivos de texto.
El Ensamblador MPASM
Microcontroladores
PIC
MPLAB IDE
El Ensamblador Universal de Microcontroladores PIC16/17 MPASM
ofrece grandes características completamente desarrolladas,
ensamblado condicional y de diferentes fuentes y lista de formatos.
El Simulador MPLAB-SIM
El simulador MPLAB-SIM permite aislar problemas de código y
depurar diseños en los microcontroladores PIC16/17. Simula las
funciones principales así como la mayoría de los periféricos de las
familias de microcontroladores PIC16/17.
Otras Herramientas
El MPLAB soporta herramientas de desarrollo tales como
programadores, compiladores y emuladores ya sea de Microchip o de
otros diseñadores.
A continuación unas imágenes de MPLAB y algunas configuraciones
antes de comenzar a programar.
Microcontroladores
PIC
Antes de comenzar a programar es necesario conocer los siguientes
términos:
Mnemónico: Es el nombre de la instrucción. Hay que escribirlo tal
cual es, sin cambiarlo.
Parámetros: Son los operandos que necesita la instrucción para
ejecutarse. Cada instrucción admite un tipo de parámetro, que habrá
que sustituir por los valores reales
Parámetro f: representa un registro de la memoria de datos, y es el
operando origen de una instrucción.
Parámetro d: representa un registro operando destino de una
operación, con dos posibles valores. Si se sustituye por un 0 ó w
significa que el registro destino es el registro de trabajo W y si se
sustituye por un 1 ó f significa que es el mismo operando origen de la
instrucción.
MPLAB IDE
Microcontroladores
PIC
Parámetro b: representa un bit (valores de 0 a 7) de un registro.
Parámetro k: representa un valor literal, es decir, un valor numérico
que acompaña al mnemónico de la instrucción.
Ciclo de instrucción o ciclo de maquina: es el tiempo básico que
tarda una instrucción en ejecutarse, en los PICmicro™ equivale a 4
veces el periodo de la señal de reloj.
Flags: Bits contenidos en determinados registros que actúan como
señalizadores para avisar de ciertos eventos ocurridos al ejecutarse
una instrucción.
Código OP: Traducción que realiza el programa ensamblador de una
instrucción para que pueda ser entendida por el MCU, que no trabaja
con mnemónicos, sino con valores binarios.
MPLAB IDE
Microcontroladores
PIC
Directiva: Es un comando ensamblador que se introduce en el
código fuente de un programa pero que no se traduce en código de
maquina (OP) al ensamblarlo. Se utiliza para realizar una orden al
ensamblador acerca del programa.
Etiqueta: Nombre que se le antepone a una instrucción con el objeto
de recurrir a ella cuando sea necesario desde otra parte del
programa.
Ejemplo con una instrucción sencilla:
Mover: movf f,d
Etiqueta Mnemónico Parámetros sin sustituir
Mover: movf Registro,0
Etiqueta Mnemónico Parámetros sustituidos
MPLAB IDE
Microcontroladores
PIC
Estructura de un programa:
A fin de evitar errores, omisiones innecesarias o simplemente para
saber por donde comenzar, se debe realizar una plantilla de un
programa general para utilizarla en los programas siguientes. A
continuación se da una plantilla bastante completa y estructurada de
un programa típico para los MCUs.
;***********************************************************************************
;------------------------------------------------------------------------------------------------
; Encabezado. Aquí va el titulo del programa, autor, etc…
;------------------------------------------------------------------------------------------------
;***********************************************************************************
; Directivas de inicio…
LIST P=Tipo de procesador
RADIX Numeración por defecto
INCLUDE Archivos de cabecera
;***********************************************************************************
; Declaración de variables y bits…
;***********************************************************************************
MPLAB IDE
Microcontroladores
PIC
;***********************************************************************************
; Vectores de reset o inicio y de interrupción…
ORG 0
Goto INICIO
ORG 4
Goto INTERRUPCION
;***********************************************************************************
; Tablas y mensajes…
;***********************************************************************************
;------------------------------------------------------------------------------------------------
; Programa principal…
INICIO
;------------------------------------------------------------------------------------------------
;***********************************************************************************
; Subrutinas…
INTERRUPCION
ETC
;***********************************************************************************
; Directiva de fin del programa…
END
;***********************************************************************************
Recomendaciones al momento de programar:
MPLAB IDE
Microcontroladores
PIC
Las directivas se suelen escribir en mayúsculas. No pasa nada si se
escriben en minúsculas pero así se diferencian de las variables y las
instrucciones.
Los nombres (mnemónicos) se suelen escribir en minúsculas. No
pasa nada si se escriben en mayúsculas pero a la vista cansa más el
texto y se lee peor.
Los programas deben ir tabulados, enmarcados y bien alineados para
ver rápidamente la estructura de un programa. Los únicos casos que
se escriben a la izquierda son las etiquetas y la declaración de
variables.
Esto ayuda en la presentación del programa y lo hace mas
comprensible, incluso es una buena practica dejar líneas en blanco
entre partes del programa y enmarcar de manera diferente las partes
del programa que son mas importantes.
MPLAB IDE
Microcontroladores
PIC
Ayuda en la elaboración del programa y posterior modificación o
reutilización, el uso de comentarios para explicar instrucciones o
partes de este. Para ello se utiliza el punto y coma y a continuación el
comentario que se quiere realizar.
Set de Instrucciones.
A continuación se presenta la lista de instrucciones clasificadas
según su operación, orientadas a registros, bits y literales, necesarias
para el manejo de la ALU y el control de datos dentro de los
microcontroladores PICmicro
MPLAB IDE