microcontroladores 3 16f887

15
MECATRONICA SISTEMAS MICROCONTROLADOS 38 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas SISTEMAS MICROCONTROLADOS Capítulo 3 PIC 16F88X 3.1 El PIC16F88X Microchip inicia su introducción al mercado con el 16F84 y aunque tienen a disponibilidad una gran variedad de PICs, este resulta ser uno de los más utilizados en todo el mundo, luego es descontinuado y remplazado por el PIC16F62X. Pero sus prestaciones limitadas y tamaño le dieron paso (la menos en nuestro medio) a la familia de 16F87X que nos brindaban una gran versatilidad lo que los ha convertido en uno de los modelos que más usan los desarrolladores, al momento la familia 16F88X se basa en la 16F87X, pero los han mejorado ya que traen versiones de periféricos actualizados a los que los llaman extendidos y otra característica adicionales. 3.2 Características Generales del PIC16F887. Entre las características más sobresalientes de este dispositivo, se tienen las siguientes: CPU tipo RISC de alto rendimiento: Set reducido de instrucciones solo 35 Instrucciones: - Todas las instrucciones se ejecutan en un solo ciclo exceptuando bifurcaciones. Velocidad de operación: - DC – 20 MHz oscillator/clock input - DC – 200 ns ciclo de instrucción Capacidad de interrupción. La Pila (Stack) del Hardware de 8 Niveles. Direccionamiento directo, Indirecto y direccionamiento relativo. Las Características Especiales del Microcontrolador: La Precisión el Oscilador Interno: - La fábrica calibrada para ± 1 % - Frecuencia interna seleccionable por software de 8 MHZ y 31KHZ con afinación por software. - Modo de trabajo de dos velocidades Start-Up. - Detección de fallo del Cristal en aplicaciones críticas. - El modo del reloj cambia durante la operación ahorro de energía. Modo SLEEP para ahorro de energía. Rango de Voltaje de trabajo (2.0V-5.5V).

Upload: pablo-rodas

Post on 04-Aug-2015

212 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

38 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

SISTEMAS MICROCONTROLADOS

Capítulo 3

PIC 16F88X

3.1 El PIC16F88X

Microchip inicia su introducción al mercado con el 16F84 y aunque tienen a disponibilidad una gran variedad de PICs, este resulta ser uno de los más utilizados en todo el mundo, luego es descontinuado y remplazado por el PIC16F62X. Pero sus prestaciones limitadas y tamaño le dieron paso (la menos en nuestro medio) a la familia de 16F87X que nos brindaban una gran versatilidad lo que los ha convertido en uno de los modelos que más usan los desarrolladores, al momento la familia 16F88X se basa en la 16F87X, pero los han mejorado ya que traen versiones de periféricos actualizados a los que los llaman extendidos y otra característica adicionales.

3.2 Características Generales del PIC16F887.

Entre las características más sobresalientes de este dispositivo, se tienen las siguientes: CPU tipo RISC de alto rendimiento:

• Set reducido de instrucciones solo 35 Instrucciones: - Todas las instrucciones se ejecutan en un solo ciclo exceptuando

bifurcaciones. • Velocidad de operación:

- DC – 20 MHz oscillator/clock input - DC – 200 ns ciclo de instrucción

• Capacidad de interrupción. • La Pila (Stack) del Hardware de 8 Niveles. • Direccionamiento directo, Indirecto y direccionamiento relativo.

Las Características Especiales del Microcontrolador: • La Precisión el Oscilador Interno:

- La fábrica calibrada para ± 1 % - Frecuencia interna seleccionable por software de 8 MHZ y 31KHZ con

afinación por software. - Modo de trabajo de dos velocidades Start-Up. - Detección de fallo del Cristal en aplicaciones críticas. - El modo del reloj cambia durante la operación ahorro de energía.

• Modo SLEEP para ahorro de energía. • Rango de Voltaje de trabajo (2.0V-5.5V).

Page 2: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

39 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

• Power-on Reset (POR) • Power-up Timer (PWRT) y Oscilador Start-up Timer (OST) • Brown-out Reset (BOR) con opción de control por software. • Watchdog Timer Extendido Baja-Correitne (WDT) con oscilador interno (seleccionable por software, nominal 268 segundos con full prescaler) habilitación por software. • Multiplexado del Master Clear Reset con Pull-up/Input Pin. • Protección de código programable. • Flash/EEPROM de alta resistencia :

- 100,000 escrituras en la FLASH - 1,000,000 escrituras en la EEPROM - Retención en la Flash/Data EEPROM: > 40 years

• Memoria de programa Read/Write durante ejecución. • In-Circuit Debugger (en placa).

Las Características de Bajo consumo: • Correinte en Standby: • - 50 nA 2.0V, típico • Corriente de trabajo: • - 11 uA @ 32 kilohercio, 2.0V, típico • - 220 uA @ 4 megahertzio, 2.0V, típico • La Corriente del Timer del Perro Guardián: • - 1 uA @ 2.0V, típico

Las Características Periféricas:

• 35 Pines de I/O con Control Individual de Dirección: - Fuente de alta corriente para manejo de LED directo. - Detección de interrupción por cambio en el Pin. - Pull-ups programables individuamente. - Ultra Low-Power Wake-up (ULPWU).

• El Módulo Analógico del Comparador con: - Dos comparadores analógicos. - Referencia de voltaje Programable on-chip (CVREF) módulo (el % de

VDD). - Referencia fija (0.6V) de voltaje. - Entradas y salidas de comparador externamente accesible. - El modo SR Latch. - Timer 1 Puerta externa (cuenta habilitada).

• Conversor A / D: - Resolución de 10-bit y 14 canales.

• Timer0: Contador/temporizador de 8-bits con pre-escala programable • El Timer1 Extendido:

Page 3: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

40 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

- Contador/temporizador de 16-bits con pre-escala - El modo de entrada externa. - Oscilador dedicado de 31 el oscilador de kilohercio en modo bajo

consumo. • Timer2: Contador/temporizador de 8-bits con 8 bits de periodo, Prescaler y Postscaler. • Modulo extendido Compara, captura PWM.

- La captura de 16 bits, resolución máxima de 12.5 ns - Haga una comparación, tope. decisión 200 ns - PWM de 10 bits con 1, 2 o 4 canales de salida programables, "tiempo

muerto" Frecuencia máxima de salida 20 kilohercios. - Control de la dirección de salida PWM

• Captura, Compare, PWM Module: - La captura de 16 bits, max. resolución 12.5 ns. - Compara de 16 bits, max. resolución de 200 ns. - PWM de 10 bits, max. frecuencia 20 kilohercios.

• USART realzado Module: - Soporte RS-485, RS-232, y LIN 2.0 - El Autobaudio Detecte - El auto wake-up con un Start-bit.

• In-Circuit Serial ProgrammingTM (ICSPTM) por dos pines. • Modulo Master Synchronous Serial Port (MSSP) soporta 3-wire SPI (los 4 moods) e I2C. en modos Maestros y Esclavos con I2C Address Mask. • Cada una de sus pines puede proveer máximo hasta 25mA de corriente.

3.2.1 Familia 16F88X

Aunque los PIC´s de esta familia tienen una constitución interna similar cada uno tiene sus características y los podremos utilizar de acurdo a nuestras necesidades.

Características 16F882 16F883 16F884 16F886 16F887

Frecuencia

Máxima 20Mhz 20Mhz 20Mhz 20Mhz 20Mhz

Memoria de

programa

FLASH-14bits

2KB

4KB

4KB

8KB

8KB

Posiciones SRAM

de datos 128 128 256 256 368

Page 4: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

41 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Características 16F882 16F883 16F884 16F886 16F887

Posiciones

EEPROM de

datos

128 256 256 256 256

Ports E/S 24 24 35 24 35

Nº de Pines 28 28 40 28 40

Interrupciones 10 11 13 14 13

Timers 3 3 3 3 3

Módulos CCP y

ECCP 1/1 1/1 1/1 1/1 1/1

Comunicaciones

Serie EUSART/

MSSP

1/1 1/1 1/1 1/1 1/1

Comparadores

analógicos 2 2 2 2 2

Convertidor A/D

de 10 bits 11 11 14 11 14

3.3 Arquitectura Interna:

A continuación se da una breve descripción de los bloques más importantes de este dispositivo:

Memoria de Programa y de Datos: Estos bloques son muy importantes ya que nos permiten almacenar el programa a ejecutarse y las variables temporales que el programa necesite.

Buses de Datos, Direcciones y Control: Son los encargados de transmitir las señales y la información para controlar a todos los distintos bloque del microcontrolador.

Contador de Programa: Es el encargado de direccionar una por una, en orden ascendente, las casillas de la memoria de programa, excepto cuando se trata de subrutinas, saltos o interrupciones. Este contador siempre empieza en cero, es decir, siempre lee la casilla cero de la memoria de programa después de un reset o del encendido del uC.

Page 5: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

42 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Pila (Stack): Cuando como resultado de una subrutina o interrupción el contador de programa tiene que dejar de contar en orden normal, para cargar una nueva dirección, la dirección actual se guarda en la pila, de esta manera cuando el uC sabe dónde estaba antes de ir a la subrutina o a la interrupción.

Control y decodificador de Instrucciones: En este bloque se entiende la orden o instrucción guardada en la memoria de programa, y por ende es el encargado de controlar todo el resto del uC.

Generador de Tiempos: Aquí se recibe la señal del reloj externo (reloj significa un tren de pulsos), y se distribuye por todo el sistema de manera que todos trabajan a la misma velocidad.

ALU (Unidad Lógica Aritmética): La ALU es la encargada de realizar las operaciones aritméticas y lógicas entre las que se incluyen suma, resta, AND, OR, XOR y NOT.

Registro Acumulador o W (working): Este registro es el más importante de todos, porque a través de él, se realizan un sin número de operaciones e instrucciones, en especial aquellas relacionadas con la ALU.

Registro de Estado (STATUS): Este se utiliza para indicar entre otras cosas, el resultado de una operación en la ALU. Por ejemplo si una suma dio como resultado un número mayor a 8 bits, un bit dentro de este registro indica esta condición (bit de carry), por otra parte si el resultado de cualquier operación fue cero, otro bit indicará esta condición (bit “zero”).

Page 6: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

43 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Figura 3.1 Arquitectura interna del uC

Page 7: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

44 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

3.4 Descripción de pines

La mayoría de los pines del microcontrolador PIC16F887 son multipropósito como se

muestra en la figura anterior. Por ejemplo, la asignación RA3/AN3/Vref+/C1IN+ para

el quinto pin del microcontrolador indica que éste dispone de las siguientes funciones:

RA3 Tercera entrada/salida digital del puerto A AN3 Tercera entrada analógica Vref+ Referencia positiva de voltaje C1IN+ Entrada positiva del comparador C1

La funcionalidad de los pines presentados anteriormente es muy útil puesto que permite

un mejor aprovechamiento de los recursos del microcontrolador sin afectar a su

funcionamiento. Estas funciones de los pines no se pueden utilizar simultáneamente, sin

embargo se pueden cambiar en cualquier instante durante el funcionamiento.

Figura 3.2 Distribución de pines del PIC 16F88X

Las siguientes tablas se refieren al microcontrolador DIP de 40 pines.

Page 8: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

45 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Tabla 3.1 Descripción de pines

Page 9: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

46 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Page 10: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

47 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Page 11: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

48 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Puertos de Propósito General (PORT A, B, C, D, E): Los puertos no son más que los pines externos del uC, estos puertos pueden ser programados para actuar como entradas de datos (ej. Observar el estado de un pulsante, dipswitch, sensores, teclados, etc.) o como salida de datos (ej. Controlar el encendido de Led’s, Displays, Motores, etc.).

Periféricos Específicos: Son un conjunto de circuitos especializados que realizan funciones específicas (Temporizadores, Conversor Analógico Digital, etc.), comparten pines con los puertos, es decir, cuando los pines son utilizados por los periféricos específicos no se pueden utilizar los puertos como simples entrada y salidas.

Pin de Reset: Cuando se da un cero (tierra) en esta pin, el uC vuelve a cero, es decir el contador de programa regresa a la casilla cero y empieza de nuevo.

Funciones Especiales del CPU: Son un conjunto de bloques que permiten mejorar el rendimiento y la utilización de este dispositivo. Entre los más importantes están: detector de baja tensión, autoreset de inicialización, temporizador contra fallos, circuito para programación en línea, etc.

3.5 Descripción de memoria.

3.5.1 Memoria de Programa:

La familia de uC PIC16XXXX es capaz de soportar hasta 8K (8096 casillas) de memoria de programa ordenadas en páginas de 2K. Como ya se había mencionado, para leer cada casilla de memoria se hace uso del Contador de Programa el cual no es más que la unión de dos registros llamados PCL y PCLATH cada uno de 8 bits, juntos pueden leer todas las casillas de memoria.

Page 12: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

49 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

FIGURA 3.3 Memoria de programa

Normalmente estos dos registros siempre cuentan en forma normal, es decir, con cada ciclo de máquina aumentan uno a su conteo binario.

Pero existen instrucciones u órdenes que hacen que estos registros cambien su conteo normal, y en vez de leer la siguiente casilla se dirijan a otras casillas de memoria.

Adicionalmente al Contador de Programa, se encuentra la pila de programa o pila de direcciones, que es un espacio de 8 casillas independiente de la memoria del dispositivo, que el contador de programa utiliza para guardar la dirección de la última casilla leída más uno, a la cual debe regresar siempre que se va a producir un salto del que se tiene que regresar (ej. Subrutinas e Interrupciones).

Page 13: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

50 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

3.5.2 Memoria de Datos tipo RAM:

Figura 3.4 Memoria RAM

Page 14: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

51 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

La memoria de datos tipo RAM al igual que la de programa también se encuentra dividida en bloques o bancos, específicamente se tienen 4 bancos de memoria de datos cada uno con 128 registros (00 hasta 7F). Cada banco se subdivide en dos grupos de registros denominados: Registros de Funciones Especiales y Registros de Propósito General.

Los registros especiales se utilizan entre otras cosas para: analizar el comportamiento de la ALU, seleccionar bancos de memoria, configurar interrupciones o activar/desactivar, leer/escribir o configurar un periférico específico. Por otro lado los registros de propósito general, son los lugares en donde se colocaran a las variables que sean utilizadas en el programa.

3.5.3 Memorias de Datos tipo EEPROM:

Este sector de memoria encuentra gran aplicabilidad en proyectos que incluyan guardar datos en forma no volátil, es decir, datos que no se pierdan incluso después de quitar la alimentación del uC. Como ejemplos se encuentran los sistemas de alarmas para casas, edificios, etc. donde es necesario cambiar los códigos de acceso, constantemente sin que para eso se tenga que volver a grabar el programa original con la clave cambiada, otro ejemplo pueden ser sistemas de temporización de eventos para invernaderos, luces automáticas, ventiladores, etc., para los cuales puede ser necesario configurar periódicamente diferentes tiempos de activación y desactivación.

En general la EEPROM de datos que dispone el uC, se caracteriza por tener un sistema de grabado y borrado integrado, lo cual elimina la necesidad de tener una fuente adicional ya que funciona con la misma tensión que es alimentado el integrado, además los tiempos de programación son muy pequeños (5ms o menos). Sin embargo una desventaja es que solo se disponen de 256 bytes que pueden ser programados, aunque para la gran mayoría de aplicaciones esto es más que suficiente.

3.6 Puertos de Entrada y Salida:

Las puertas de E/S digital son el periférico más simple de todos los que aparecen en los PIC y nos servirán para leer o escribir valores digitales desde o hacia el exterior. En algunos puertos estos pines están multiplexados con otras funciones alternativas (convertidores A/D, E/S serie, etc.). En el caso que lo tengamos para esa función, el pin no podrá funcionar como E/S digital.

Los pines de las puertas E/S pueden ser seleccionados de forma individual para que actúen como pines de entrada o de salida, a través de los registros TRIS, de tal forma que si TRISX<n> es:

0 => Pin n de la puerta X actúa como salida.

1 => Pin n de la puerta X actúa como entrada.

Page 15: MICROCONTROLADORES 3 16f887

MECATRONICASISTEMASMICROCONTROLADOS

52 Unidad Educativa Técnico Salesiano Ing. Pablo Rodas

Cuando se produce un reset TRIS se pone a 1, configurando así las puertas como entradas y evitando que se active indebidamente algún dispositivo externo que estuviera conectado al PIC.

La configuración típica para las puertas E/S se ve en la figura/

Figura 3.5 Circuito de un puerto general

En el PIC16F88x se dispone de 6 puertos de entrada y salida de propósito general que multiplexan funciones con los periféricos internos.

PORTA: Posee 8 líneas, este puerto junto con el PORTE, son las entradas del Módulo conversor A/D y del TIMER 0. PORTB: Posee 8 líneas, este puerto es comúnmente utilizado para el manejo de teclados matriciales y en general cualquier tipo de pulsante o interruptor ya que posee resistencias internas de pull-up configurables e interrupciones programables por cambio de estado. PORTC: Posee 8 líneas, este puerto es usado por el puerto de comunicaciones seriales (USART), el TIMER1 y el Módulo de CCP. PORTD: Posee 8 líneas, este puerto es usado por el Módulo de Comunicaciones Paralelas como bus de Datos. PORTE: Posee 4 líneas, este es utilizado para generar las señales de control para el Módulo de Comunicaciones Paralelas.

Cada línea de un puerto puede ser programada para operar como entrada o como salida independientemente de cómo estén programadas el resto de líneas del mismo puerto. Esto resulta de gran ayuda para evitar el desperdicio de líneas, considere como ejemplo de desperdicio el puerto paralelo de una computadora. Para permitir esta funcionalidad de los puertos, cada uno posee dos registros llamados TRISX y PORTX (X = A,B,C,D,E) cada uno de 8 bits (en el caso de puertos con menos de 8 líneas los bits sobrantes no se utilizan).

El registro TRIS se utiliza para configurar una línea como entrada (1) o como salida (0), en cambio que el registro PORT se utiliza para leer o escribir 1’s o 0’s en las líneas del puerto.