PIC Gama Media - Arquitectura y Técnicas de Programación

download PIC Gama Media - Arquitectura y Técnicas de Programación

of 197

Transcript of PIC Gama Media - Arquitectura y Técnicas de Programación

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    1/197

     

    LOS PIC DE LA GAMA MEDIA.

    ARQUITECTURA Y TÉCNICAS DEPROGRAMACIÓN.

    Santiago Salamanca MiñoDavid Arroyo Muñoz

    Octubre de 2003

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    2/197

     

    Este libro es el resultado del Proyecto Fin de Carrera realizado por el alumno DavidArroyo 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:

    [email protected]

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    3/197

     

    Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    I

    ÍNDICE GENERAL

    1 Introducción a los Microcontroladores......................................................................11.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. ........................................................................................... 112.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

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    4/197

     

    Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    II

    4.2 Interrupciones. ........................................................................................ 63

    4.2.1 Registros de control. ....................................................... 65

    4.2.1.1 Registro INTCON......................................... 654.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. ......................................................................... 774.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

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    5/197

     

    Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    III

    4.10.2 USART. .......................................................................... 125

    4.10.2.1 Modo asíncrono. ...................................128

    4.10.2.2 Modo síncrono......................................1335 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................................................... 1585.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

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    6/197

     

    Microcontroladores PIC de la Gama Media. ÍNDICE GENERAL. 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    IV

    5.5.1.4 Normalización.............................................. 168

    5.5.1.5 Conversión de flotante a entero. .................. 169

    5.5.1.6 Suma/Resta. ................................................. 1695.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.................................. 1745.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

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    7/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    1

     

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    8/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    2

    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 querebosa. 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    9/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    3

     

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    10/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    4

     

    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 bajocosto, 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 elacceso 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    11/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    5

     

    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 otrasdos 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) EPROMCR Standard (4.5-6.0 V) ROMF 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    12/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    6

     

    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 lasanteriores, 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    13/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    7

     

    TABLA 1.2 Principales características de los PIC de la Gama Media.Reloj Memoria Periféricos Características

       M  e  m  o  r   i  a   d  e  p  r  o  g  r  a  m  a

       C   á  p  s  u   l  a  s

     

       M   á  x   i  m  a   f  r  e  c  u  e  n  c   i  a   d  e   t  r  a   b  a   j  o

       E   P   R   O   M

     

       E   E   R   O   M

     

       M  e  m  o  r   i  a   d  e   d  a   t  o  s   (   b  y   t  e  s   )

       E   E   P   R   O   M

        d  e   d  a   t  o  s   (   b  y   t  e  s   )

       M   ó   d  u   l  o  s   d  e   t  e  m  p  o  r   i  z  a  c   i   ó  n

       M   ó   d  u   l  o  s   C   C   P

       P  u  e  r   t  o  s  s  e  r   i  e

       P  u  e  r   t  o   P  a  r  a   l  e   l  o

       C  o  n  v  e  r   t   i   d  o  r   A   /   D   d  e   8   b   i   t  s

       C  o  m  p  a  r  a   d  o  r  e  s

       T  e  n  s   i   ó  n   i  n   t  e  r  n  a   d  e  r  e   f  e  r  e  n  c   i  a

       F  u  e  n   t  e  s   d  e   i  n   t  e  r  r  u  p  c   i   ó  n

       P  a   t   i   l   l  a  s   d  e   E   /   S

       R  a  n  g  o   d  e  v  o   l   t  a   j  e   (  v  o   l   t   i  o  s   )

       D

      e   t  e  c   t  o  r   d  e   f  a   l   l  o  e  n   V

       D   D

       “   B  r  o  w  n  -  o  u   t   ”

       P

       i  n  e  s   D   I   P

       P   i  n  e  s   P   L   C   C

       P   i  n  e  s   Q   F   P

    PIC16C61 20 1K --- 36 --- TMR0 -- --- -- -- -- -- 3 133,0-6,0

    --- 18 18 --

    PIC16C62 20 2K --- 128 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI -- -- -- -- 10 22

    2,5-6,0

    --- 28 28 --

    PIC16C63 20 4K --- 192 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI --- -- -- -- 10 22

    3,0-6,0

    --- 28 28 --

    PIC16C64 20 2K --- 128 ---TMR0,TMR1

    ,TMR21 SPI/I2C Si -- -- -- 8 33

    3,0-6,0

    --- 40 44 44

    PIC16C65 20 4K --- 192 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI Si -- -- -- 11 33

    3,0-6,0

    --- 40 44 44

    PIC16C620 20 512 --- 80 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0

    Si 18 18 20

    PIC16C621 20 1K --- 80 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0

    Si 18 18 20

    PIC16C622 20 2K --- 128 --- TMR0 -- ---- -- -- 2 Si 4 133,0-6,0

    Si 18 18 20

    PIC16C71 20 1K --- 36 --- TMR0 -- ---- -- 4ch -- -- 4 133,0-6,0

    --- 18 18 --

    PIC16C73 20 4K --- 192 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI -- 5ch -- - - 11 22

    3,0-6,0

    --- 28 28 --

    PIC16C74 20 4K --- 192 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI Si 8ch -- -- 12 33

    3,0-6,0

    --- 40 44 44

    PIC16C76 20 8K --- 368 ---TMR0,TMR1

    ,TMR22 SPI/I2C/SCI -- 5ch -- - - 11 22

    2,5-6,0

    Si 28 28 --

    PIC16C84 20 -- 1K 36 64 TMR0 -- ---- -- -- -- -- 4 133,0-6,0

    --- 18 18 --

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    14/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    8

     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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    15/197

     

    Microcontroladores PIC de la Gama Media. 1. Introducción a los Microcontroladores 

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura

    9

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    16/197

     

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    17/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    11

     

    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 seaccede 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 GamaMedia.

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    18/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    12

     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 deldispositivo.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    19/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    13

     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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    20/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    14

    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 implementadosestos 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 ), los cuales son implementados físicamente

    en la memoria de datos en el registro PCLATCH . 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

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    21/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    15

    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 realizaresta 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 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

    . Si se hace un GOTO a una dirección que está en una página distinta,

     primero hay que modificar estos bits del PCLATH. 

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    22/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    16

    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 rutinasde 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 nuevovalor 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    23/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    17

     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’.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    24/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    18

    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 ladirecció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 WMOVWF FSR ; Carga valor de W en FSR

    SIGUIENTE CLRF INDF ; Borra la posición de memoria que marca FSRINCF FSR,1 ; Incrementa valor del FSRBTFSS 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’.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    25/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    19

    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 eldireccionamiento 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 Down1 = 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    26/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    20

    2.2.3.2 Registro de Opciones.

    El registro de opciones es un registro de lectura-escritura, que contiene los bits deconfiguració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 WDT000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8

    100 1:32 1:16101 1:64 1:32110 1:128 1:64111 1:256 1:128

    Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna el

    divisor al WDT.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    27/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    21

    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 distintosaspectos 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: Bits de protección de código.5-4:

     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 = Activado0 = Desactivado.

     bit 1-0 FOSC1-FOSC0: Selección del tipo de oscilador.11 = Oscilador RC.

    10 = Oscilador HS01 = Oscilador XT00 = Oscilador LP

    512 1k 2k11 Off Off Off10 Off Off ½ alta On01 Off ½ alta On ¾ alta On00 On On On

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    28/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    22

    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 YFOSC0 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

    configuraciónFOSC1:FOSC0

    Modo

    OSC

    Ganancia de los

    inversores internos Comentarios

    11 RC − 

    Solución más barata (sólo requiere una resistencia yun condensador). Máxima variación del tiempo base.Modo del dispositivo por defecto

    10 HS Ganancia altaCristal de cuarzo para aplicaciones de altafrecuencia. Es el modo que más potencia consumede los tres cristales.

    01 XT Ganancia mediaCristal de cuarzo para un rango de frecuenciasestándar.

    00 LP Ganancia bajaCristal de cuarzo para aplicaciones de bajafrecuencia. Es el modo que menos potencia

    consume de los tres cristales.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    29/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    23

     TABLA 2.2 Selección del modo de oscilación con FOSC2:FOSC0.

    Bits de

    configuraciónFOSC2:FOSC0

    ModoOSC

    Ganancia de

    losinversoresinternos

    Comentarios

    111EXTRC conCLKOUT − 

    Red RC externa sacando la señal de oscilación por la patilla CLKOUT. Solución barata. Máxima variaciónen el tiempo base. Modo del dispositivo por defecto

    110 EXTRC − Red RC externa. Barata solución. Máxima variaciónen el tiempo base. La señal de oscilación no sale alexterior.

    101INTRC conCLKOUT − 

    Red RC interna sacando la señal de oscilación por la patilla CLKOUT. Es la solución más barata.Oscilador de 4MHz.

    100 INTRC − Red RC interna. La señal de oscilación no sale alexterior. Solución más barata. Oscilador de 4MHz.

    011 −  −  Reservado

    10 HS Ganancia altaCristal de cuarzo para aplicaciones de alta frecuencia.Es el modo que más potencia consume de los trescristales.

    01 XTGanancia

    mediaCristal de cuarzo para un rango de frecuenciasestándar.

    00 LPGanancia

     baja

    Cristal de cuarzo para aplicaciones de baja frecuencia.Es el modo que menos potencia consume de los trescristales.

    La diferencia entre los tres últimos viene dada por la ganancia de los inversores internos, queson 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    30/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    24

     

    Figura 2.4 Operación de osciladores en los modos HS, XT o LP.

     Nota 1: La resistencia en serie, R S, es necesaria para cristales de alta tecnología.2: La resistencia de realimentación, R F, 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, R EXT y de CEXT (figura 2.5). El fabricante recomienda que R EXT 

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    31/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    25

    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, R S 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    32/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    26

    2.4 Reset

    La función del reset es la de dejar al sistema en un estado conocido. Existen varias fuentes deRESET:

    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).

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    33/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    27

     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.

    TIEMPO DE POWER-UPCONFIGURACIÓNDEL OSCILADOR  Habilitado Deshabilitado

    BROWN-OUTRESET

    WAKE-UPDESDE SLEEP

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    34/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    28

    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 V DD crezca deforma 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únel caso.

    Figura 2.9 Secuencia de Time-out en subida de alimentación.MCLR conectado a VDD. 

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    35/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    29

    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).

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    36/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    30

    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 debeestar 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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    37/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    31

     

    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 deltransistor.

    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 secorta cuando VDD baja de cierto nivel tal como:

    V7.0R2R1

    R1 VDD   =+•  

    2: El circuito de Brown-out Reset interno debe de estar deshabilitado cuandose use esta configuración.3: Los valores de las resistencias dependen de las características deltransistor.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    38/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    32

    Debido a que existen distintas fuentes de reset, es necesario en determinadas ocasiones, saberque tipo de reset se ha producido. Esto se hace consultando los bits POR y BOR del registroPCON, 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.

    RegistroPower-On ResetBrown-Out Reset

    MCLR durante:-funcionamiento normal

      -SLEEPWDT Reset

    Wake-up desde SLEEPmediante:-Interrupciones-Temporizador del WDT

    ADCAPL 0000 0000 0000 0000 uuuu uuuuADCAPH 0000 0000 0000 0000 uuuu uuuu

    ADCON0 0000 00-0 0000 00-0 uuuu uu-uADCON ---- -000 ---- -000 ---- -uuuADRES xxxx xxxx uuuu uuuu uuuu uuuuADTMRL 0000 0000 0000 0000 uuuu uuuuADMRH 0000 0000 0000 0000 uuuu uuuuCCP1CON --00 0000 --00 0000 --uu uuuuCCP2CON 0000 0000 0000 0000 uuuu uuuuCCPR1L xxxx xxxx uuuu uuuu uuuu uuuuCCPR1H xxxx xxxx uuuu uuuu uuuu uuuuCCPR2L xxxx xxxx uuuu uuuu uuuu uuuuCCPR2H xxxx xxxx uuuu uuuu uuuu uuuuCMCON 00-- 0000 00—0000 uu-- uuuuEEADR xxxx xxxx uuuu uuuu uuuu uuuu

    EECON1 ---0 x000 ---0 q000 ---0 uuuuEECON2 - - -EEDATA xxxx xxxx uuuu uuuu uuuu uuuuFSR xxxx xxxx uuuu uuuu uuuu uuuuGPIO --xx xxxx --uu uuuu --uu uuuuI2CADD 0000 0000 0000 0000 uuuu uuuuI2CBUF xxxx xxxx uuuu uuuu uuuu uuuuI2CCON 0000 0000 0000 0000 uuuu uuuuI2CSTAT --00 0000 --00 0000 --uu uuuuINDF - - -INTCON 0000 000x 0000 000u uuuu uuuu 

    LCDCON 00-0 0000 00-0 0000 uu-u uuuu

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    39/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    33

    RegistroPower-On ResetBrown-Out Reset

    MCLR durante:-funcionamiento normal

      -SLEEPWDT Reset

    Wake-up desde SLEEPmediante:-Interrupciones-Temporizador del WDT

    LCDD00 a LCDD15 xxxx xxxx uuuu uuuu uuuu uuuuLCDPS ---- 0000 ---- 0000 ----uuuuLCDPS 1111 1111 1111 1111 uuuu uuuuOPTION_REG 1111 1111 1111 1111 uuuu uuuuOSCCAL 0111 00-- uuuu uu-- uuuu uu--PCL 0000 0000 0000 0000 PC+1(2)

    PCLATH ---0 0000 ---0 0000 ---u uuuuPCON ---- --0u ---- --uu ---- --uuPIE1 0000 0000 0000 0000 uuuu uuuuPIE2 ---- ---0 ---- ---0 ---- ---uPIR1 0000 0000 0000 0000 uuuu uuuuPIR2 ---- ---0 ---- ---0 ---- ---u

    PORTA --xx xxxx --uu uuuu --uu uuuuPORTB xxxx xxxx uuuu uuuu uuuu uuuuPORTC xxxx xxxx uuuu uuuu uuuu uuuuPORTD xxxx xxxx uuuu uuuu uuuu uuuuPORTE ---- -xxx ---- -uuu ---- -uuuPOTF 0000 0000 0000 0000 uuuu uuuuPORTG 0000 0000 0000 0000 uuuu uuuuPR2 1111 1111 1111 1111 1111 1111PREFA 0000 0000 0000 0000 uuuu uuuuPREFB 0000 0000 0000 0000 uuuu uuuuRCSTA 0000 --00x 0000 --00x uuuu –uuuRCREG 0000 0000 0000 0000 uuuu uuuuSLPCON 0011 1111 0011 1111 uuuu uuuuSPBRG 0000 0000 0000 0000 uuuu uuuuSSPBUF xxxx xxxx uuuu uuuu uuuu uuuuSSPCON 0000 0000 0000 0000 uuuu uuuuSSPADD 0000 0000 0000 0000 uuuu uuuuSSPSTAT 0000 0000 0000 0000 uuuu uuuuSTATUS 0001 1xxx 000q quuu  uuuq quuu 

    T1CON --00 0000 --uu uuuu --uu uuuuT2CON -000 0000 -000 0000 -uuu uuuuTMR0 xxxx xxxx uuuu uuuu uuuu uuuuTMR1L xxxx xxxx uuuu uuuu uuuu uuuuTMR1H xxxx xxxx uuuu uuuu uuuu uuuuTMR2 0000 0000 0000 0000 uuuu uuuu

    TRIS --11 1111 --11 1111 --uu uuuuTRISA --11 1111 --11 1111 --uu uuuuTRISB 1111 1111 1111 1111 uuuu uuuuTRISC 1111 1111 1111 1111 uuuu uuuuTRISE 0000 –111 0000 –111 uuuu –uuuTRISF 1111 1111 1111 1111 uuuu uuuuTRISG 1111 1111 1111 1111 uuuu uuuuTXREG 0000 0000 0000 0000 uuuu uuuuTXSTA 0000 –010 0000 –010 uuuu –uuuVRCON 000- 0000 000- 0000 uuu- uuuuW xxxx xxxx uuuu uuuu uuuu uuuu

    Legenda: u = valor anterior x = desconocido – = no implementado q = depende de las condiciones

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    40/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    34

    2.5 Temporizador y Perro Guardián.

    En este apartado se tratará el funcionamiento del TMR0 en conjunción con el Perro Guardiáno Watchdog.

    El TMR0 en su forma general tiene las siguientes características:

    a) Contador/Temporizador de 8 bits.

     b) Permite su lectura y escritura.

    c) La fuente de reloj se puede seleccionar, pudiendo ser externa (contador) o interna

    (temporizador).

    d) La fuente externa puede ser seleccionada para que actúe cuando aparezca un flancode bajada o un flanco de subida.

    e) Se puede seleccionar que se produzca una interrupción cuando haya rebose, es

    decir, pase de FFh a 00h.

    f) Se le puede asignar un divisor de frecuencia de 8 bits programable.

    Por otro lado el perro guardián o Watchdog (WDT) es un temporizador con un oscilador RC,

    que no requiere ningún elemento externo, funcionando incluso cuando el oscilador principal

    del sistema no lo hace (modo de reposo).

    La habilitación del perro guardián se realiza con el bit WDTE de la palabra de configuración.

    Si el WDT está funcionando, cuando éste rebose se producirá un reset del PIC. En caso de que

    el PIC en el momento del rebose del WDT se encuentre en modo de reposo, lo que se

     producirá es el “despertar” de éste, continuando la ejecución del programa.

    El periodo nominal del WDT es de 18 ms, que puede variar en función de la temperatura,

    VDD, etc. (habrá que ver las características eléctricas). Además si se quieren tiempos mayores

    se le puede asignar el divisor de frecuencia que lo puede aumentar hasta 1:128.

    Este divisor de frecuencia es el mismo que funcionará con el TMR0, con lo cual, o actúa

    sobre el TMR0 o sobre el WDT, pero nunca puede hacerlo sobre los dos a la vez.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    41/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    35

    La forma de programar el divisor es con el registro de opciones:

     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 WDT000 1:2 1:1001 1:4 1:2010 1:8 1:4011 1:16 1:8100 1:32 1:16101 1:64 1:32

    110 1:128 1:64111 1:256 1:128

    Para conseguir asignar 1:1 al divisor de frecuencia en el TMR0, se le asigna eldivisor al WDT.

    En la figura 2.16 se puede ver el diagrama de bloques del funcionamiento del WDT y el

    TMR0, con el divisor de frecuencias.

    Figura 2.16 Diagrama de bloques del TMR0/WDT con el predivisor.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    42/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    36

    Como se puede ver, para el TMR0, el divisor de frecuencia actúa como un prescaler, es decir,

     primero divide la fuente de reloj y luego esta fuente dividida actúa sobre el TMR0. Para el

    WDT, sin embargo, es al revés, primero cuenta y luego actúa sobre la señal, es decir, lo hacecomo postscaler.

    Cuando tenemos habilitado el perro guardián, para que el sistema no se resetee, se ha de

    inicializar periódicamente el WDT. Esto se consigue con las instrucciones CLRWDT o

    SLEEP. Además se recomienda por parte del fabricante, que antes de modificar el postscaler

    se debe ejecutar la instrucción CLRWDT, ya que si no, se puede producir el reset del PIC.

    2.6 Puertas E/S.

    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 es:

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

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

    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.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    43/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    37

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

    Figura 2.17 Diagrama de bloques típico de una puerta E/S.

    2.7 Modo de reposo o SLEEP.

    El modo de reposo o SLEEP, hace entrar al dispositivo en el estado de menor consumo de

     potencia. En este modo deja de funcionar el oscilador principal, así como los temporizadores

    del dispositivo, salvo el Watchdog, y además las líneas E/S mantienen su estado. Para acceder

    al modo de reposo se utiliza la instrucción SLEEP.

    Para obtener el mínimo consumo habría que desconectar los periféricos y las líneas E/S

    deberían conectarse a VDD o VSS.

    Las formas de salir del modo de reposo son:

    1. Cualquier reset del dispositivo.

    2. Rebose del Watchdog (si éste está activado).

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    44/197

     

    Microcontroladores PIC de la Gama Media. 2. La Arquitectura de los PIC de la Gama Media

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    38

    3. Mediante cualquier interrupción producida mientras el dispositivo está en el modo

    de reposo, tal como:

    a. Flanco en el pin RB0/INT. b. Cambio de estado en líneas de puerta.

    c. Comparadores.

    d. Conversores A/D.

    e. Overflow en TMR1.

    f. LCD.

    g. Interrupción por puerto serie síncrono, SSP.

    h. Módulos de captura.

    Al salir del modo de reposo se ejecuta la siguiente instrucción a SLEEP.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    45/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    39

     

    Capítulo 3. Juego de instrucciones de los PIC de la Gama

    Media. 

    3.1 Introducción.

    Las características del juego de instrucciones vienen determinadas por el tipo de arquitectura

    que tienen los PIC:• La arquitectura Harvard,

    • Conjunto de instrucciones reducido (RISC).

    Esto implica que:

    a) Normalmente el bus de instrucciones es mayor que el de datos. De esta forma se

    obtiene una mayor eficiencia adaptando los anchos de los buses a los

    requerimientos de la arquitectura y, por tanto, se optimiza el funcionamiento. b) Las instrucciones son de una única palabra. Debido a lo anterior se diseñarán

    memorias de un ancho igual al código de operación de las instrucciones, pudiendo

    acceder a su lectura en un solo ciclo. Además el tamaño de la memoria coincidirá

    con el número de instrucciones que podemos almacenar, a diferencia de la

    arquitectura Von Neumann, en donde suele existir, de forma general, un ratio de

    2:1 (siendo la memoria de 4Kbytes, aproximadamente 2Kbytes son instrucciones).

    c) Segmentación de instrucciones. Esto consiste en ejecutar las instrucciones en

    distintas fases, unas con acceso a memoria de instrucciones y otras con acceso a

    memoria de datos. Al poder realizarse accesos simultáneos a ambas memorias,

     podemos ejecutar las instrucciones en un único ciclo de instrucción.

    d) El hecho de tener pocas instrucciones facilita el aprendizaje.

    e) Arquitectura basada en registros. Todos los elementos de la arquitectura, incluido

    el contador de programa (PC), se encuentran mapeados en la memoria de datos,

    que a su vez está implementada físicamente como registros.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    46/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    40

    f) Instrucciones ortogonales: Son aquellas que permiten trabajar con todos los

    registros del sistema y con todos los direccionamientos existentes. Esta simetría

     permite una programación más eficiente. En la gama media existen únicamentedos instrucciones no orientadas a registros, que son las instrucciones CLRWDT y

    SLEEP.

    3.2 Flujo de instrucciones. Segmentación.

    La entrada de reloj, se divide internamente por cuatro, obteniéndose cuatro señales de reloj

    denominadas Q1, Q2, Q3 y Q4. Internamente, el PC se incrementa cada Q1, la instrucción esleída de la memoria de instrucciones y almacenada en el registro de instrucciones en Q4. Esa

    instrucción es decodificada y ejecutada durante los siguientes Q1-Q4.

    El flujo de instrucciones y el reloj se muestran en las figuras 3.1 y 3.2. Además, estos ciclos

    son los que denominaremos periodos de oscilación del PIC (Tosc).

    Figura 3.1 Flujo de instrucciones y reloj.

    Un ciclo de instrucción consiste precisamente en estos 4 ciclos de reloj Q1-Q4, y cada una de

    las fases de la instrucción ocupa un ciclo.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    47/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    41

     Estas dos fases son:

    • Fase de búsqueda (Fetch): Se incrementa en Q1 el PC, se lee y se lleva en Q4 a

    registro de instrucciones.• Fase de ejecución: En Q2 se lee la memoria de datos para los operandos y en Q4 se

    almacena en la memoria de datos el resultado.

    Debido a que en cada una de las fases se accede a una memoria, y que los accesos a memoria

     pueden solaparse, aparece la segmentación, es decir, se ejecuta una instrucción por ciclo de

    instrucción, excepto las instrucciones de salto incondicional, ya que es en la fase de ejecución

    donde se calcula la dirección destino. En este caso tarda dos ciclos de instrucción.

    TOSC0  TOSC1  TOSC2  TOSC3  TOSC4TOSC5

    Buscar 1 Ejecutar 1  1. MOVLW 55h2. MOVWF PORTB Buscar 2  Ejecutar 2 

    Buscar 3  Ejecutar 3 3. CALL SUB_14. BSF PORTA,3 Buscar 4  Detención

    … Buscar SUB_1  Ejecutar SUB_1 … Buscar SUB_1+1 

    Figura 3.2 Segmentación de instrucciones

    Existen además las instrucciones de salto condicional, que pueden durar 1 ó 2 ciclos en

    función del resultado (btfss, btfsc, decfsz y incfsz).

    3.3 El formato de las instrucciones.

    Las instrucciones de los PIC se pueden dividir en cuatro categorías:

    • Instrucciones sobre registros orientadas a bytes.

    • Instrucciones sobre registros orientadas a bits.

    • Instrucciones para operaciones con literales.

    • Instrucciones de control.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    48/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    42

    Todas ellas tienen un ancho de 14 bits (ancho de la memoria de programa), pero los campos

    varían entre ellos.

    Los formatos de los distintos tipos de instrucciones son:

    • Instrucciones sobre registros orientadas a bytes.

    13 8 7 6 0

    Código de operación d f

    d = 0, resultado se almacena en el acumulador (w).d = 1, resultado se almacena sobre el propio registro.f = 7 bits de la dirección del registro sobre el que se realiza la operación.

    El resto de la dirección viene dada por los bits RP1, RP0 o IRP.

    • Instrucciones sobre registros orientadas a bits.

    13 10 9 7 6 0

    Código de operación b f

     b = 3 bits que indican la posición dentro del registro del bit a modificar.f = 7 bits de la dirección del registro sobre el que se realiza la operación.

    El resto de la dirección viene dada por los bits RP1, RP0 o IRP.

    • Instrucciones con literales y de control.

    o General.

    13 8 7 0Código de operación k (literal)

    k = literal (direccionamiento inmediato).

    o Instrucciones GOTO y CALL.13 11 10 0

    Código de operación k (literal)

    k = 11 bits menos significativos del PC. El resto se obtiene del PCLATCH.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    49/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    43

    3.4 Juego de instrucciones.

    Primero hay que hacer algunas consideraciones:• Se puede usar cualquier registro especial como fuente o destino en una instrucción.

    • Si usamos el registro de Estado como registro destino, los bits C, Z y DC

    obtendrán los valores propios del resultado de la operación. Por ejemplo:

    clrf STATUS ; después de su ejecución STATUS = 00001000; correspondiendo ese 1 con el bit Z. 

    • Todas las instrucciones que manipulan bit son instrucciones de tipo lectura-

    modificación-escritura, es decir, primero se lee el registro, luego se opera y por

    último se escribe el resultado. Esto hay que tenerlo en cuenta fundamentalmente

    cuando se trabaja sobre las puertas y en éstas se cambian los bits del TRIS

    asociadas a ellas.

    En la tabla 3.1 se especifica el significado de las distintas abreviaturas que van a ser utilizadas

     posteriormente para la descripción detallada de cada una de las instrucciones de los PIC.

    TABLA 3.1 Descripción de las abreviaturas utilizadas.Campo Descripción

    f Dirección del registro (0x00 a 0x7F)w Registro de trabaja (acumulador) b Posición de un bit de un registro (0 a 7)k Literal, dato inmediato o dirección de una etiqueta.x Valor indeterminado (0 ó 1)

    dSelección el destino;d = 0; el resultado se almacena en W.d = 1; el resultado se almacena en el registro f.

    dest Destino (registro W ó f)TOS Nivel superior de la Pila.PC Contador de Programa.PCLATCH Parte alta del Contador de ProgramaGIE Bit de activación global de interrupciones.WDT Perro guardián (Watchdog).

    TO   Bit “Time Out” del Registro de Estado.

    PD   Bit “Power Down” del Registro de Estado[ ] Opciones( ) Contenido→  Se asigna a< > Campo de bits de un registro.

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    50/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca Miño Escuela de Ingenierías IndustrialesDavid Arroyo Muñoz Universidad de Extremadura 

    44

    La tabla 3.2 muestra un resumen de todas las instrucciones que componen el lenguaje de

     programación de los microcontroladores PIC de la Gama Media.

    TABLA 3.2 Instrucciones de la Gama Media.INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BYTES

    14 bits de la palabra de lainstrucción Nemónicos,

    OperandosDescripción Ciclos

    MSb LSb

    Bits deEstado

    afectadosADDWF f, d Suma W y f 1 00 0111 dfff ffff C, DC, ZANDWF f, d Y lógica entre W y f 1 00 0101 dfff ffff ZCLRF f Borra el registro f 1 00 0001 1fff ffff ZCLRW - Borra el registro W 1 00 0001 0xxx xxxx ZCOMF f, d Complementa f 1 00 1001 dfff ffff ZDECF f, d Decrementa f 1 00 0011 dfff ffff Z

    DECFSZ f, d Decrementa f y salta si es 0 1 (2) 00 1011 dfff ffffINCF f, d Incrementa f 1 00 1010 dfff ffff ZINCFSZ f, d Incrementa f y salta si es 0 1 (2) 00 1111 dfff ffffIORWF f, d O lógica entre W y f 1 00 0100 dfff ffff ZMOVF f, d Mueve f 1 00 1000 dfff ffff ZMOVWF f Mueve W a f 1 00 0000 lfff ffff NOP - No hace nada 1 00 0000 0xx0 0000RLF f, d Rota f a la izquierda 1 00 1101 dfff ffff CRRF f, d Rota f a la derecha 1 00 1100 dfff ffff CSUBWF f, d Resta W de f 1 00 0010 dfff ffff C, DC, ZSWAPF f, d Intercambia los bytes de f 1 00 1110 dfff ffffXORWF f, d O lógica exclusiva de W y f 1 00 0110 dfff ffff Z

    INSTRUCCIONES SOBRE REGISTROS ORIENTADAS A BITS

    BCF f, b Borra el bit b del registro f 1 01 00bb bfff ffffBSF f, b Pone a 1 el bit b del registro f 1 01 01bb bfff ffffBTFSC f, b Testea el bit, y salta si es 0 1 (2) 01 10bb bfff ffffBTFSS f, b Testea el bit y salta si es 1 1 (2) 01 11bb bfff ffff

    INSTRUCCIONES CON LITERALES Y DE CONTROL

    ADDLW k Suma un literal con el W 1 11 111x kkkk kkkk C, DC, ZANDLW k Y lógica entre k y W 1 11 1001 kkkk kkkk ZCALL k Salto a subrutina 2 10 0kkk kkkk kkkkCLRWDT - Pone a cero el WDT 1 00 0000 0110 0100 TO , PD  GOTO k Salto incondicional 2 10 1kkk kkkk kkkkIORLW k O lógica entre k y W 1 11 1000 kkkk kkkk ZMOVLW k Mueve el literal k a W 1 11 00xx kkkk kkkkRETFIE - Retorno de interrupción 2 00 0000 0000 1001

    RETLW k Retorno con k en W 2 11 01xx kkkk kkkkRETURN - Retorno de subrutina 2 00 0000 0000 1000SLEEP - Modo de reposo 1 00 0000 0110 0011 TO , PD  SUBLW k 1 11 110x kkkk kkkk C, DC, ZXORLW k O exclusiva entre k y W 1 11 1010 kkkk kkkk Z

  • 8/17/2019 PIC Gama Media - Arquitectura y Técnicas de Programación

    51/197

     

    Microcontroladores PIC de la Gama Media. 3. Juego de instrucciones de los PIC de la Gama Media.

    Santiago Salamanca