103
Microcontroladores PIC Introducción a los Microcontroladores PIC José D. Vargas M.

Curso - Clase 01

Embed Size (px)

Citation preview

Microcontroladores

PIC

Introducción a los

Microcontroladores

PIC

José D. Vargas M.

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

¿ Qué es un PIC ?

Microcontroladores

PIC

Microcontroladores PIC

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?

Microcontroladores

PIC

¿Como se programa un PIC?

Ejemplo programando en lenguaje ensamblador.

Microcontroladores

PIC

¿Como se programa un PIC?

Cada instrucción genera una acción.

Microcontroladores

PIC

¿Como se programa un PIC?

Ejemplo programando en lenguaje C.

Microcontroladores

PIC

¿Como se programa un PIC?

Desventaja de los compiladores de lenguajes de alto nivel.

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

Microcontroladores

PIC

Pasos para realizar un proyecto con PICs (Principiantes)

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

Estructura de un PIC

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 Datos

Las memorias se dividen en registros.

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

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

Oscilador LP

VDD

VSS

MCLR

Microcontroladores

PIC

Introducción a los PICmicro

OSC1

PICmicro

OSC2

VDD

VSS

MCLR Oscilador XT, HS

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

Detalle del perro guardián

Características de los PIC

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

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

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

Características de los PIC

Palabra de Configuración:

Microcontroladores

PIC

Características de los PIC

Palabra de Configuración:

Microcontroladores

PIC

Programación en

lenguaje

Ensamblador

José D. Vargas M.

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

MPLAB IDE

Ventana principal

Microcontroladores

PIC

MPLAB IDE

Ventana del editor

Microcontroladores

PIC

MPLAB IDE

Cambiando el modo

de texto

Microcontroladores

PIC

Cambiando el

dispositivo a

utilizar

MPLAB IDE

Microcontroladores

PIC

En este caso el

PIC12F675

MPLAB IDE

Microcontroladores

PIC

Cambiando las

propiedades del

texto

MPLAB IDE

Microcontroladores

PIC

Cambiando las

propiedades del

texto

MPLAB IDE

Microcontroladores

PIC

Cambiando las

propiedades del

texto

MPLAB IDE

Microcontroladores

PIC

Ensamblando

MPLAB IDE

Microcontroladores

PIC

Ensamblando

MPLAB IDE

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

Microcontroladores

PIC

Set de instrucciones

Microcontroladores

PIC

Set de instrucciones