Introducción al PIC16F87x
En este tema tratamos los elementos fundamentales de
los microcontroladores 16f87x.
Los microcontrolador PIC16F87x de Microchip, pertenece
a una gran familia de microcontroladores de 8 bits (bus de datos) que tienen
las siguientes características generales que los distinguen de otras familias:-
Arquitectura Harvard- Tecnología RISC- Tecnología CMOS. Estas características se conjugan para lograr un
dispositivo altamente eficiente en el uso de la memoria de datos y programa y
por lo tanto en la velocidad de ejecución.Microchip ha dividido sus
microcontroladores en tres grandes subfamilias de acuerdo al número de bits de
su bus de instrucciones:
Subfamilia instrucciones nomenclatura
Base - Line 33 instrucciones de12 bits PIC12XXX y PIC14XXX
Mid – Range
35 instrucciones de 14
bits PIC16XXX
High - End
58 instrucciones de 16
bits PIC17XXX y PIC18XXX
Nomenclatura
Además de lo mostrado en la tabla anterior, en el
nombre específico del microcontrolador pueden aparecer algunas siglas que
dependen del rango de voltaje manejado y del tipo de memoria ROM incluida, como
se muestra a continuación:
Tipo de memoria Rango de voltaje Estándar
(4.5 a 6 volts) Extendido (2.5 a 6
volts)
EPROM, OTP
PIC16CXXX
PIC16LCXXX
ROM
PIC16CRXXX
PIC16LCRXXX
Flash
PIC16FXXX
PIC16LFXXX
Sub familia 16f87x
· Procesador de arquitectura RISC avanzada
· Juego de solo 35 instrucciones con 14 bits de
longitud. Todas ellas se ejecutan en un ciclo de instrucción, menos las de
salto que tardan dos.
· Hasta 8K palabras de 14 bits para la Memoria de
Programa, tipo FLASH en los modelos
16F876 y 16F877 y 4KB de memoria para los PIC 16F873 y 16F874.
· Hasta 368 Bytes de memoria de Datos RAM.
· Hasta 256 Bytes de memoria de Datos EEPROM.
· Pines de salida compatibles para el PIC
16C73/74/76/77.
· Hasta 14 fuentes de interrupción internas y
externas.
· Pila de 8 niveles.
· Modos de direccionamiento directo e indirecto.
· Power-on Reset (POP).
· Temporizador Power-on (POP) y Oscilador Temporizador
Start-Up.
· Perro Guardián (WDT).
· Código de protección programable.
· Modo SLEEP de bajo consumo.
· Programación serie en circuito con dos pines, solo
necesita 5V para programarlo en este modo.
· Voltaje de alimentación comprendido entre 2 y 5,5 V.
· Bajo consumo: < 2 mA para 5 V, 4 Mhz, 20 µA para 3V y <1 µA en standby.
Encapsulado PDIP de 40 pines.
Encapsulado PDIP de 28 pines.
DISPOSITIVOS PERIFÉRICOS
· Timer0: Temporizador-contador de 8 bits con
preescaler de 8 bits
· Timer1: Temporizador-contador de 16 bits con
preescaler que puede incrementarse en modo sleep de forma externa por un cristal/clock.
· Timer2: Temporizador-contador de 8 bits con
preescaler y postscaler.
· Dos módulos de Captura, Comparación, PWM (Modulación
de Ancho de Pulsos).
· Conversor A/D de 10 bits.
· Puerto Serie Síncrono Master (MSSP) con SPI e I2C
(Master/Slave).
· USART/SCI (Universal Syncheronus Asynchronous
Receiver Transmitter) con 9 bit.
· Puerto Paralelo Esclavo (PSP) solo en encapsulados
con 40 pines.
Bajo el nombre de EL PIC 16F87X esta subfamilia de
microcontroladores, encontramos cuatro modelos: EL PIC 16F873/4/6 y 7. Estos
microcontroladores disponen de una memoria de programa FLASH de 4 a 8 KBytes de
14 bits. De los microcontroladores indicados, el 16F873 y el
16F876 son de 28 pines, mientras que 16F874 y el 16F877 tienen 40 pines, lo que
les permite disponer de hasta 33 líneas de E/S. En su arquitectura además
incorporan: Varios Timer, USART, Bus I2C.
Tabla comparativa de los diversos Microcontroladores de esta familia.
Diagrama de bloques.
Descripción de la CPU
La CPU es la responsable de la interpretación y
ejecución de la información (instrucciones) guardada en la memoria de programa.
Muchas de estas instrucciones operan sobre la memoria de datos. Para operar
sobre la memoria de datos además, si se van a realizar operaciones lógicas o
aritméticas, requieren usar la Unidad de Lógica y Aritmética (ALU). La ALU
controla los bits de estado (Registro STATUS), los bits de este registro se
alteran dependiendo del resultado de algunas instrucciones.
Ciclo de instrucción, el registro Program Counter (PC) es gobernado por el
ciclo de instrucción como se muestra en la siguiente figura. Cada ciclo de
instrucción la CPU lee (ciclo Fetch) la instrucción guardada en la memoria de
programa apuntada por PC y al mismo tiempo ejecuta la instrucción anterior,
esto debido a una cola de instrucciones que le permite ejecutar una instrucción
mientras lee la próxima.
Como puede verse, cada ciclo de instrucción (Tcy =
4Tosc) se compone a su vez de cuatro ciclos del oscilador (Tosc= 1/Fosc)). Cada
ciclo Q provee la sincronización para los siguientes eventos:
Q1: Decodificación de la instrucción
Q2: Lectura del dato (si lo hay)
Q3: Procesa el dato
Q4: Escribe el dato
Debido a esto cada ciclo de instrucción consume 4
ciclos de reloj, de manera que si la frecuencia de oscilación es Fosc, Tcy será
4/Fosc.
EJEMPLO
Si la frecuencia del reloj principal es de 4 MHz, un
ciclo de instrucción tardará en realizarse:
T oscilación del reloj principal = 1 / F del reloj
principal 1 / 4 MHz = 250 ns.
Ciclos de instrucción = T oscilación del reloj
principal • 4 250 ns • 4 = 1 μs.
Si en nuestro programa tenemos unas 100 instrucciones,
la ejecución completa
tardará:100 • 1μs = 100 μs
Registros de la CPU.
Registro PC.- Registro de 13 bits que siempre apunta a
la siguiente instrucción a ejecutarse.
Registro de Instrucción.- Registro de 14 bits. Todas
las instrucciones se colocan en él para ser decodificadas por la CPU antes de
ejecutarlas.
Registro W.- Registro de 8 bits que guarda resultados
temporales de las operaciones realizadas por la ALU
Registro STATUS.- Registro de 8 bits, cada uno de sus
bits (denominados Banderas) es un indicador de estado de la CPU o del resultado
de la última operación como se indica a continuación:
C.- Bit de acarreo/préstamo’ de la última operación aritmética
(en el caso de préstamo (resta), el bit se invierte antes de guardarse)
DC.- Acarreo/prestamo proveniente del cuarto bit menos
significativo. Funciona igual que el bit C, pero para operaciones de 4 bits.
Z.- Este bit se pone (=1) para indicar que el
resultado de la última operación fue cero, de lo contrario se limpia (=0)
Los señalizadores PD# y TO#, son activos por nivel
bajo (#) y sirven para indicar la causa que ha provocado la reinicialización
del procesador.
PD#: Se activa a 0 al ejecutarse la instrucción SLEEP.
Se pone a uno automáticamente tras la conexión de alimentación o bien al
ejecutarse la instrucción CLRWDT
TO#: Se activa a nivel bajo al desbordarse el perro
guardián. Toma el valor 1 tras la conexión de alimentación o al ejecutarse las
instrucciones CLRWDT o SLEEP.
Los PIC se resetean al conectar la alimentación (POR –
Power on Reset). También se resetean cuando la tensión de alimentación baja de
4V (BOR – Brown on Reset), aunque esta función es factible desactivarla
poniendo a 0 el bit BODEM, presente en la palabra de configuración, tanto en el
Reset POR como en el BOR los bits PD# y TO# toman el valor 1, mientras que en
los demás casos dependen de la causa que ha provocado el Reset.
Los bit RP1 (STATUS <6> y RP0 (el ESTADO
<5> seleccionan cada uno de estos bancos de memoria, de acuerdo a la siguiente
tabla:
RP1 RP0 Banco
0 0 Banco 0
0 1 Banco 1
1 0 Banco 2
1 1 Banco 3
IRP se usa conectado con el bit de más peso del
registro FSR para elegir el banco de RAM en el direccionamiento indirecto.
Bancos de la memoria RAM
Otras características importantes de los
microcontroladores Pic:
Carácter Ortogonal, lo cual quiere decir, que
cualquier instrucción puede
utilizar a cualquier elemento de
la arquitectura como fuente o destino.
Procesador segmentado o pipeline, oermite realizar simultáneamente la ejecución de una
instrucción y la búsqueda del código de la siguiente instrucción. De esta
manera se puede ejecutar una instrucción en un ciclo máquina. Cada ciclo
máquina equivale a cuatro ciclos de reloj.
El circuito de reinicio, el terminal MCLR (Master Clear) debe estar a valor
lógico alto para que el dispositivo funcione normalmente, esto es, sin irse a
reinicio. Con un valor lógico bajo el dispositivo se reinicia, comenzando la
ejecución desde el principio del programa que tenga cargado en memoria.
Lo más práctico, para facilitar el hecho de poder
realizar un reinicio manual, es utilizar un pulsador (pulsador de reinicio),
similar al que se puede encontrar en la mayoría de ordenadores. El fabricante
recomienda que se intercale una resistencia de 50 a 100 ohmios entre el
pulsador y la patita MCLR, para evitar posibles corrientes inducidas de más de
80 mA que podrían bloquear el dispositivo cuando este se lleva a masa
(reinicio).
Debido a que el pulsador no produce una respuesta
instantánea, producto de los rebotes de éste (transitorio), se generan una
serie de pulsos hasta quedar estabilizado en su estado permanente. Para evitar
esto se puede usar un condensador instalado en paralelo con la entrada MCLR
(filtro pasa bajo).
Estos microcontroladores permiten escoger entre cinco
tipos distintos de osciladores:
LP (Low
Power): reloj de bajo consumo, estable, hasta
200 kHz.
XT (Xtal,
Crystal): estable, frecuencia de oscilación de hasta 4 MHz.
HS (High
Speed): estable, frecuencia de oscilación de hasta 20 MHz.
RC
(Resistor/Condensador): frecuencia de oscilación dependiente de resistencia,
condensador, voltaje de alimentación y temperatura de trabajo. Es el tipo más
económico, pero también el más inestable.
Externo:
cuando la señal de reloj es externa, generada por otro circuito. Los modos LP, XT y HS suponen la conexión de un
cristal de cuarzo o resonador cerámico entre las patitas OSC1/CLKIN y
OSC2/CLKOUT del dispositivo, mientras que el modo RC y Externo solo ocupan la
patita OSC1/CLKIN.
La alimentación
Los dispositivos de la familia PIC16F87X admiten un
amplio rango de tensiones de alimentación, que va de 2,0 V a 5,5 V. La tensión
a la cual se alimenten determinará la frecuencia máxima de trabajo.
La potencia máxima disipada es de 1 W y se calcula
mediante la siguiente fórmula:
donde:
- es la tensión suministrada por la fuente de alimentación.
- es la corriente suministrada por las salidas del PIC en estado alto.
- es la corriente absorbida por las salidas del PIC en estado bajo.
- es la tensión entregada por los terminales en estado alto.
- es la tensión presente en los terminales en estado bajo.
Corriente máxima absorbida: 80mA Puerta A y 150mA
Puerta B,C,D
Corriente máxima suministrada: 50mA Puerta A y 100mA
Puerta B
Corriente máxima absorbida por línea: 25mA
Corriente máxima suministrada por línea: 20mA
Voltaje de alimentación (VDD): De 2 a 6 V DC
Voltaje de grabación (VPP): De 12 a 14 VDC.
VÍDEOS:
Proyectos en MPLAB X Vídeo 1
Proyectos en MPLAB X Vídeo 2
Proyectos en MPLAB X Vídeo 3
Proyectos en MPLAB X Vídeo 4
No hay comentarios:
Publicar un comentario