1. LOS PIC DE LA GAMA MEDIA.
ARQUITECTURA Y TÉCNICAS DE
PROGRAMACIÓN.
Santiago Salamanca Miño
David Arroyo Muñoz
Octubre de 2003
2. Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno David
Arroyo Muñoz y dirigido por Santiago Salamanca Miño. Está basado en los apuntes de
clase de la asignatura Informática Industrial de la Titulación de Ingeniero Técnico
Industrial, especialidad Electrónica Industrial, que se imparte en la Escuela de
Ingenierías Industriales de la Universidad de Extremadura.
Agradecemos la información suministrada por Jorge Jesús Pérez García para la
corrección de este documento.
Si encuentras alguna errata o quieres hacer algún comentario, puedes escribir al
siguiente correo electrónico:
ssalaman@unex.es
3. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
ÍNDICE GENERAL
1 Introducción a los Microcontroladores. ..................................................................... 1
1.1 ¿Qué es un microcontrolador? ................................................................. 1
1.2 Aplicaciones............................................................................................. 3
1.3 Los microcontroladores PIC. ................................................................... 3
1.4 Las Gamas de los PIC.............................................................................. 5
1.5 Los PIC de la Gama Media...................................................................... 6
2 La Arquitectura de los PIC de la Gama Media......................................................... 11
2.1 Introducción. ........................................................................................... 11
2.2 Organización de la memoria. .................................................................. 13
2.2.1 Organización de la memoria de programa. ..................... 13
2.2.2 Organización de la memoria de datos............................. 16
2.2.3 Registros y recursos comunes......................................... 19
2.2.3.1 Registro de Estado. ....................................... 19
2.2.3.2 Registro de Opciones. ................................... 20
2.2.3.3 Palabra de configuración. ............................. 21
2.3 Oscilador................................................................................................. 22
2.4 Reset........................................................................................................ 26
2.5 Temporizador y Perro Guardián. ............................................................ 34
2.6 Puertas E/S.............................................................................................. 36
2.7 Modo de reposo o SLEEP....................................................................... 37
3 Juego de Instrucciones de los PIC de la Gama Media.............................................. 39
3.1 Introducción. ........................................................................................... 39
3.2 Flujo de instrucciones. Segmentación. ................................................... 40
3.3 El formato de las instrucciones............................................................... 41
3.4 Juego de instrucciones. ........................................................................... 43
3.4.1 Descripción detallada de las instrucciones
por orden alfabético. ....................................................... 45
4 Los Periféricos de los PIC de la Gama Media. ......................................................... 63
4.1 Introducción. ........................................................................................... 63
Santiago Salamanca Miño I Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
4. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
4.2 Interrupciones. ........................................................................................ 63
4.2.1 Registros de control. ....................................................... 65
4.2.1.1 Registro INTCON......................................... 65
4.2.1.2 Registros PIE. ............................................... 66
4.2.1.3 Registros PIR. ............................................... 67
4.2.2 Fases de una interrupción. .............................................. 70
4.3 Puertas de E/S. ........................................................................................ 72
4.3.1 Puerta A. ......................................................................... 73
4.3.2 Puerta B. ......................................................................... 75
4.3.3 Puerta C. ......................................................................... 77
4.3.4 Puerta D. ......................................................................... 78
4.3.5 Puerta E........................................................................... 78
4.3.6 Puertas F y G. ................................................................. 79
4.3.7 Puerta GPIO.................................................................... 80
4.3.8 Operaciones sucesivas en un Puerto E/S. ....................... 81
4.4 Puerto Paralelo Esclavo. ......................................................................... 83
4.5 Temporizadores ...................................................................................... 86
4.5.1 TMR0.............................................................................. 86
4.5.2 TMR1.............................................................................. 90
4.5.3 TMR2.............................................................................. 92
4.6 Módulos CCP.......................................................................................... 93
4.6.1 Modo de captura. ............................................................ 94
4.6.2 Modo de comparación. ................................................... 96
4.6.3 Modo PWM. ................................................................... 97
4.7 Módulo de Tensión de Referencia......................................................... 100
4.8 Módulo Comparador Analógico. ........................................................... 102
4.9 Convertidor A/D. ................................................................................... 106
4.10 Módulos de comunicación serie. ......................................................... 112
4.10.1 Puerto Serie Síncrono (SSP)........................................... 112
4.10.1.1 Modo SPI. .................................................................... 115
4.10.1.2 Modo I2C. .................................................................... 117
Santiago Salamanca Miño II Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
5. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
4.10.2 USART. .......................................................................... 125
4.10.2.1 Modo asíncrono. ................................... 128
4.10.2.2 Modo síncrono ...................................... 133
5 Programación con PIC. ............................................................................................ 137
5.1 Introducción. .......................................................................................... 137
5.2 Directivas del ensamblador MPASM. ................................................... 137
5.3 Creación de programas. ......................................................................... 156
5.3.1 Un solo código fuente (ensamblador)............................ 156
5.3.2 Varios códigos fuente (linkador). .................................. 157
5.3.3 Utilización de librerías................................................... 158
5.4 Estructuras básicas de programación..................................................... 160
5.4.1 Estructuras iterativas...................................................... 160
5.4.1.1 While............................................................ 160
5.4.1.2 Do while....................................................... 161
5.4.1.3 For................................................................ 161
5.4.2 Estructuras condicionales. ............................................. 162
5.4.2.1 If................................................................... 162
5.4.2.2 If ... else........................................................ 163
5.4.3 Códigos de condición..................................................... 164
5.4.3.1 Igual. ............................................................ 164
5.4.3.2 Distinto......................................................... 164
5.4.3.3 Mayor........................................................... 164
5.4.3.4 Mayor o igual............................................... 165
5.4.3.5 Menor........................................................... 165
5.4.3.6 Menor o igual............................................... 165
5.4.3.7 Condiciones más complejas......................... 165
5.5 Ejemplo de librerías: librería matemática.............................................. 166
5.5.1 Rutinas de coma flotante................................................ 166
5.5.1.1 Manejo de excepciones................................ 168
5.5.1.2 Redondeo. .................................................... 168
5.5.1.3 Conversión de entero a flotante. .................. 168
Santiago Salamanca Miño III Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
6. Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL.
5.5.1.4 Normalización.............................................. 168
5.5.1.5 Conversión de flotante a entero. .................. 169
5.5.1.6 Suma/Resta. ................................................. 169
5.5.1.7 Multiplicación.............................................. 169
5.5.1.8 División........................................................ 170
5.5.2 Rutinas en coma fija. ..................................................... 171
5.5.2.1 Multiplicación.............................................. 171
5.5.2.2 División........................................................ 172
5.5.3 Funciones matemáticas en coma flotante. ..................... 173
5.5.3.1 Función raíz cuadrada.................................. 174
5.5.3.2 Funciones exponenciales. ........................... 175
5.5.3.3 Funciones logarítmicas. ............................... 176
5.5.3.4 Funcione trigonométricas. ........................... 178
5.5.3.5 Función potencia.......................................... 179
5.5.3.6 Función parte entera por defecto. ................ 182
5.5.3.7 Comparación lógica en coma flotante. ........ 182
5.5.3.8 Generador aleatorio de números enteros. .... 183
5.5.4 Conversión de coma flotante a ASCII. .......................... 183
5.5.4.1 Conversión de coma flotante
a ASCII en base 10. ..................................... 184
5.5.4.2 Personalización de la rutina. ........................ 184
5.5.4.3 Resumen. ..................................................... 185
APÉNDICE A: Protocolo I2C........................................................................................ 187
A.1 Introducción ......................................................................................... 187
A.2 Inicialización y fin de transferencia de datos....................................... 187
A.3 Direccionamiento de dispositivos en I2C............................................. 188
A.4 Reconocimiento de transferencia......................................................... 189
Santiago Salamanca Miño IV Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
7. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Capítulo 1. Introducción a los microcontroladores.
1.1 ¿Qué es un microcontrolador?
Hace unos años, los sistemas de control se implementaban usando exclusivamente lógica de
componentes, lo que hacía que fuesen dispositivos de gran tamaño y muy pesados. Para
facilitar una velocidad más alta y mejorar la eficiencia de estos dispositivos de control, se
trató de reducir su tamaño, apareciendo así los microprocesadores. Siguiendo con el proceso
de miniaturización, el siguiente paso consistió en la fabricación de un controlador que
integrase todos sus componentes en un sólo chip. A esto es a lo que se le conoce con el
nombre de microcontrolador, un computador dentro de un sólo chip.
Las principales características que diferencian a un microcontrolador de un microprocesador
son:
1. Son sistemas cerrados, ya que contiene todos los elementos de un computador en
un solo chip, frente a los microprocesadores que son sistemas abiertos, ya que
sacan las líneas de los buses de datos, direcciones y control al exterior, para la
conexión de memorias, interfaces de E/S, etc.
2. Son de propósito específico, es decir, son programados para realizar una única
tarea, mientras que los microprocesadores son de propósito general.
La historia de los microcontroladores surge desde dos vías de desarrollo paralelas; una desde
Intel y otra desde Texas Instruments. Los primeros microcontroladores son el 4004 y 4040 de
Intel que dieron lugar al 8048, a su vez predecesor del 8051. Aún así el primer
microcontrolador fue el TMS1000 de Texas Instruments. Éste integraba un reloj, procesador,
ROM, RAM, y soportes de E/S en un solo chip.
Santiago Salamanca Miño 1 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
8. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Un microcontrolador, típicamente consta de:
-CPU o procesador.- Es el cerebro del sistema que procesa todos los datos que viajan a
lo largo del bus.
-Memorias.- Está formada por una no volátil (ROM, EEPROM, FLASH) donde se
almacenan los programas y una volátil (RAM) donde se almacenan los datos.
-Reloj principal.- Normalmente todos los microcontroladores tienen incorporados
circuitos osciladores para el funcionamiento de éstos.
-Puertos E/S (Entrada/Salida).- Soportan las líneas que comunican al microcontrolador
con los periféricos externos.
-Perro guardián o Watchdog.- Contador que resetea al microcontrolador cada vez que
rebosa. Sirve para evitar fallos de funcionamiento, por lo que hay que
inicializarlo periódicamente antes de que rebose.
-Protección ante fallo de alimentación o Browout.- Circuito que resetea al
microcontrolador cuando la tensión de alimentación baja de un cierto límite.
-Temporizadores.- Para controlar periodos de tiempo.
-Convertidores A/D y D/A. (Analógico/Digital y Digital/Analógico)
-Comparadores analógicos
-Moduladores de anchura de impulsos.
-Puertos de comunicación.- Tanto serie como paralelo.
-Control de interrupciones
Debido a que los microcontroladores sólo incluyen las características específicas para una
tarea, su coste es relativamente bajo. Un microcontrolador típico realiza funciones de
manipulación de instrucciones, posee E/S de accesos fáciles y directos, y un proceso de
interrupciones rápido y eficiente. Además también reducen de manera notable los costes de
diseño. Hay gran variedad de microcontroladores. Dependiendo de la potencia y
características que se necesiten, se pueden elegir microcontroladores de 4, 8, 16 ó 32 bits.
Además existen versiones especializadas que incluyen módulos especiales para
comunicaciones, teclados, procesamiento de señales, procesamiento de video, y otras tareas.
Santiago Salamanca Miño 2 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
9. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
1.2 Aplicaciones
El mercado de los microcontroladores está creciendo cada año y parece no tener barreras. Los
microcontroladores a menudo se encuentran en aplicaciones domésticas ( microondas,
refrigeradores, televisión, equipos de música), ordenadores con sus componentes (impresoras,
módems, lectores de discos), coches (ingeniería de control, diagnostico, control de
climatización), control medioambiental (invernaderos, fabricas, casas), instrumentación,
aeronáutica, y miles de usos más. En muchos podemos encontrar más de un microcontrolador.
Los microcontroladores son muy usados en robótica, donde la comunicación entre
controladores es una gran ventaja. Esto hace posible muchas tareas específicas al distribuir un
gran número de microcontroladores por todo el sistema. La comunicación entre cada
microcontrolador y uno central permitiría procesar la información por un ordenador central, o
transmitirlo a otros microcontroladores del sistema.
Otro ejemplo de aplicación de los microcontroladores, es la de utilizarlos para monitorizar y
gravar parámetros medioambientales (temperatura, humedad, precipitaciones, etc.). Pequeño
tamaño, bajo consumo de potencia, y flexibilidad hacen de este dispositivo ideal para este tipo
de aplicaciones.
1.3 Los microcontroladores PIC (Microchip)
Los microcontroladores PIC fueron los primeros microcontroladores RISC, es decir,
microcontroladores con un juego de instrucciones reducido. El hecho de ser procesadores de
tipo RISC generalmente implica simplicidad en los diseños, permitiendo más características a
bajo coste.
Los principales beneficios de esta simplicidad en el diseño son que los microcontroladores se
implementan en chip muy pequeños, con pocos pines, y tienen un consumo de potencia muy
bajo.
Santiago Salamanca Miño 3 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
10. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Los microcontroladores PIC ganaron popularidad rápidamente. Aparecían con frecuencia en
revistas de ocio, y su uso era cada vez mayor en gran número de diseños. Debido a su bajo
costo, pequeño tamaño, y bajo consumo, estos microcontroladores pueden ahora ser usados en
áreas en las que previamente no habrían sido apropiados (tal como circuitos lógicos).
Las principales características de los PIC son:
-Arquitectura Harvard.- Consiste en la existencia de dos memorias independientes,
una de datos y otra de instrucciones, con sus respectivos buses. Esto permite el
acceso simultaneo al programa y los datos, y solapar algunas operaciones para
mejorar el proceso.
-Segmentación de instrucciones.- Consiste en dividir la ejecución de las
instrucciones en varias fases, en el caso concreto de los PIC dos fases, de
manera que se realizan simultáneamente distintas fases de distintas
instrucciones. Así cada instrucción se ejecuta en un ciclo de instrucción (4
ciclos de reloj), excepto las de salto que ocupan tantos ciclos de instrucción
como necesite para calcular la dirección de salto.
-Formato de instrucciones de longitud constante.- Permite optimizar la memoria de
instrucciones y el diseño de ensambladores y compiladores.
-RISC (computador de reducido juego de instrucciones)
-Instrucciones ortogonales.- Todas las instrucciones pueden manejar cualquier
elemento de la arquitectura como fuente o destino.
-Arquitectura basada en un banco de registros.- Todos los objetos del sistema se
encuentran implementados físicamente como registros.
-Gran variedad de microcontroladores y muchas herramientas de soporte.
Santiago Salamanca Miño 4 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
11. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
1.4 Las gamas de los PIC
La forma de designación de los PIC en general obedece a la siguiente estructura:
PIC nn LLL xxx
Siendo :
nn – un número propio de la gama del PIC.
LLL – código de letras donde la primera indica la tensión de alimentación y las otras
dos el tipo de memoria que utiliza. En la tabla 1.1 se puede ver las distintas
opciones que se pueden dar.
TABLA 1.1 Nomenclatura de los PIC.
LETRAS ALIMENTACIÓN MEMORIA
C Standard (4.5-6.0 V) EPROM
CR Standard (4.5-6.0 V) ROM
F Standard (4.5-6.0 V) FLASH
LC Extendida (2.5-6.0 V) EPROM
LCR Extendida (2.5-6.0 V) ROM
LF Extendida (2.0-6.0 V) FLASH
xxx – número que indica el modelo.
Los PIC se clasifican en distintas gamas atendiendo a los recursos disponibles en cada uno de
ellos. Las gamas son:
a) Gama Enana (PIC12Cxxx): La principal característica es que son muy pequeños,
con encapsulados de 8 pines, y un juego de 33 instrucciones de 12 bits.
b) Gama Baja (PIC16C5xx): Los encapsulados son de 18, 20 ó 28 pines. Al igual
que en los anteriores el número de instrucciones es de 33 con un ancho de 12 bits.
La memoria de programa es de 512 palabras, 1K ó 2K, y la de datos está
comprendida entre 25 y 73 bytes. No permite interrupciones.
Santiago Salamanca Miño 5 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
12. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
c) Gama Media (PIC16Cxxx): Es la gama más variada y completa de los PIC, con
encapsulados desde 18 a 68 pines. Tiene un conjunto de 35 instrucciones de 14
bits de ancho. Permite además características importantes que no soportaban los
anteriores como son:
- Interrupciones
- Pila de 8 niveles que permite anidamiento de subrutinas.
Esta familia a su vez se puede dividir en subfamilias en función de los recursos de
que se dispongan.
d) Gama Alta (PIC17Cxxx): Tienen unas características muy diferentes a las
anteriores, ya que son microcontroladores de arquitectura abierta, es decir, que
sacan sus buses al exterior.
El número de instrucciones es de 58 con una anchura de 16 bits. Tienen
instrucciones vectorizadas.
e) Gama Mejorada (PIC18Cxxx): Es la última gama que ha salido. Tiene memoria
de programa de hasta 1M palabras. La mayoría de las instrucciones son de 16 bits,
aunque las hay también de 32 bits. El número total de instrucciones es de 76.
Esta gama está diseñada para aplicaciones de control. Todos ellos tienen
convertidores A/D y, por ejemplo, están en fase de desarrollo algunos modelos que
tienen interface para el bus CAN.
1.5 Los PIC de la gama media.
A lo largo de este proyecto sólo se hablará de los PIC de la Gama Media, siendo esta la más
variada y completa. En la tabla 1.2 se muestran las características que definen a cada modelo
de los PIC de la Gama Media. Aparecen sólo los más significantes, ya que la variedad es muy
amplia.
Santiago Salamanca Miño 6 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
13. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
TABLA 1.2 Principales características de los PIC de la Gama Media.
Reloj Memoria Periféricos Características
Memoria de programa
Cápsulas
Detector de fallo en VDD “Brown-out”
Máxima frecuencia de trabajo
Tensión interna de referencia
Módulos de temporización
EEPROM de datos (bytes)
Convertidor A/D de 8 bits
Rango de voltaje (voltios)
Memoria de datos (bytes)
Fuentes de interrupción
Puerto Paralelo
Comparadores
Patillas de E/S
Módulos CCP
Puertos serie
Pines PLCC
Pines QFP
Pines DIP
EEROM
EPROM
3,0-
PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 13 --- 18 18 --
6,0
TMR0,TMR1 2,5-
PIC16C62 20 2K --- 128 --- 2 SPI/I2C/SCI -- -- -- -- 10 22 --- 28 28 --
,TMR2 6,0
TMR0,TMR1 3,0-
PIC16C63 20 4K --- 192 --- 2 SPI/I2C/SCI --- -- -- -- 10 22 --- 28 28 --
,TMR2 6,0
TMR0,TMR1 3,0-
PIC16C64 20 2K --- 128 --- 1 SPI/I2C Si -- -- -- 8 33 --- 40 44 44
,TMR2 6,0
TMR0,TMR1 3,0-
PIC16C65 20 4K --- 192 --- 2 SPI/I2C/SCI Si -- -- -- 11 33 --- 40 44 44
,TMR2 6,0
3,0-
PIC16C620 20 512 --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13 Si 18 18 20
6,0
3,0-
PIC16C621 20 1K --- 80 --- TMR0 -- ---- -- -- 2 Si 4 13 Si 18 18 20
6,0
3,0-
PIC16C622 20 2K --- 128 --- TMR0 -- ---- -- -- 2 Si 4 13 Si 18 18 20
6,0
3,0-
PIC16C71 20 1K --- 36 --- TMR0 -- ---- -- 4ch -- -- 4 13 --- 18 18 --
6,0
TMR0,TMR1 3,0-
PIC16C73 20 4K --- 192 --- 2 SPI/I2C/SCI -- 5ch -- -- 11 22 --- 28 28 --
,TMR2 6,0
TMR0,TMR1 3,0-
PIC16C74 20 4K --- 192 --- 2 SPI/I2C/SCI Si 8ch -- -- 12 33 --- 40 44 44
,TMR2 6,0
TMR0,TMR1 2,5-
PIC16C76 20 8K --- 368 --- 2 SPI/I2C/SCI -- 5ch -- -- 11 22 Si 28 28 --
,TMR2 6,0
3,0-
PIC16C84 20 -- 1K 36 64 TMR0 -- ---- -- -- -- -- 4 13 --- 18 18 --
6,0
A continuación en la figura 1.1 se muestran algunos de los encapsulados utilizados en los PIC
de la Gama Media. Como ya se ha dicho anteriormente, éstos van desde los 18 a 68 pines.
Santiago Salamanca Miño 7 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
14. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
Figura 1.1 Principales diagramas de patillas.
La descripción de las funciones de las distintas patillas del microcontrolador son:
RA0/AN0-RA2/AN2: Líneas de E/S digitales del Puerto A, o entradas analógicas.
RA3/AN3/VREF: E/S digital, analógica o entrada externa de VREF.
RA4/T0CKI: E/S digital o entrada de reloj externo para TMR0.
RA5/AN4/ SS : E/S digital, analógica o selección del puerto síncrono.
RB0/INT-RB7: E/S digitales del Puerto B. RB0/INT puede actuar como entrada de
interrupción externa. RB4-Rb7 pueden provocar una interrupción cuando cambian de
estado.
RC0/T1OSO/T1CKI: E/S digital del Puerto C. Conexión del oscilador externo para
el temporizador TMR1 o entrada de reloj para el TMR1.
Santiago Salamanca Miño 8 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
15. Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores
RC1/T1OSI/CCP2: E/S digital. Conexión del oscilador externo para el TMR1 o
salida del módulo 2 de captura/comparación.
RC2/CCP1: E/S digital. Salida del módulo 1 de captura/comparación.
RC3/SCK/SCL: E/S digital. E/S de reloj para el Puerto Serie Síncrono (SSP) en los
módulos SPI o I2C.
RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie
en el modo I2C.
RC5/SDO: E/S digital. Salida de datos serie en el modo SPI.
RC6/TX/CK: E/S digital. Transmisión serie asíncrona. Entrada de reloj para
comunicación serie síncrona.
RC7/RX/DT: E/S digital. Recepción serie asíncrona. Línea de datos en la
comunicación serie síncrona.
RD0/PSP0-RD7/PSP7: E/S digitales del Puerto D. Este puerto puede trabajar como
puerto paralelo esclavo para interconexión con un bus de datos de 8 bits de otro
microprocesador.
RE0/ RD /AN5: E/S digital del Puerto E. Señal de lectura del puerto paralelo esclavo.
Entrada analógica.
RE1/ WR /AN6: E/S digital. Señal de escritura del puerto paralelo esclavo. Entrada
analógica.
RE2/ CS /AN7: E/S digital. Señal de activación del puerto paralelo esclavo. Entrada
analógica.
Santiago Salamanca Miño 9 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
16.
17. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Capítulo 2. La Arquitectura de los PIC de la Gama Media.
2.1 Introducción
Desde el punto de vista de la arquitectura, la característica más importante de los PIC es que
utilizan la Harvard, frente a la Von Neumann que es la habitual.
La arquitectura Harvard tiene la memoria de programa y la memoria de datos separadas y se
accede a ellas mediante buses distintos. Esto mejora el ancho de banda sobre la tradicional
arquitectura secuencial, en la cual los programas y datos son buscados en la misma memoria,
utilizando el mismo bus. En la arquitectura Harvard mientras se accede a la memoria de
programa, sobre la memoria de datos se puede estar leyendo o escribiendo, lo que permite
ejecutar una instrucción a la vez que se busca la siguiente.
En la figura 2.1 se muestra el esquema de la arquitectura general de los PIC de la Gama
Media.
Además de las características antes mencionadas, otras características que poseen los PIC de
la Gama Media son:
a) Memoria no volátil de programa de hasta 8K x 14 de tamaño, direccionada por el
contador de programa (PC) de 13 bits.
b) Memoria RAM de datos de hasta 368 x 8 de tamaño, direccionada por el código de
operación o por el registro FSR y parte del registro STATUS.
c) Unidad aritmético-lógica de 8 bits con un registro acumulador de trabajo asociado
también de 8 bits. Realiza operaciones aritméticas y lógicas utilizando siempre
como operando el registro acumulador y otro dato perteneciente a cualquier
registro. Realiza operaciones de suma, resta y desplazamiento. Opera en
complemento a 2 (C’2). Dependiendo del resultado, afecta a algunos bits del
registro de estado.
Santiago Salamanca Miño 11 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
18. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.1 Diagrama de bloques general de los PIC de la gama media.
Nota 1: Los bits de mayor orden en el direccionamiento directo de la RAM se obtienen del Registro de Estado.
2: No todos los dispositivos tienen estas características, habrá que consultar las hojas de características.
3: Muchos de los pines de las puertas E/S de propósito general están multiplexadas con una o más
funciones de los módulos periféricos. La combinación de las funciones multiplexadas dependen del
dispositivo.
Santiago Salamanca Miño 12 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
19. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
d) Oscilador encargado de las generaciones de tiempo del sistema.
e) Circuitos controladores del RESET.
f) Puertos E/S. Existen hasta 7 puertos de E/S, aunque no existe ningún dispositivo
que los implemente todos. Además se multiplexan con distintos elementos del
sistema.
g) Módulos periféricos. Son la característica que diferencia a los distintos
microcontroladores. Éstos facilitan la comunicación con el mundo exterior, tal
como las E/S de propósito general, y tareas internas tal como puede ser la
generación de las distintas bases de tiempo. Los periféricos sobre los que se está
hablando son; E/S de propósito general, hasta tres temporizadores, módulo de
captura, comparación, y PWM (CCP), puerto serie síncrono (SSP), USART (SCI),
módulo para generación de voltajes de referencia, módulos comparadores
analógicos, conversores analógico digital (A/D), módulo para control de Display
de cristal líquido (LCD) y puerto paralelo esclavo (PSP).
h) Registros generales del sistema.
2.2 Organización de la memoria.
La memoria de los PIC está dividida en dos bloques; la memoria de programa y la memoria
de datos. Cada uno de los bloques tiene su propio bus, pudiendo tener acceso a ambos bloques
de memoria en el mismo ciclo de reloj.
2.2.1 Organización de la memoria de programa.
En los PIC de la gama media el contador de programa es de 13 bits, con lo que se puede
direccionar una capacidad de memoria de 8K x 14 bits. El ancho de la memoria de programa
va a ser la longitud de una instrucción que es de 14 bits, por lo se podrán almacenar hasta 8K
instrucciones. De esta forma es fácil determinar si el dispositivo tiene suficiente memoria de
programa para una aplicación deseada.
Santiago Salamanca Miño 13 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
20. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Esta memoria de programa a su vez está dividida en cuatro páginas de 2K palabras cada una
(0h – 7FFh, 800h – FFFh, 1000h – 17FFh, y 1800h – 1FFFh). En la figura 2.2 se muestra el
mapa de memoria con la pila de 8 niveles. No todos los dispositivos tienen implementados
estos cuatro bancos.
Figura 2.2 Organización de la memoria de programa y la pila.
Para realizar los saltos entre las páginas de la memoria de programa se utilizan los dos bits
más altos del contador de programa (PC <11:12>), los cuales son implementados físicamente
en la memoria de datos en el registro PCLATCH <4:3>. Si el programa se ejecuta
secuencialmente no es necesario modificarlo.
Dentro de la memoria de programa existen dos direcciones reservadas:
1. Vector de Reset .- En un dispositivo, un reset pone el contador de programa (PC)
a cero. A esta dirección se la denomina “Dirección del Vector de Reset”, donde
Santiago Salamanca Miño 14 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
21. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
está la dirección de inicio para la ejecución del programa. Cualquier reset borrará
también el contenido del registro PCLATH, de modo que cuando se produzca un
reset la dirección inicial a de estar localizada en la página 0 de la memoria de
programa.
2. Vector de Interrupción .- Cuando una interrupción es reconocida el PC es
forzado a la dirección 0004h. A esto es a lo que se le llama “Dirección del Vector
de Interrupción”. Cuando el PC es forzado con la dirección del vector de
interrupción, el PCLATH no es modificado. Por eso mismo en la dirección del
vector de interrupción, el registro PCLATH debería ser escrito con el valor que
especificará la localización deseada en la memoria de programa. Antes de realizar
esta operación, el PCLATH debería ser salvado para volverlo a restaurar al
terminar el tratamiento de la rutina de interrupción.
El contador de programa (PC) es un registro que especifica la dirección de la instrucción que
ha de ser ejecutada. El PC tiene un ancho de 13 bits, correspondiendo el byte más bajo con el
registro de lectura-escritura PCL, implementado en la memoria de datos, y el byte más alto
con el registro PCH. Este último contiene sólo los bits <12:8> del PC y no se puede leer ni
escribir directamente, sino que son cargados a través del PCLATH.
Existen varias instrucciones que modifican el flujo normal del sistema, y por tanto afectan al
PC. Estas instrucciones son:
1. Instrucciones de salto relativo: Son aquellas instrucciones que usan como
operando destino al PC. En estas instrucciones se cargan los 8 bits menos
significativos desde la UAL. El resto de los bits que coinciden con los del
PCLATH, habría que modificarlos manualmente.
2. Instrucción GOTO de salto incondicional: Carga desde el código de operación
los 11 bits menos significativos. Los dos que quedan se cargan desde el PCLATH
<4:3>. Si se hace un GOTO a una dirección que está en una página distinta,
primero hay que modificar estos bits del PCLATH.
Santiago Salamanca Miño 15 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
22. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
3. Instrucción CALL de salto a subrutina: Es igual que la anterior con la diferencia
de que antes de modificar el PC, el valor que tuviese se lleva a la pila.
4. Instrucciones RETURN, RETLW y RETFIE de retornos de subrutinas y rutinas
de tratamiento de interrupción: Cargan directamente en el PC el valor que se halla
guardado anteriormente en la pila. No es necesario modificar el PCLATH.
Los PIC de la Gama Media poseen una pila de 8 niveles con un ancho de 13 bits, la cual nos
permite guardar las direcciones de retorno a un programa, cuando en éste se produce un salto
a una subrutina. Esto nos da capacidad para anidar hasta 8 subrutinas producidas por
programa o mediante interrupciones. Si en la pila ya se han almacenado 8 valores, el nuevo
valor se cargará sobre el primer nivel de la pila, de modo que puede dar problemas en el
funcionamiento de un programa.
2.2.2 Organización de la memoria de datos.
La memoria de datos (figura 2.3) está dividida en dos partes:
a) Memoria de registros especiales (FSR Memory): Está formada por aquellos
registros que son usados por la CPU y los periféricos para controlar una operación.
b) Memoria de propósito general: Está formada por la memoria que puede usar el
programador.
En ambos casos, está dividida hasta en 4 bancos de memoria de hasta 128 bytes, aunque
muchos de los modelos no traen implementados estos dos últimos bancos. En algunos
modelos de PIC la memoria de propósito general, está sólo implementado físicamente en el
banco0, estando el resto de los bancos mapeados en éste.
Santiago Salamanca Miño 16 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
23. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.3 Organización de la memoria de datos.
Nota 1: Los registros en negrita están presentes en todos los dispositivos.
2: Puede que no todas las posiciones estén implementadas. Las localizaciones no implementadas se
leen como ‘0’.
Santiago Salamanca Miño 17 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
24. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
El modo de acceso a cada uno de los bancos dependerá del tipo de direccionamiento que se
use.
Estos tipos de direccionamiento son:
1. Direccionamiento directo: La dirección final se obtiene con:
a. Los bits RP1-RP0 del registro de estado (STATUS), los cuales seleccionan
el banco de memoria.
b. Los 7 bits del código de operación, los cuales indican la posición del dato
dentro del banco.
2. Direccionamiento indirecto: Con este tipo de direccionamiento lo que se da es la
dirección donde se encuentra la dirección del dato. Para ello se usa el registro
INDF. Al usar este registro (que no está implementado físicamente), lo que se hace
es acceder al registro de datos FSR de 8 bits. Los 7 bits con menos peso del FSR
seleccionan la posición dentro del banco, y el bit de mayor peso junto con el bit
IRP del registro de estado, seleccionan el banco.
Un programa que borra una zona de memoria puede ser un ejemplo de aplicación
de direccionamiento indirecto. El programa sería como el siguiente:
BCF STATUS,IRP ; Selección del banco 0 de memoria.
MOVLW 0X20 ; Mueve el valor 20h al registro W
MOVWF FSR ; Carga valor de W en FSR
SIGUIENTE CLRF INDF ; Borra la posición de memoria que marca FSR
INCF FSR,1 ; Incrementa valor del FSR
BTFSS FSR,4 ; Test del bit 4 del FSR, si es 1, no ejecuta la
; siguiente instrucción y salta.
GOTO SIGUIENTE ; Vuelve a SIGUIENTE.
…
…
Este programa ejemplo borraría la memoria de datos desde la posición h’20’ hasta
h’2F’.
Santiago Salamanca Miño 18 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
25. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
2.2.3 Registros y recursos comunes.
2.2.3.1 Registro de Estado.
Es un registro formado por 8 bits, que contiene el estado de la UAL, del RESET y selecciona
el banco de la memoria de datos sobre la que queremos trabajar.. Por esta última causa, el
registro de estado se encuentra en todos los bancos, y en la misma posición.
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP RP1 RP0 TO PD Z DC C
bit7 bit0
A continuación se muestra la función de cada bit del registro de estado.
bit 7 IRP: Selección de bancos para el direccionamiento indirecto.
1 = Banco 2,3 (100h – 1FFh)
0 = Banco 0,1 (00h – FFh)
bit 6:5 RP1:RP0: Selección del banco de la memoria de datos para el
direccionamiento directo.
11 = Banco 3 (180h – 1FFh)
10 = Banco 2 (100h – 17Fh)
01 = Banco 1 (80h – FFh)
00 = Banco 0 (00h – 7Fh)
bit 4 TO : Timer Out.
1 = Tras conectar Vdd o ejecutar “CLRWDT” o “SLEEP”.
0 = Al rebasar el WDT
bit 3 PD : Power Down
1 = Tras conectar Vdd o ejecutar “CLRWDT”.
0 = Al ejecutar la instrucción “SLEEP".
bit 2 Z: Bit de cero.
1 = El resultado de una operación es 0.
0 = El resultado es distinto de 0.
bit 1 DC: Acarreo en el 4º bit de menos peso.
1 = Acarreo en la suma y no en la resta.
0 = Acarreo en la suma y no en la resta.
bit 0 C: Acarreo en el 8º bit.
1 = Acarreo en la suma y no en la resta.
0 = Acarreo en la suma y no en la resta.
Estos dos últimos bits, en la suma representan lo que se conoce comúnmente con acarreo, sin
embargo en la resta realizan la función de bit de signo (bit de Borrow ), indicando que el
resultado es negativo si Borrow es 0, y mayor o igual a 0 si es 1.
Santiago Salamanca Miño 19 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
26. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
2.2.3.2 Registro de Opciones.
El registro de opciones es un registro de lectura-escritura, que contiene los bits de
configuración del divisor de frecuencia del TMR0/WDT, de las interrupciones externas, del
TMR0, y la configuración de las Puerta B con cargas Pull-Up.
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit7 bit0
bit 7 RBPU : Conexión de cargas Pull-Up para la Puerta B.
1 = Todas las cargas Pull-Up desconectadas.
0 = Todas las cargas Pull-Up conectadas.
bit 6 INTEDG: Tipo de flanco para la interrupción.
1 = RB0/INT sensible a flanco ascendente.
0 = RB0/INT sensible a flanco descendente.
bit 5 T0CS: Fuente de reloj para el TMR0.
1 = Pulsos introducidos por T0CKI (contador).
0 = Pulsos de reloj interno Fosc/4 (temporizador).
bit 4 T0SE: Tipo de flanco activo del T0CKI.
1 = Incremento del TMR0 cada flanco descendente.
0 = Incremento del TMR0 cada flanco ascendente.
bit 3 PSA: Asignación del divisor de frecuencia.
1 = Se le asigna al WDT.
0 = Se le asigna al TMR0.
bit 2-0 PS2:PS0: Valor del divisor de frecuencia.
Valor División del TMR0 División del WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
100 1:32 1:16
101 1:64 1:32
110 1:128 1:64
111 1:256 1:128
Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el
divisor al WDT.
Santiago Salamanca Miño 20 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
27. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
2.2.3.3 Palabra de configuración.
La Palabra de Configuración está formada por 14 bits. Se utiliza para la selección de distintos
aspectos de la configuración del dispositivo según las necesidades de la aplicación. Su
localización en la memoria de programa es la 2007h. Esta posición no es accesible durante el
modo de funcionamiento normal, por lo que estos registros deberán ser configurados en la
fase de programación.
CP1 CP0 CP1 CP0 CP1 CP0 - BODEN CP1 CP0 PWRTE WDTE FOSC1 FOSC0
bit13 bit0
bit 13-8 CP<1:0>: Bits de protección de código.
5-4:
512 1k 2k
11 Off Off Off
10 Off Off ½ alta On
01 Off ½ alta On ¾ alta On
00 On On On
bit 7 No implementado: Su lectura es 1.
bit 6 BODEN: Detección del “Brown-Out” (Fallo de alimentación)
1 = detección activada.
0 = Detección desactivada.
bit 3 PWRTE : Activación del temporizador “Power-Up”
1 = Desactivado.
0 = Activado.
bit 2 WDTE: Activación del “Watchdog” (perro guardián)
1 = Activado
0 = Desactivado.
bit 1-0 FOSC1-FOSC0: Selección del tipo de oscilador.
11 = Oscilador RC.
10 = Oscilador HS
01 = Oscilador XT
00 = Oscilador LP
Santiago Salamanca Miño 21 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
28. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
2.3 Oscilador.
El circuito de oscilación se utiliza para generar las señales de reloj en el sistema necesarias
para la ejecución de instrucciones y para el funcionamiento de los periféricos.
Existen hasta ocho tipos de osciladores. Los distintos tipos permiten mayor flexibilidad del
dispositivo según las necesidades, así los hay de muy bajo coste, como las redes RC, y otros
de bajo consumo como son los cristales de cuarzo del modo LP.
La configuración de un oscilador u otro se realiza mediante los bits FOSC2, FOSC1 Y
FOSC0 de la palabra de configuración. No todos los modelos poseen la posibilidad de
configurar cualquier tipo de oscilador, en estos casos sólo tienen los bit FOSC1 Y FOSC0 en
la palabra de configuración. Los valores de estos bits para la configuración de los distintos
osciladores son los que se pueden ver en las tablas 2.1 y 2.2.
TABLA 2.1 Selección del modo de oscilación con FOSC1:FOSC0.
Bits de
Modo Ganancia de los
configuración Comentarios
OSC inversores internos
FOSC1:FOSC0
Solución más barata (sólo requiere una resistencia y
un condensador). Máxima variación del tiempo
11 RC −
base.
Modo del dispositivo por defecto
Cristal de cuarzo para aplicaciones de alta
10 HS Ganancia alta frecuencia. Es el modo que más potencia consume
de los tres cristales.
Cristal de cuarzo para un rango de frecuencias
01 XT Ganancia media
estándar.
Cristal de cuarzo para aplicaciones de baja
00 LP Ganancia baja frecuencia. Es el modo que menos potencia
consume de los tres cristales.
Santiago Salamanca Miño 22 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
29. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
TABLA 2.2 Selección del modo de oscilación con FOSC2:FOSC0.
Ganancia de
Bits de
Modo los
configuración Comentarios
OSC inversores
FOSC2:FOSC0
internos
Red RC externa sacando la señal de oscilación por la
EXTRC con
111 − patilla CLKOUT. Solución barata. Máxima variación
CLKOUT
en el tiempo base. Modo del dispositivo por defecto
Red RC externa. Barata solución. Máxima variación
110 EXTRC − en el tiempo base. La señal de oscilación no sale al
exterior.
Red RC interna sacando la señal de oscilación por la
INTRC con
101 − patilla CLKOUT. Es la solución más barata.
CLKOUT
Oscilador de 4MHz.
Red RC interna. La señal de oscilación no sale al
100 INTRC −
exterior. Solución más barata. Oscilador de 4MHz.
011 − − Reservado
Cristal de cuarzo para aplicaciones de alta frecuencia.
10 HS Ganancia alta Es el modo que más potencia consume de los tres
cristales.
Ganancia Cristal de cuarzo para un rango de frecuencias
01 XT
media estándar.
Cristal de cuarzo para aplicaciones de baja frecuencia.
Ganancia
00 LP Es el modo que menos potencia consume de los tres
baja
cristales.
La diferencia entre los tres últimos viene dada por la ganancia de los inversores internos, que
son los que modifican la frecuencia. En general siempre se opta por la opción con menor
ganancia posible que cumpla las especificaciones. Esto implicará menores corrientes y con
ello menor consumo de potencia.
En la figura 2.4 se ve el modo de conexión para resonadores de cristal o de cuarzo. En este
caso se conectan a las patillas OSC1 y OSC2, usando esta última como realimentación.
Santiago Salamanca Miño 23 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
30. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.4 Operación de osciladores en los modos HS, XT o LP.
Nota 1: La resistencia en serie, RS, es necesaria para cristales de alta tecnología.
2: La resistencia de realimentación, RF, varía entre 2 y 10 MΩ.
3: Dependiendo del dispositivo, el buffer de la lógica interna puede estar tanto antes
como después del inversor.
Para una red RC el modo de conexión utilizará únicamente la patilla OSC1. La frecuencia de
oscilación dependerá de VDD, REXT y de CEXT (figura 2.5). El fabricante recomienda que REXT
tenga un valor de entre 3KΩ y 100KΩ y que CEXT sea mayor de 20pF. Además la frecuencia
del oscilador/4 se obtiene a través de la patilla OSC2, en caso de que esté configurada en los
modos EXTRC o INTRC con CLKOUT, se puede usar para sincronización de otras lógicas.
Figura 2.5 Operación en modo RC.
Nota 1: Esta patilla también puede ser configurada como una E/S de propósito general.
Santiago Salamanca Miño 24 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
31. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Como un dispositivo incrementa su voltaje de alimentación desde 0 hasta VDD, el oscilador
tardará un tiempo en funcionar correctamente. Este tiempo de comienzo o Start-Up depende
de muchos factores:
a) Para los osciladores RC depende del valor de la resistencia y condensador usado,
tiempo de subida de VDD, y temperatura del sistema.
b) Para los osciladores de cristales los factores que intervienen son la frecuencia del
cristal, los valores de la resistencia en serie, RS y de los condensadores C1 y C2, el
tiempo de subida de VDD, la temperatura del sistema, la selección del modo de
oscilador, la composición del circuito oscilador, y el ruido del sistema.
En la figura 2.6 se muestra un ejemplo de Start–Up. Se puede ver que la señal de oscilación
está centrada en VDD/2, siendo el valor pico a pico durante el arranque del oscilador bastante
bajo (menos del 50% de VDD).
Figura 2.6 Característica Start-Up de un oscilador.
Siempre que se quiera grabar un PIC es necesario consultar las hojas de características para la
configuración del oscilador.
Santiago Salamanca Miño 25 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
32. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
2.4 Reset
La función del reset es la de dejar al sistema en un estado conocido. Existen varias fuentes de
RESET:
a) Power On Reset (POR).
b) Activación de MCLR durante funcionamiento normal.
c) Activación de MCLR en el modo de reposo
d) Desbordamiento del WDT durante funcionamiento normal.
e) Reset de Brown-Out (BOR).
f) Reset por error de paridad (PER).
La figura 2.7 se muestra un bloque simplificado de la lógica que gobierna el reset del sistema,
para un caso general.
En esta figura se puede ver una zona denominada OST/PWRT, que consiste en:
a) Power-up Timer (PWRT): Es un temporizador que proporciona un retardo de
72ms a partir de un reset de tipo POR o BOR, de tal forma que el PIC se mantiene
reseteado durante este tiempo, así al finalizar la temporización la tensión de
alimentación tendrá un valor aceptable. Este temporizador se habilita mediante el
bit PWRT de la palabra de configuración. Para generar este retardo existe un
circuito interno RC dedicado.
b) Oscillator Start-Up Timer (OST): Este oscilador proporciona un retardo de
1024 veces el periodo de oscilación (desde OSC1) después del retardo PWRT. De
esta forma se asegura que el oscilador cristal o cerámico es estable cuando el PIC
empieza a funcionar. Este retardo sólo funciona cuando el PIC se ha configurado
para usar un oscilador XT, HS o LP y el reset es tipo POR, BOR o de wake-up
desde el modo de reposo (sleep).
Santiago Salamanca Miño 26 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
33. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.7 Lógica que gobierna el Reset de un sistema.
Nota 1: Este es un oscilador distinto al oscilador del pin CLKIN o al oscilador interno INTRC.
2: Las características que están encerrados en cuadros no están disponibles en todos los modelos,
ver hoja de características del dispositivo.
3: En algunos modelos, este pin puede estar configurado como entrada de propósito general.
4: En los primeros microcontroladores PIC tenían la configuración de modo que para PWRTE =1
estuviera habilitado, mientras que el resto de los modelos, la configuración estaba definida
para PWRTE =0.
A continuación (tabla 2.3) se muestran los distintos retardos para las posibles situaciones en
las que se puede ver el sistema.
TABLA 2.3 Retardos típicos según las situaciones.
CONFIGURACIÓN TIEMPO DE POWER-UP BROWN-OUT WAKE-UP
DEL OSCILADOR RESET DESDE SLEEP
Habilitado Deshabilitado
XT, HS, LP 72 ms + 1024TOSC 1024TOSC 72 ms + 1024TOSC 1024TOSC
RC 72 ms ⎯ (1)
72 ms ⎯(1)
Nota 1: Dispositivos con oscilador Interno/Externo RC tienen un retardo de 250µs.
Santiago Salamanca Miño 27 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
34. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
El Power-on Reset consiste en la activación del reset cuando se detecta la conexión de la
alimentación al dispositivo. Dos topologías para el circuito de POR se pueden ver en la figura
2.8, siendo la primera para el caso general y la segunda para el caso en que VDD crezca de
forma lenta.
Nota 1: La resistencia es opcional.
Figura 2.8 Topologías para el circuito de POR.
En el segundo caso el diodo ayuda a la descarga del condensador cuando VDD disminuye su
valor.
Las siguientes figuras (2.9 – 2.12) muestran el comportamiento temporal de las señales según
el caso.
Figura 2.9 Secuencia de Time-out en subida de alimentación. MCLR conectado a VDD.
Santiago Salamanca Miño 28 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
35. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.10 Secuencia de Time-out en subida de alimentación. MCLR no conectado a VDD.
(Caso1).
Figura 2.11 Secuencia de Time-out en subida de alimentación. MCLR no conectado a VDD.
(Caso2).
Figura 2.12 Secuencia de Time-out en subida de alimentación. MCLR conectado a VDD
(tiempo de subida lento).
Santiago Salamanca Miño 29 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
36. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
El Brown-out Reset consiste en producir un reset en el sistema cuando la tensión de
alimentación VDD cae por debajo de un determinado valor, específico para cada PIC. Los que
tengan implementados el BOR, tienen un parámetro (35), que es el tiempo mínimo que debe
estar VDD por debajo de la tensión de reset, para que éste se produzca. Esto asegura que el
elemento no continua la ejecución del programa fuera de los rangos válidos de operación.
Este tipo de reset se puede habilitar con el bit BODEN de la Palabra de Configuración. Una
vez que el nivel de la alimentación se restablezca, hay un retardo de 72ms en desactivarse el
reset interno.
Algunas de las situaciones de Brown-Out Reset se muestran en la figura 2.13.
Figura 2.13 Situaciones de Brown-out Reset.
Posibles circuitos usados para un BOR, cuando el circuito no tiene internamente el detector
implementado, o cuando la tensión que venga configurada no nos interesa, se muestran en las
figuras 2.14 y 2.15.
Santiago Salamanca Miño 30 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
37. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Figura 2.14 Circuito externo 1 de Brown-out.
Este circuito activará el reset cuando VDD esté por debajo de (Vz + 0.7V), donde Vz
es el voltaje Zener del diodo.
Nota 1: El circuito de Brown-out Reset interno debe de estar deshabilitado
cuando se use esta configuración.
2: Los valores de las resistencias dependen de las características del
transistor.
Figura 2.15 Circuito externo 2 de Brown-out.
Nota 1: Este circuito de BOR es más barato, pero menos exacto. El transistor Q1 se
corta cuando VDD baja de cierto nivel tal como:
R1
VDD • = 0.7V
R1 + R2
2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuando
se use esta configuración.
3: Los valores de las resistencias dependen de las características del
transistor.
Santiago Salamanca Miño 31 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura
38. Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media
Debido a que existen distintas fuentes de reset, es necesario en determinadas ocasiones, saber
que tipo de reset se ha producido. Esto se hace consultando los bits POR y BOR del registro
PCON, y PD del Registro de Estado (tabla 2.4). La tabla 2.5 muestra la forma en que afecta
el Reset a los distintos registros.
TABLA 2.4 Bits de estado y su significado.
POR BOR TO PD Tipo de Reset
0 x 1 1 Power-On Reset.
0 x 0 x Incorrecto, TO está a 1 en POR .
0 x x 0 Incorrecto, PD está a 1 en POR .
1 0 1 1 Brown-Out Reset.
1 1 0 1 WDT Reset.
1 1 0 0 WDT Wake-Up.
1 1 u u MCLR reset en funcionamiento normal.
1 1 1 0 MCLR reset durante SLEEP.
Legenda: u: valor anterior. x: desconocido.
TABLA 2.5 Condiciones de inicialización de los registros especiales.
MCLR durante: Wake-up desde SLEEP
Power-On Reset -funcionamiento normal mediante:
Registro
Brown-Out Reset -SLEEP -Interrupciones
WDT Reset -Temporizador del WDT
ADCAPL 0000 0000 0000 0000 uuuu uuuu
ADCAPH 0000 0000 0000 0000 uuuu uuuu
ADCON0 0000 00-0 0000 00-0 uuuu uu-u
ADCON ---- -000 ---- -000 ---- -uuu
ADRES xxxx xxxx uuuu uuuu uuuu uuuu
ADTMRL 0000 0000 0000 0000 uuuu uuuu
ADMRH 0000 0000 0000 0000 uuuu uuuu
CCP1CON --00 0000 --00 0000 --uu uuuu
CCP2CON 0000 0000 0000 0000 uuuu uuuu
CCPR1L xxxx xxxx uuuu uuuu uuuu uuuu
CCPR1H xxxx xxxx uuuu uuuu uuuu uuuu
CCPR2L xxxx xxxx uuuu uuuu uuuu uuuu
CCPR2H xxxx xxxx uuuu uuuu uuuu uuuu
CMCON 00-- 0000 00—0000 uu-- uuuu
EEADR xxxx xxxx uuuu uuuu uuuu uuuu
EECON1 ---0 x000 ---0 q000 ---0 uuuu
EECON2 - - -
EEDATA xxxx xxxx uuuu uuuu uuuu uuuu
FSR xxxx xxxx uuuu uuuu uuuu uuuu
GPIO --xx xxxx --uu uuuu --uu uuuu
I2CADD 0000 0000 0000 0000 uuuu uuuu
I2CBUF xxxx xxxx uuuu uuuu uuuu uuuu
I2CCON 0000 0000 0000 0000 uuuu uuuu
I2CSTAT --00 0000 --00 0000 --uu uuuu
INDF - - -
INTCON 0000 000x 0000 000u uuuu uuuu
LCDCON 00-0 0000 00-0 0000 uu-u uuuu
Santiago Salamanca Miño 32 Escuela de Ingenierías Industriales
David Arroyo Muñoz Universidad de Extremadura