Sie sind auf Seite 1von 35

Sistema de desarrollo PIC18F452

Captulo 3

Captulo 3. Microcontroladores PIC


Para la realizacin de este proyecto se ha elegido la familia PIC de Microchip por diversos motivos: Por la cantidad de informacin disponible sobre estos microcontroladores, y es que, para las aplicaciones ms habituales que nos podemos encontrar la eleccin de una versin adecuada de PIC de Microchip es la mejor solucin. Por su sencillez de manejo, tienen un juego de instrucciones reducido, de 70 en la gama alta. Aunque se va a utilizar lenguaje C, en algunos casos puede ser necesario recurrir al lenguaje ensamblador. Por su precio, que es comparativamente inferior al de la mayora de sus competidores y por la facilidad con la que obtener muestras de estos integrados. Por su velocidad y promedio de parmetros en consumo, tamao, etc. Porque posee gran variedad de herramientas, tanto de software como de hardware, baratas y fciles de utilizar.

Una de las razones del xito de los PIC se basa en su utilizacin. Cuando se aprende a manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es muy fcil emplear otro modelo. Concretamente se ha utilizado el PIC 18F452 por varias razones: Dispone de un gran nmero de pines de propsito general. Posee una arquitectura para la mejora de la optimizacin de cdigo cuando se utiliza programacin en C. Su precio puede ser superior a los de otros microcontroladores de Microchip, pero al no ser un proyecto pensado para producir muchas unidades merece la pena ese gasto adicional. Posee mucha variedad de interrupciones, muy til para generar seales peridicas o para el uso de botones. Permite velocidades superiores a otros de gama inferior, lo cual nos va a ser muy til para la generacin de seales mediante el HVDAC. Adems, cuanto ms flexible sea el diseo del sistema de desarrollo mayor ser el nmero de dispositivos que podemos controlar en un futuro. Trae implementado en el hardware los elementos necesarios para una comunicacin RS232, que ser la que vamos a utilizar en el proyecto para comunicarnos con el PC.

Sistema de desarrollo PIC18F452

Captulo 3

1 Caractersticas relevantes
1 La arquitectura del procesador sigue el modelo Harvard: En esta arquitectura, la CPU se conecta de forma independiente y con buses distintos con la memoria de instrucciones y con la de datos y as permitir su acceso simultaneo.
Bus de datos
MEMORIA DE DATOS

Bus de Instrucciones
MEMORIA DE INSTRUCCIONES

CPU

8
Figura 1. Modelo Harvard

12

2 Se aplica la tcnica de segmentacin (pipe-line) en la ejecucin de las instrucciones: La segmentacin permite al procesador realizar al mismo tiempo la ejecucin de una instruccin y la bsqueda del cdigo de la siguiente. De esta forma se puede ejecutar cada instruccin en un ciclo (un ciclo de instruccin equivale a cuatro ciclos de reloj) excepto las instrucciones de salto que ocupan dos ciclos al no conocer la direccin de la siguiente instruccin hasta que no se haya completado la de bifurcacin. Se puede observar en el esquema de la figura 2.
CLK

ciclo

BI3

BI2

BI1

EI3

EI2

EI3

Fin INSTR0 Fin INSTR1 Fin INSTR2

Figura 2. Tcnica Pipeline

3 El formato de todas las instrucciones es de la misma longitud: Las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y 16 las de la gama alta. Esta caracterstica es muy ventajosa en la optimizacin de la memoria de instrucciones y facilita enormemente la construccin de ensambladores y compiladores.

Sistema de desarrollo PIC18F452

Captulo 3

4 Procesador RISC (Computador de Juego de instrucciones reducido): Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media y hasta 75 los de la alta, como nuestro 18F452. 5 Todas las instrucciones son ortogonales: Cualquier instruccin puede manejar cualquier elemento de la arquitectura como fuente o como destino. 6 Arquitectura basada en un banco de registros: Esto significa que todos los objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria, etc.) estn implementados fsicamente como registros. 7 Diversidad de modelos de microcontroladores con prestaciones y recursos diferentes: La gran variedad de modelos de microcontroladores PIC permite que el usuario pueda seleccionar el ms conveniente para su proyecto. 8 Herramientas de soporte potentes y econmicas: La empresa Microchip y otras que utilizan los PIC ponen a disposicin de los usuarios numerosas herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los simuladores software, los emuladores en tiempo real, Ensambladores, Compiladores C, Intrpretes y Compiladores BASIC, etc.

2 Las gamas PIC


Para resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las aplicaciones grandes los requieren numerosos y potentes. Siguiendo esta filosofa, Microchip construye diversos modelos de microcontroladores orientados a cubrir, de forma ptima, las necesidades de cada proyecto. As, hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros complejos y ms costosos para las de mucha envergadura. PIC dispone de gran diversidad de modelos y encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las versiones estn construidas alrededor de una arquitectura comn, un repertorio mnimo de instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen del voltaje de alimentacin.

2.1 Gama Baja


La gama baja de los PIC encuadra nueve modelos fundamentales en la actualidad. La memoria de programa puede contener 512, 1 k. y 2 k palabras de 12 bits, y ser de tipo ROM, EPROM aunque tambin hay modelos con memoria OTP. Slo disponen de un temporizador (TMR0), un repertorio de 33 instrucciones y un nmero de pines para

Sistema de desarrollo PIC18F452

Captulo 3

soportar las E/S comprendido entre 12 y 20. El voltaje de alimentacin admite un valor muy flexible comprendido entre 2 y 6,25 V, lo cual posibilita el funcionamiento mediante pilas corrientes teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Y por otro lado, conviene nombrar dos restricciones importantes de la gama baja y es que la pila slo dispone de dos niveles, lo que supone no poder encadenar ms de dos subrutinas y adems no admiten interrupciones.

2.2 Gama Media


En esta gama sus componentes aaden nuevas prestaciones a las que posean los de la gama baja, hacindoles ms adecuados en las aplicaciones complejas. Admiten interrupciones, poseen comparadores de magnitudes analgicas, convertidores A/D, puertos serie y diversos temporizadores. Algunos modelos disponen de una memoria de instrucciones del tipo OTP que resulta mucho ms econmica en la implementacin de prototipos y pequeas series. Otros en cambio disponen de una memoria de instrucciones tipo EEPROM, que al poder ser borradas elctricamente, son mucho ms fciles de reprogramar que las EPROM.

2.3 Gama Alta y Gama Mejorada


En la actualidad, esta gama esta formada por las series 17 y 18. Estos dispositivos responden a microcontroladores de arquitectura abierta pudindose expansionar en el exterior al poder sacar los buses de datos, direcciones y control. As se pueden configurar sistemas similares a los que utilizan los microprocesadores convencionales, siendo capaces de ampliar la configuracin interna del PIC aadiendo nuevos dispositivos de memoria y de E/S externas. Esta facultad obliga a estos componentes a tener un elevado nmero de patas comprendido entre 40 y 44. Admiten interrupciones, poseen puerto serie, varios temporizadores y mayores capacidades de memoria, que alcanza las 128 k palabras en la memoria de instrucciones y 1500 bytes en la memoria de datos. Actualmente Microchip fabrica varios modelos de microcontroladores de gran potencia y velocidad, y se destinan a aplicaciones muy avanzadas. Con un patillaje que llega desde las 28 hasta las 84 pines, la memoria de cdigo alcanza las 128 k palabras y una frecuencia de 40 MHz.

Sistema de desarrollo PIC18F452

Captulo 3

3 PIC 18F452
3.1 Caractersticas generales
A continuacin enumeramos las principales caractersticas de este microcontrolador de gama alta: Velocidad de funcionamiento hasta 40 MHz. 40 pines y puertos A, B, C, D, E. Juego de instrucciones RISC. Memoria de programa de 32 Kbytes. Memoria de datos de 1536 bytes. Memoria EEPROM de 256 bytes. Instrucciones de 16 bits de anchura. Direccionamiento de datos de 8 bits. 18 fuentes de interrupcin con niveles de prioridad. Multiplicador hardware de un solo ciclo de 8 x 8 bits. Pines para interrupciones externas. Temporizadores de 8 y 16 bits. 2 mdulos capturadotes, comparadores y de modulacin PWM. Puerto serie sncrono que soporta modo SPI e I2C. USART direccionable que soporta RS-232 y RS-485. Convertidor analgico digital de 10 bits con 8 canales de entrada. Deteccin de bajo voltaje programable. Ahorro de energa mediante modo SLEEP.

3.2 Diagrama de conexionado del 18F452


En la figura de la pgina siguiente se muestra el diagrama de conexionado de un PIC 18F452. El formato elegido para la implementacin fsica ha sido el formato DIP, por la comodidad a la hora de manejarlo y su fcil sustitucin en caso de que quedara inutilizado por cualquier motivo. A continuacin de sta se sealan las funciones de todos los pines:

Sistema de desarrollo PIC18F452

Captulo 3

Figura 3. Diagrama de pines del 18F452

MCLR/VPP: Reset externo. Por esta entrada se aplica tambin la tensin / VPP usada en la grabacin del programa. RA0/AN0: E/S digital o entrada analgica. RA1/AN1: E/S digital o entrada analgica. RA2/AN2/VREF: E/S digital, entrada analgica o salida de la tensin de referencia. RA3/AN3/ VREF: E/S digital, analgica o entrada externa de VREF. RA4/TOCKI: E/S digital o entrada del reloj para TMR0. RA5/AN4/SS/LVDIN: E/S digital o entrada analgica. Seleccin del puerto serie sncrono o deteccin de bajo voltaje. RB0/INT0-RB2/INT: E/S digitales del Puerto B. Pueden actuar como entrada de interrupcin externa. RB3/CCP2: E/S digital captura/comparacin. del puerto B. Salida del mdulo 2 de

RB4: E/S digital puerto B. Interrupcin al cambiar el valor del pin. RB5: E/S digital puerto B. Interrupcin al cambiar el valor del pin. Pin habilitador para la programacin ICSP de bajo voltaje. RB6: E/S digital puerto B. Interrupcin al cambiar el valor del pin. Pin de reloj para la programacin ICSP. RB7: E/S digital puerto B. Interrupcin al cambiar el valor del pin. Pin de datos para la programacin de ICSP.

Sistema de desarrollo PIC18F452

Captulo 3

RE0/RD/AN5: E/S digital del Puerto E. Seal de lectura del Puerto paralelo esclavo. Entrada analgica. RE1/WR/AN6: E/S digital. Seal de escritura del Puerto paralelo esclavo. Entrada analgica. RE2/CS/AN7: E/S digital. Seal de activacin del Puerto paralelo esclavo. Entrada analgica. VDD: Entrada de la alimentacin positiva del dispositivo. VSS: Entrada de la alimentacin negativa del dispositivo. OSC1/CLKIN: Entrada al cristal cuarzo o reloj externo OSC2/CLKOUT: Salida del cristal. En modo R-C por esta patita sale FOSC1. RC0/T1OSO/T1CL1: E/S digital del Puerto C. Conexin del oscilador externo para el temporizador TMR1 o entrada de reloj para el TMR1. RC1/T1OSI/CCP2: E/S digital del Puerto C. Conexin del oscilador externo para TMR1 o salida del modulo 2 de captura/comparacin. RC2/CCP1: E/S digital captura/comparacin. del Puerto C. Salida del modulo 1 de

RC3/SCK/SCL: E/S digital. E/S de reloj para el Puerto serie sncrono (SSP) de los mdulos SPI a I2C. RC4/SDI/SDA: E/S digital. Entrada de datos serie en el modo SPI. E/S de datos serie en modo I2C. RC5/SD0: E/S digital del Puerto C. Salida de datos serie en el modo SPI. RC6/TX/CK: E/S digital. Transmisin serie asncrona. Entrada de reloj para comunicacin serie sncrona. RC7/RX/DT: E/S digital. Recepcin serie asncrona. Lnea de datos en la comunicacin serie sncrona. RD0/PSP0-RD7/PSP7: E/S digitales del Puerto D. Este Puerto puede trabajar como Puerto paralelo esclavo para interconexin con un bus de datos de 8 bits de otro microprocesador.

Una vez explicado el funcionamiento de cada puerto del PIC18F452, en la siguiente figura extrada del data-sheet se muestra su arquitectura interna, es decir, un diagrama de bloques donde se muestran los perifricos y las lneas de entrada y salida.

Sistema de desarrollo PIC18F452

Captulo 3

Figura 4. Diagrama de bloques del PIC 18F452 (1 parte)

Sistema de desarrollo PIC18F452

Captulo 3

Figura 5. Diagrama de bloques del PIC 18F452 (2 parte)

Sistema de desarrollo PIC18F452

Captulo 3

3.3 Configuracin del oscilador


El microcontrolador puede operar en 8 modos diferentes y para elegir uno de estos modos el usuario deber programar los registros FOSC2, FOSC1 y FOSC0. Pasamos a explicar cada uno de ellos: LP: cristales de baja frecuencia y por tanto bajo consumo. XT: cristales entre 455 KHz y 4 MHz. HS: cristal de alta frecuencia, entre 8 y 25 MHz HS+PLL: cristal de alta frecuencia y PLL activado.

Para estas configuraciones el esquema fsico sera el siguiente:

Figura 6: diagrama del circuito oscilador (partes interna y externa)

RCIO: capacidad y resistencia externas con pin de entrada salida habilitado. RC: capacidad y resistencia externas.

En estas configuraciones tan solo se necesita un condensador y una resistencia. Se utiliza cuando no se necesita una precisin muy alta. La frecuencia de funcionamiento depender, adems de los valores de la resistencia y el condensador, de la temperatura. La configuracin fsica es la siguiente:

Figura 7. Diagrama del circuito oscilador para las configuraciones RCIO y RC

EC: Reloj externo. EC: Reloj externo con pin de entrada salida habilitado.

Sistema de desarrollo PIC18F452

Captulo 3

3.4 RESET
El reset de los microcontroladores puede ser originado por las siguientes causas: Conexin de la alimentacin (POR: Power On - Reset). Activacin del puerto MCLR (Master Clear Reset) durante una operacin normal. Activacin de MCLR en el estado de Reposo o SLEEP. Desbordamiento del Perro guardin. Instruccin de RESET. Circuito de Brown-out, se activa cuando Vdd cae por debajo de un umbral. Llenado de la pila. Desbordamiento de la pila.

A la mayora de los registros no les afecta el RESET, sin embargo el resto son llevados obligatoriamente a un estado de reset. Existe un registro llamado RCON que contiene 5 bits que actan como banderas para indicar el tipo de RESET que se ha producido. Estos cinco bits son: RI, T0, PD, POR y BOR, los cuales pasan de 1 a 0 cuando se activan y lo hacen de la siguiente manera segn la situacin de RESET producida:

Tabla 1. Configuracin de los bits de RESET

Sistema de desarrollo PIC18F452

Captulo 3

3.5 Organizacin de la memoria


Los microcontroladores PIC 18FXX2 poseen tres bloques de memoria separados: la memoria de programa, la memoria de datos RAM y la memoria de datos EEPROM. Las memorias de datos y de programa usan buses separados, lo que permite acceder a ambas al mismo tiempo. 3.5.1 Memoria de programa El contador de programa tiene 21 bits, por lo que es capaz de direccionar 2 Mbytes de memoria. El microcontrolador slo posee 32 Kbytes de memoria Flash por lo que al intentar leer una posicin que no est implementada externamente se obtendr cero. Con esta memoria el dispositivo puede almacenar 16 K instrucciones de una palabra. 3.5.2 Pila de retorno de direcciones Esta pila permite que ocurran hasta treinta y una llamadas a distintos programas o interrupciones. Cuando se ejecuta una nueva llamada a una subrutina el contador de programas es colocado en la pila de modo que se guarden los datos necesarios para continuar donde se qued. El espacio reservado para esta pila no es parte de otro programa o espacio para datos. El puntero de la pila se puede leer y escribir, al igual que la direccin de la cima de la pila.

Figura 8. Mapa de memoria de programa y de pila

Sistema de desarrollo PIC18F452

Captulo 3

3.5.3 Organizacin de la memoria de datos La memoria de datos viene implementada en memoria RAM esttica. Cada registro posee una direccin de 12 bits, lo que permite tener hasta 4096 bytes de memoria de datos. El mapa de memoria de datos est dividido en 16 bancos de 256 bytes cada uno. Los cuatro bits menos significativos del registro de seleccin de banco seleccionan cual es el banco al que se acceder. Adems, esta memoria contiene el registro de funciones especiales y el registro de propsito general. El primero de ellos es usado para el control y el estado del controlador y de los perifricos, mientras que el segundo se usa para almacenamiento de datos. Veamos en las siguientes figuras el mapa de la memoria de datos y todos los registros de funciones especiales:

Figura 9. Mapa de la memoria de datos

Los registros son de 8 bits y el conjunto de registros est formado por cuatro bancos, como se puede ver en la figura de la pgina siguiente:

Sistema de desarrollo PIC18F452

Captulo 3

Figura 10. Mapa de los registros de funciones especiales

3.5.4 Banco de acceso El banco de acceso es una mejora en la arquitectura muy til para la optimizacin del cdigo de los compiladores de C, precisamente el lenguaje que vamos a utilizar en este proyecto. La regin de la memoria de datos puedes ser usada para: Evaluaciones computacionales intermedias. Variables locales de subrutinas. Cambio de contexto de las variables ms rpido. Variables comunes. Evaluacin o control ms rpido de los registros de funciones especiales.

3.5.5 Registro de estado El registro de estado contiene el resultado de las operaciones aritmticas de la ALU. Consta de 5 bits que indican: N, si el ltimo resultado fue negativo; OV, si se produjo un desbordamiento; Z, si el resultado de la ltima operacin fue 0 y 2 bits ms de acarreo de borrado.

Sistema de desarrollo PIC18F452

Captulo 3

3.6 Memoria de programa FLASH


La memoria de programa FLASH puede ser leda, escrita o borrada durante una operacin normal. La lectura puede ser hecha de byte en byte, sin embargo la escritura debe ser en bloques de 8 bytes y el borrado en bloques de 64 bytes al mismo tiempo. Para leer y escribir en la memoria de programa existen dos operaciones que permiten al procesador mover bytes del espacio de memoria de programa a la RAM de datos, stas son TBLRD y TBLWT. La memoria de programa tiene un ancho de 16 bits, mientras que la de datos tiene un ancho de 8; para solucionarlo el traspaso de datos se hace a travs de un registro de 8 bits (TABLAT). Existen tambin 4 registros de control que son usados conjuntamente con las instrucciones anteriores: EECON1: es un registro de control para el acceso a memoria. EECON2: no es un registro fsico, si se lee se obtendr todo 0. Se usa exclusivamente para las secuencias de escritura y borrado. TABLAT, como antes se dijo es un registro de 8 bits para la transferencia de datos entre memoria de programa y memoria de datos. TBLPTR: es el registro de puntero a tabla. Est formado por tres registros de funciones especiales, los cuales al unirse forman un puntero de 22 bits de ancho. Los primeros 21 bits sirven para direccionar los 2 MBytes del espacio de memoria de programa y el bit 22 permite el acceso al identificador del dispositivo, al identificador de usuario y a los bits de configuracin.

Por ltimo, comentar que tanto la lectura como la escritura y el borrado de la memoria flash requiere de una secuencia de instrucciones en lenguaje ensamblador, que en C es considerablemente ms reducida.

3.7 Memoria de datos EEPROM


La memoria de datos EEPROM puede ser leda, escrita o borrada durante una operacin normal. Hay cuatro registros de funciones especiales para leer y escribir datos y programa en la memoria EEPROM. EECON1: es un registro de control para el acceso a memoria. EECON2: no es un registro fsico, si se lee se obtendr todo 0. Se usa exclusivamente para las secuencias de escritura y borrado. EEDATA: es un registro que sostiene ocho bits de datos durante la escritura y la lectura. Esta memoria permite leer y escribir de byte en byte. EEADR: mientras EEDATA mantiene el dato de ocho bits este registro mantiene la direccin de la EEPROM a la cual se est accediendo. Puede direccionar hasta 256 bytes de la memoria de datos EEPROM.

Sistema de desarrollo PIC18F452

Captulo 3

Los bits de control RD y WR inician las operaciones de lectura y escritura respectivamente. Estos bits no pueden ser puestos a 0, slo es posible ponerlos a 1 por software, y ser el hardware quien los ponga a 0 cuando la operacin termine. De esta manera se previenen interrupciones en los procesos de lectura o escritura. 3.7.1 Lectura de la memoria de datos EEPROM Para leer una zona de la memoria EEPROM se debe primero escribir la direccin en el registro EEADR, luego poner a 0 los bits EEPGD y CFGS (bits sptimo y sexto del registro EECON1 respectivamente) y por ltimo poner a 1 el bit de control RD. El dato estar disponible en el siguiente ciclo de instruccin. 3.7.1 Escritura de la memoria de datos EEPROM Para una escritura ser algo similar, primero se debe escribir la direccin en el registro EEADR y el dato a escribir en EEDATA, luego habr que seguir una secuencia de operaciones. sta consiste primero en deshabilitar las interrupciones, luego escribir 55h en EECON2, tras esto escribir AAh en EECON2 y por ltimo poner el bit de control WR a 1. Adems es necesario que el bit WREN del registro EECON1 est a 1 para permitir las escrituras. De este modo se evitan escrituras accidentales.

3.8 Multiplicador hardware de 8 x 8


La ALU del 18F452 incluye un multiplicador hardware, de esta forma una operacin de multiplicacin puede ser completada en tan solo un ciclo de reloj. Se trata de una multiplicacin sin signo cuyo resultado es de 16 bits y que se guarda en los registros PRODH y PRODL (consultar el mapa de registros de funciones especiales).

3.9 Interrupciones
Una interrupcin consiste en una detencin del programa en curso para realizar una determinada rutina que atienda la causa que ha provocado la interrupcin. Es como una llamada a subrutina, que se origina por otra causa que no es una instruccin del tipo CALL (instruccin en ensamblador para llamar a subrutinas). Tras la terminacin de la rutina de interrupcin se retorna al programa principal en el punto en que se abandon. Las causas que originan una interrupcin pueden ser externas, como la activacin de un pin con el nivel lgico apropiado, e internas, como las que pueden producirse al desbordarse un temporizador, como el TIMER 0. En las aplicaciones industriales, las interrupciones son un producto muy potente para atender los acontecimientos fsicos en tiempo real. Las interrupciones evitan que la UCP explore continuamente el nivel lgico de un puerto o el valor de un contador. Los PIC18FXXX tienen mltiples fuentes de interrupcin y prioridades. Existen diez registros para controlar las operaciones de interrupcin, estos son: RCON: el bit sptimo de este registro se encarga de habilitar las prioridades en las interrupciones.

Sistema de desarrollo PIC18F452

Captulo 3

INTCON, INTCON2, INTCON3: registros de lectura y escritura que contienen bits de enable, de prioridad y banderas. PIR1, PIR2: estos dos registros contienen bits de bandera individual para las interrupciones de perifricos. PIE1, PIE2: contienen los bit habilitadores individuales para las interrupciones de perifricos IPR1, IPR2: contiene los bits de prioridad individuales para las interrupciones de perifricos.

Cada causa de interrupcin, excepto INT0, esta controlada mediante tres bits. Uno de ellos acta como una bandera de sealizacin que indica si se ha producido o no el acontecimiento, otro es el permiso o prohibicin de la interrupcin y el ltimo indica baja o alta prioridad de la interrupcin. Cuando una interrupcin es atendida, el GIE (Habilitador global de Interrupciones) es desactivado para evitar que se produzca otra interrupcin al mismo tiempo, volviendo a activarse al salir de la subrutina. La direccin de retorno es puesta en la pila y en el contador de programa se carga la direccin de vector de interrupcin (000008h 000018h dependiendo del nivel de prioridad). En la figura siguiente se ofrece el esquema, compuesto de puertas lgicas, que controla la generacin de la interrupcin cuando aparece un nivel alto en su lnea INT de salida.

Figura 11. Lgica de control para la generacin de la interrupcin

Sistema de desarrollo PIC18F452

Captulo 3

3.10 Puertos de entrada y salida


Las patitas de comunicacin de los microcontroladores se agrupan en conjuntos llamados puertos porque dejan entrar y salir la informacin al procesador. Algunos pines de entrada salida estn multiplexados con una funcin alternativa de algn perifrico. Cuantos ms perifricos posea el modelo, ms lneas de comunicacin con ms multiplexado de seales exige. En general, cuando un perifrico est activado, el pin correspondiente no puede ser usado como pin de propsito general. En los 18FXX2 existen 5 puertos, y cada uno consta de 8 pines (excepto el puerto A que tiene 7 y el puerto E que tan solo tiene tres). En total el dispositivo tiene 40 patas, que sirven para dar entrada y salida a los convertidores analgico digital, a los comparadores, a las comunicaciones paralelo, serie, a los temporizadores... adems de servir como pines de propsito general. Cada puerto tiene tres registros para su manejo, los cuales son: TRIS, registro de direccin de los datos. PORT, lee el nivel en los pines del dispositivo. LAT, latch de salida.

3.10.1 Puerto A Se trata de un puerto bidireccional de 7 bits. Dependiendo del valor en TRISA se comportarn como entrada o salidas. Al leer el registro PORTA se obtiene el estado de los pines. El pin RA4 es multiplexado con la entrada de reloj del TIMER 0, el resto de pines del puerto tiene niveles de entrada TTL y manejadores de salida CMOS. Estos pines, adems, estn multiplexados con entradas analgicas y las entradas de referencia Vref + y Vref -. El modo de operacin de cada puerto es seleccionado mediante la puesta a 0 o a 1 del registro ADCON1. 3.10.2 Puerto B Registro bidireccional de anchura 8 bits. TRISB y PORTB tienen el mismo cometido que en el puerto A. Hay que anotar que tras un reset estos pines son configurados como entradas digitales. Cuatro de los pines del puerto B, RB4:RB7, pueden ser fuente de interrupcin cuando cambia el valor que tienen a la entrada. Slo si estn configurados como entradas es posible que acten de esta forma. RB0:RB2 pueden ser (si se configuran de tal modo) fuente de interrupcin externa. El pin RB3 puede ser configurado mediante el pin de configuracin CCP2MX como pin perifrico alternativo para el mdulo de comparacin CCP2. 3.10.3 Puerto C Es un puerto bidireccional de 8 bits, cada patita acta como entrada o salida digital, segn la programacin de TRISC. Adems, tambin puede actuar como entrada o salida

Sistema de desarrollo PIC18F452

Captulo 3

de diversos perifricos internos, debindose tener cuidado en la configuracin del registro TRISC en este caso. Para informacin ms detallada se puede consultar la pgina 19 de esta memoria o mirar el data sheet del dispositivo. 3.11.4 Puerto D De nuevo se trata de un registro de 8 bits de anchura, con los correspondientes registros TRISD y PORTD. Adems de cmo puertos de entrada salida digitales, tambin puede funcionar como Puerto Paralelo Esclavo para soportar la interconexin directa con el bus de datos de 8 bits de otro microprocesador. En este caso los buffer de entrada son TTL. Para funcionar en este modo hay que poner a 1 el bit 4 (PSMODE) de TRISE. En tal caso, las lneas RE <2:0> del Puerto E pasan a soportar las seales de control CS, WR y RD, entre el Puerto D y el bus del microprocesador. Cada vez que el microprocesador realiza un ciclo de lectura o escritura sobre el Puerto D el bit 7 (PSPIF) del registro PIR1 se pone a 1. 3.10.5 Puerto E Este puerto, que slo dispone de tres patitas, se configura como entradas digitales tras un RESET. Las 3 patitas pueden funcionar como E/S digitales, segn la programacin de los tres bits menos significativos del registro TRISE. Tambin pueden actuar como seales de control (RD, WR y CS) para el flujo de datos entre un microprocesador y el Puerto D, cuando esta programada en el modo Esclavo. Deben programarse como entradas en este caso. Finalmente, tambin pueden realizar estos tres pines la funcin de canal de entrada analgica para el Conversor A/D, segn la programacin del registro ADCON1.

3.11 Temporizadores
3.11.1 TMR0 El primer temporizador tiene las siguientes caractersticas: Contador temporizador de 8 o 16 bits (seleccionable por software). Posibilidad de lectura y escritura. Prescaler de 8 bits programable por software slo para este temporizador. Fuente de reloj externa o interna segn se elija. Interrupcin en el desbordamiento. Registro T0CON para controlar todos los aspectos, incluido el prescaler.

Este temporizador, por ser el principal y el resto bastante similares a l, lo explicaremos ms detalladamente. En la siguiente figura se muestra los distintos bits y sus funciones del registro T0CON:

Sistema de desarrollo PIC18F452

Captulo 3

Figura 12. Bits del registro T0CON

El temporizador 0 puede actuar como temporizador o contador. Si funciona como temporizador (poniendo a 0 el bit T0CS) el registro aumentar una unidad con cada ciclo de instruccin. Si funciona como contador (un 1 en el bit T0CS), el registro aumentar con cada subida o bajada del pin RA4/T0CKI. Este aumento ser producido con el flanco de bajada o de subida segn se programe en el bit T0SE. Los registros que guardan el valor del contador son TMR0L y TMR0H para el byte menos significativo y el ms significativo respectivamente. Como se dio a conocer en las caractersticas, se dispone de un contador de 8 bits que hace las veces de prescaler. En este contador no podemos escribir, ni podemos leer de l. El bit PSA determina, si se pone a 0, que se va a utilizar el prescaler y mediante los bits PS0:PS2 se le asigna un valor entre 0 y 256. La interrupcin del temporizador 0 ocurre cuando el contador se desborda, ya sea desde 00h hasta FFh en modo de 8 bits, o de FFFFh hasta 0000h en modo 16 bits. Este desbordamiento pone a 1 el bit TMR0IF, a no ser que se enmascare mediante la puesta a 0 del bit TMR0IE.

Sistema de desarrollo PIC18F452

Captulo 3

3.11.2 Temporizador TMR1 El temporizador 1 posee las siguientes caractersticas: Contador temporizador de 16 bits (implementado con 2 registros llamados TMR1H y TMR1L). Posibilidad de lectura y escritura. Seleccin de reloj externo o interno. Interrupcin en el desbordamiento. Posibilidad de RESET desde el mdulo CCP. Registro T1CON para controlar el temporizador.

Este temporizador puede funcionar como temporizador y como contador externo e interno. El modo de operacin se determina mediante el bit TMR1CS del registro T1CON, si ste vale 0 el temporizador aumentar con cada ciclo de instruccin, si por el contrario vale 1 aumentar con cada flanco de subida del reloj externo o del oscilador interno que posee este temporizador (se activa con el bit T1OSCEN). Cuando este oscilador es habilitado los pines del dispositivo RC1/T1OSI y RC0/T1OSO/T1CKI pasan a ser entradas directamente. Respecto a la interrupcin, cuando se produce el desbordamiento y la interrupcin est habilitada (bit TMR1IE a 1), se pone a uno la bandera TMR1IF para indicar que el contador ha llegado a FFFFh. 3.11.3 Temporizador TMR2 Este temporizador, el tercero del microcontrolador, tiene las caractersticas siguientes: Contador de 8 bits (registro TMR2). Registro peridico de 8 bits (registro PR2). Se puede leer y escribir. Prescaler programable (1:1, 1:4 y 1:16 mediante dos bits del registro T2CON). Postscaler programable (1:1 hasta 1:16 mediante cuatro bits del mismo registro). Interrupcin en la coincidencia de TMR2 y PR2. Registro de control T2CON. Posibilidad de ser usado como tiempo base para PWM (modulacin de anchura de pulsos).

Sistema de desarrollo PIC18F452

Captulo 3

Para minimizar el consumo, este contador puede ser apagado o encendido mediante el bit TMR2ON del registro T2CON. Este temporizador ser el que utilizaremos en la aplicacin del proyecto, principalmente por la utilidad de poder generar una interrupcin mediante contadores internos y pasados tantos ciclos de instruccin como uno desee. Veamos un esquema funcional:

Figura 13. Diagrama de bloques del temporizador 2.

El temporizador 2 puede ser utilizado como tiempo base para los perifricos de modulacin de anchura de pulsos o el de captura y comparacin. El reloj de entrada tiene una frecuencia que es la cuarta parte de la del oscilador y tiene, como se nombr antes, la posibilidad de utilizar un prescaler al principio y un postscaler tras la comparacin con PR2. El contador del temporizador cuenta hasta que su valor coincide con el de PR2, en ese momento se resetea y empieza la cuenta de nuevo. Luego tras pasar por el postscaler se producir una interrupcin si sta est habilitada. PR2 es lgicamente un registro en el que est permitida la lectura y la escritura. Vemos el registro de control de este temporizador:

Figura 14. Bits del registro de control del TIMER 2

Sistema de desarrollo PIC18F452

Captulo 3

3.11.4 Temporizador TMR3 A continuacin estn las caractersticas de este ltimo temporizador: Contador temporizador de 16 bits (dos registros de 8 bits llamados TM3H y TMR3L para el byte alto y el bajo respectivamente). De lectura y escritura. Reloj interno o externo seleccionable. Interrupcin en el desbordamiento. Registro para el control del Timer3 T3CON.

Este temporizador tiene un funcionamiento totalmente igual al Timer1, para ms informacin consultar el Data Sheet.

3.12 Mdulos de captura/comparacin/modulacin de anchura de pulsos CCP


Los microcontroladores PIC18FXX2 disponen de dos de estos mdulos, llamados CCP1 y CCP2, que se controlan con los registros CCP1CON y CCP2CON, respectivamente. Posee cada uno de ellos un registro de 16 bits y realizan tres funciones: Capturar informacin de 16 bits procedente del TMR1 o TMR3. Comparar el valor de un registro con el del TMR1 o TMR3 (16 bits). Modular o controlar el intervalo de tiempo en el que bascula de 1 a 0 un pin del microcontrolador.

Los mdulos CCP1 y CCP2 son idnticos, excepto en ciertas funciones especiales de disparo. Ambos constan de dos registros CCPRxH y CCPRxL. 3.12.1 Modo de Captura En este modo el registro CCPRxH/L de 16 bits captura el valor contenido en el TMR1 o TMR3, siempre que ocurra uno de los siguientes acontecimientos en la pata Rcy/CCPx del Puerto C, que previamente ha tenido que configurarse como entrada en el registro TRISC: Un flanco ascendente. Un flanco descendente. Cada 4 flancos ascendentes. Cada 16 flancos ascendentes.

Sistema de desarrollo PIC18F452

Captulo 3

Al realizarse una captura se activa la bandera CCPxIF del registro PIR1 o PIR2 y si se programa adecuadamente el bit de permiso en PIE1 o PIE2, se genera una interrupcin. Ya se puede leer el valor del registro CCPRx. Cuando se produce una captura y no se ha ledo el contenido de CCPRx se borra y pasa a contener el nuevo. Si se van a modificar las condiciones en las que se va a efectuar la captura conviene detener o desactivar el modulo CCP para que no se produzcan falsas interrupciones durante la operacin. Una aplicacin del modo de Captura puede ser la medicin de los intervalos de tiempo que existen entre los impulsos que llegan a la pata Rcy/CCPx configurada como entrada. En este modo de trabajo TMR1 debe usarse como entrada de reloj externo sincronizado. 3.12.2 Modo de Comparacin Cuando un modulo CCP trabaja de esta manera el contenido del registro CCPRxH/L se compara continuamente con el del TMR1 o TMR3, que debe trabajar en modo sncrono. Cuando coinciden ambos valores la patita RC2/CCP1 (RC1/CCP2), que previamente se habr configurado como salida, puede bascular a 1, a 0, o bien no variar (dependiendo de los bits CCP1M3:CCP1M0 (CCP2M3:CCP2M0)), pero se activar el sealizador CCPxIF. En tal caso, si el bit de permiso esta activado se provoca una interrupcin. Si se selecciona la funcin especial de disparo, el CCP1 pone a 0 al TMR1 con lo que CCPR1 funciona como un registro de periodos capaz de provocar interrupciones peridicamente. Tambin el CCP1 o CCP2 pone a 0 el TMR1 o el TMR3 y por ltimo CCP2 inicia una conversin en el Convertidor A/D, con lo que se pueden realizar peridicamente conversiones de analgico-digitales, sin el control del programa de instrucciones. 3.12.3 Modo de modulacin de Anchura de Pulsos (PWM) En este modo CCP1 produce una salida en modulacin de anchura de pulsos de hasta 10 bits de resolucin. Antes, el segundo bit de TRISC se debe poner a 0 para configurar el pin RC2/CCP1 como salida. Una salida PWM tiene un periodo base y un periodo en el cual la salida est a nivel alto. El periodo base se especifica mediante el registro PR2 y se puede calcular mediante la frmula: Periodo base = (PR2+1) 4 TOSC Prescaler TMR2 Cuando el valor de registro PR2 coincide con TMR2 ocurren los siguientes tres eventos: TMR2 es puesto a 0. El pin CCP1 es puesto a 1. El periodo a nivel alto es latcheado de CCPR1L a CCPR1H.

Sistema de desarrollo PIC18F452

Captulo 3

El periodo a nivel alto se especifica escribiendo en el registro CCPR1L (los 8 bits ms significativos) y en los bits cuarto y quinto del registro CCP1CON (los dos bits menos significativos). La siguiente ecuacin nos calcula el tiempo de este periodo: Tiempo a nivel alto = (CCPR1L:CCP1CON<5:4>) TOSC (TMR2 Preescaler) La figura 15 representa cualquiera de los registros CCP1CON o CCP2CON. Los bits 4 y 5 funcionan solamente en el modo PWM y son los dos bits de menos peso cuando se trabaja con una resolucin de 10 bits. CCPxM3:CCPxM0 seleccionan el modo de trabajo.

Figura 15. Registro CPPxCON

3.13 Conversor Analgico Digital


El mdulo de conversin Analgico/Digital dispone de ocho entradas y permite conversiones de la entrada analgica de 10 bits. Este mdulo de A/D tiene cuatro registros que son: ADRESH, ADRESL, ADCON0 y ADCON1. ADCON0 controla las operaciones del mdulo y ADCON1 configura las funciones de los pines del puerto. El voltaje de referencia se puede seleccionar por software, teniendo como posibilidad la eleccin entre Vdd y Vss o la entrada por de los pines RA3/AN3/VREF+ pin y RA2/AN2/VREF-. El convertidor A/D tiene la caracterstica especial de que puede funcionar mientras el microcontrolador est en modo SLEEP. La salida del sample and hold es la entrada del convertidor, que genera el resultado por aproximaciones sucesivas. Un RESET del dispositivo fuerza a todos los registros a su estado de RESET. Esto hace que el convertidor se apague y cualquier conversin sea suspendida.

Sistema de desarrollo PIC18F452

Captulo 3

Cada puerto asociado al convertidor puede ser configurado como entrada analgica o como entrada salida digital (RA3 tambin puede ser voltaje de referencia). Los registros ADRESH y ADRESL guardan el resultado del convertidor. Cuando una conversin es completada, tras guardarse el valor en los registros anteriores, el bit GO/DONE (ADCON0<2>) es puesto a 0 y el bit de interrupcin ADIF es puesto a 1. En la siguiente figura est el diagrama de bloques de este mdulo:

Figura 16. Diagrama de bloques del convertidor A/D

Para hacer una conversin se deben seguir los siguientes pasos: Configurar el mdulo analgico digital. Configurar los pines analgicos, el voltaje de referencia y los pines de entrada salida digital (ADCON1). Seleccionar el canal de entrada (ADCON0). Seleccionar el reloj de conversin. Encender el mdulo. Configurar la interrupcin. Poner a 0 el bit ADI. Poner a 1 el bit ADIE. Poner a 1 los bit GIE y PEIE.

Esperar el tiempo de adquisicin requerido. Empezar la conversin (poner a 1 el bit GO/DONE de ADCON0).

Sistema de desarrollo PIC18F452

Captulo 3

Esperar que la conversin se complete o la interrupcin suceda. Leer el resultado de los registros ADRESH y ADRESL y poner el bit ADIF a 0 si es necesario. Es necesario esperar dos veces el tiempo por bit (definido como TAD) antes de realizar otra conversin.

La conversin A/D requiere de 12 TAD por cada conversin de 10 bits. La fuente del reloj de la conversin se puede seleccionar por software y existen siete opciones posibles que van desde dos hasta sesenta y cuatro veces el periodo del oscilador en potencias de dos. Para una conversin correcta se debe asegurar un TAD de al menos 1.6 s. En el Data Sheet del microcontrolador se puede encontrar una informacin ms extensa sobre este mdulo, que aqu no merece la pena ser incluida.

3.14 Puerto serie sncrono (SSP)


Se trata de un perifrico diseado para soportar una interfaz serie sncrono que resulta muy eficiente para la comunicacin del microcontrolador con dispositivos tales como displays, EEPROM, ADC, etc. Tiene dos modos de trabajo: 1. Interfaz Serie de Perifricos (SPI) 2. Interfaz Inter-Circuitos (I2C) Este mdulo tiene tres registros asociados, uno de estado (SSPSTAT) y dos registros de control (SSPCON1 y SSPCON2). El uso de estos registros y los bits de configuracin individual difieren mucho dependiendo del modo de trabajo. 3.14.1 Modo SPI El modo SPI permite el envo y la recepcin de datos de 8 bits sincronizada y simultneamente. Son soportados los cuatro modos de SPI. En este modo se pueden emplear 3 o 4 seales de control: Salida de Datos (SDO), Entrada de Datos (SDI), Reloj (SCK) y Seleccin de Esclavo (SS). Dichas seales se corresponden con las patitas RC5, RC4, RC3 y RA5 respectivamente. Cada una de las seales debe programarse como entrada o salida segn su condicin, utilizando los bits de los registros TRIS. Cualquier funcin del modo SPI queda anulada poniendo con el valor opuesto a su condicin el bit correspondiente de TRIS. Por ejemplo, si slo se quiere recibir datos, se programa la patita que soporta a SDO como entrada y as se anula su funcin. Con el registro de control SSPCON se eligen las diferentes opciones de trabajo: Modo Master (SCK es salida), Modo Esclavo (SCK es entrada), tipo de flanco de reloj, velocidad de SCK en Modo Master, etc. Cuando se recibe un dato til, ste se introduce en serie en SSPSR y pasa a SSPBUF en paralelo. El dato a transmitirse deposita en SSPBUF y de aqu pasa a SSPSR. Se

Sistema de desarrollo PIC18F452

Captulo 3

puede recibir y transmitir ocho bits de datos simultneamente. SSPSR es un registro de desplazamiento que funciona serie/paralelo/serie. Cuando se acaba de transmitir o recibir un dato completo se activa el bit BF (Buffer Lleno) del registro SSPSTAT. Tambin lo hace la bandera SSPIF y si el bit de permiso esta activado se genera una interrupcin. Cuando se recibe un dato durante una transmisin se ignora y se activa el bit WCOL del registro SSPCON que indica que se ha producido una colisin. (Para ver los detalles de funcionamiento de los registro SSPSTAT y SSPCON consultar el Data Sheet del 18F452 que se puede encontrar en la pgina web de microchip.) En el caso que se reciba un nuevo dato en SSPSBUF sin haber ledo el anterior se genera un error de desbordamiento.

Figura 17. Modo SPI

3.14.2 Modo I2C Este tipo de interfaz serie ha sido desarrollado por Philips y utiliza slo dos hilos trenzados y una masa comn para la interconexin de los diversos dispositivos, que han tenido que ser diseados para soportar este protocolo, asegurando una gran fiabilidad en la comunicacin que llega a tolerar una velocidad mxima de 400 Kbps. Es capaz de interconectar hasta 128 dispositivos situados a gran distancia, por lo que resulta muy usado en edificios inteligentes, control de distribuciones de electricidad, agua y gas, piscifactoras, etc. El master es el que inicia y termina la transferencia general y provee de la seal de reloj. El esclavo es el dispositivo direccionado por el master mediante 7 bits, lo que limita el nmero de componentes a 128.

Sistema de desarrollo PIC18F452

Captulo 3

El inicio de la transmisin se determina con el bit de inicio (S) y el final con otro bit de stop (P). El bus serie de 2 hilos utiliza uno de ellos para transferir datos (SDA) y el otro para la seal de reloj (SCL). En el protocolo I2C cada dispositivo tiene asignada una direccin de 7 o de 10 bits que enva el master cuando comienza la transferencia con uno de ellos. Tras la direccin se aade el bit de recepcin/transmisin o lectura/escritura (R/W). Los datos se transmiten con longitud byte y al finalizar cada uno se inserta un bit de reconocimiento ACK. Debe existir un mdulo de arbitraje que gestione que slo hay un maestro en cada instante sobre el bus compartido. La figura muestra un esquema interno de funcionamiento del interfaz I2C.

Figura 18. Modo I2C

SSPBUF es el registro donde se almacena el byte a transmitir o el que se recibe. SSPSR es el registro desplazamiento serie de la lnea E/S. SSPADD es el registro de direcciones que identifica el dispositivo (modo esclavo) o que lo direcciona (modo master). El registro de control SSPCON selecciona las diversas funciones del modo I2C. Cada vez que se detecta un bit de inicio o un bit de stop es posible que se active la bandera SSPIF y en el caso de estar tambin activado el bit de permiso correspondiente generar una interrupcin.

3.15 Interfaz de comunicaciones serie (USART-SCI)


El mdulo transmisor receptor sncrono asncrono universal (USART) es uno de los dos mdulos de entrada salida serie. Se puede configurar de dos modo diferentes:

Sistema de desarrollo PIC18F452

Captulo 3

Asncrono (full-duplex) Para comunicacin bidireccional. La pata RC6/Tx/CK acta como lnea de transmisin y RC7/Rx/DT acta como recepcin. Cada dato lleva un bit de inicio y otro de stop. Sncrono (semiduplex) Comunicacin unidireccional. Una sola lnea para los datos que se implementan sobre la patita RC7/Rx/DT. Existen dos modos, en el modo master la seal de reloj sale por la patita RC6/Tx/CK y en el modo esclavo entra por ella. En ambos modo los datos pueden ser de 8 o 9 bits, pudiendo emplear el noveno como bit de paridad, transmitindose o recibindose por el bit <0> de RXSTA y/o RCSTA. El registro especfico TXSTA acta como registro de estado y control del transmisor y el RCSTA hace lo mismo para el receptor. La velocidad en baudios se establecen por el valor cargado en el registro SPBRG y el bit BRGH del registro TXSTA, con el que se puede elegir la velocidad alta (1) o baja (0) en el modo asncrono. BAUDIOS = FOSC / (n(x + 1)) n = 4 en el modo sncrono n = 16 en el modo asncrono de alta velocidad n = 64 en el modo asncrono de baja velocidad x = valor cargado en el registro SPBRG (0 a 255) y siendo x = (FOSC / Baudios) / (n 1)

Mediante la programacin de los bits del registro TXSTA y RCSTA se configura el modo de trabajo. As, SPEN configura RC7/Rx y RC6/Tx como lneas de comunicacin serie. El transmisor se activa con el bit TxEN. El dato a transmitir se carga en TxREG y luego pasa al registro transmisor TSR, cuando se haya transmitido el bit de stop del dato anterior. Entonces se activa la bandera TxIF y si el bit de permiso esta activado se produce una interrupcin. Activando Tx8/9 se inserta el noveno bit almacenado en el bit <0> (TxD8) de TXSTA. El bit TRMT indica si el transmisor esta vaco o no. El dato se recibe por RSR y cuando se completa se pasa al registro RCREG para su posterior lectura, activndose la bandera RCIF y si acaso la interrupcin. Si se activa el bit RC8/9del RCSTA el noveno bit se deposita en el bit <0> (RCD8) del RCSTA. Los bits OERR y FERR indican error de desbordamiento y de trama, respectivamente.

Sistema de desarrollo PIC18F452

Captulo 3

En la figura 19 se ofrece la asignacin de funciones de los bits de los registros TXSTA y RCSTA que gobiernan al receptor y transmisor asncronos, respectivamente. En modo sncrono el SCI trabaja en half duplex, no pudiendo emitir y transmitir a la vez. La seal de reloj la enva el transmisor (maestro) conjuntamente con los datos. Los principios y el funcionamiento de la emisin y la recepcin sncronas son similares al modo asncrono y nicamente hay que seleccionar esta forma de trabajo cargando adecuadamente los registros TXSTA y RCSTA.

Figura 19. Registro TXSTA

La figura superior muestra el registro TXSTA donde el bit 7, CSRC, es el bit de seleccin de reloj siendo solo importante en el modo sncrono donde se elige entre maestro o esclavo. El bit 6 habilita la transmisin de 8 o 9 bits, en general, es TXEN, quien habilita la transmisin. El bit SYNC selecciona el modo USART entre sncrono y asncrono. Finalmente BRGH selecciona si el rango de baudios ser de baja o alta velocidad en el modo asncrono, TRMT es el bit de estado del registro de desplazamiento del transmisor y TX9D es el noveno bit de datos de transmisin. Se puede emplear como bit de paridad. La figura de la pgina siguiente muestra el registro RCSTA donde el bit 7, SPEN, es el bit de habilitacin del puerto serie. El bit 6 habilita la recepcin de 8 o 9 bits y SREN,

Sistema de desarrollo PIC18F452

Captulo 3

bit 5, habilita la recepcin nica y CREN, bit 4, la recepcin continua. Los bits 1 y 2 son bits de error y finalmente, RX9D es el noveno bit de datos de recepcin.

Figura 20. Registro RXSTA

3.16 Deteccin de bajo voltaje


En muchas aplicaciones el poder determinar si la alimentacin del dispositivo est por debajo de un cierto valor puede ser muy interesante. Este mdulo tiene una circuitera programable por software donde puede ser programado un umbral de alimentacin. Cuando VDD pasa a ser menor que ese umbral salta una interrupcin (si sta ha sido habilitada previamente) y se pasara a ejecutar el cdigo oportuno. De este modo se pueden realizar tareas de salvaguarda antes de que alimentacin sea menor que el mnimo voltaje para que el microcontrolador pueda operar. Este mdulo tiene su registro de control de 8 bits llamado LVDCON. Posee un bit para indicar que se produzca la interrupcin o no, otro para habilitar el mdulo y 4 bits para indicar dentro del rango 2v 4.77v donde se quiere situar el umbral. Si los cuatros bits se establecen a 1111 indicar que la referencia es externa y llega por el pin RA5/AN4/SS/LVDIN del integrado.

Sistema de desarrollo PIC18F452

Captulo 3

Si est habilitado, el mdulo de deteccin de bajo voltaje seguir funcionando aunque el dispositivo est en modo SLEEP. Si se produce la interrupcin despertar y se atender la interrupcin.

3.17 Caractersticas especiales de la CPU del PIC 18F452


3.17.1 Bits de configuracin Los bits de configuracin pueden ser programados para seleccionar distintas configuraciones del dispositivo. Estos bits estn mapeados a partir de la direccin 30000h de la memoria de programa. En realidad esta direccin est detrs de la memoria de programa, en un espacio llamado de memoria de configuracin, al cual slo se puede acceder mediante las tablas de lectura y escritura. La forma de programarlos es similar a la de la memoria Flash, con la diferencia de que aqu slo se puede hacer byte a byte. Para ms informacin sobre estos bits se puede consultar el data sheet del dispositivo (www.microchip.com). 3.17.2 Perro guardin (WDT) El Perro guardin vigila que el programa no se "cuelgue" y dejen de ejecutarse las instrucciones secuenciales del mismo tal como lo ha previsto el diseador. Para realizar esta labor, observa la CPU cada cierto tiempo y comprueba si el programa se ejecuta normalmente; en caso negativo, el perro fuerza un reset, reinicializando todo el sistema. No es ms que un temporizador controlado por un oscilador RC interno independiente y que no requiere de ningn componente externo. En modo normal genera un reset cuando se desborda y si el microcontrolador est en modo SLEEP provoca que se despierte. El perro guardin es habilitado y deshabilitado mediante un bit de configuracin del dispositivo. Si est habilitado no ser posible deshabilitarlo por software. Posee un registro de control, WDTCON, que tiene un bit que permite el funcionamiento del mdulo cuando el bit de configuracin est a 0 (deshabilitado). 3.17.3 Modo SLEEP Este modo de funcionamiento se trata de una utilidad ms del microcontrolador que permite reducir el consumo cuando no se est realizando ninguna tarea y simplemente se est esperando una interrupcin para empezar a ejecutar cdigo. El dispositivo se mantiene dormido y slo se despertar tras una interrupcin o un RESET. Para entrar en modo SLEEP simplemente hay que ejecutar la instruccin sleep del juego de instrucciones del procesador. Si se habilita, el perro guardin se pondr a cero, aunque seguir funcionando, el manejador del oscilador se apaga y los pines de entrada salida mantienen el valor que tena.

Sistema de desarrollo PIC18F452

Captulo 3

El dispositivo slo despertar si: Se produce un RESET externo en el pin MCLR. Se desborda el perro guardin y ste estaba habilitado. Se produce una interrupcin por el pin INT, o por un cambio en el valor de los pines del puerto B o por un perifrico.

3.17.4 Proteccin de cdigo y verificacin de programa Toda la estructura de proteccin de cdigo de la familia 18 de microchip tiene diferencias significativas con el resto de familias. La memoria de programa de usuario est dividida en cinco bloques. Uno de ellos es un bloque de arranque de 512 bytes. Cada uno de estos cinco bloques tiene tres bits de proteccin de cdigo asociados, que son: Bit protector de cdigo (CPn). Bit protector de escritura (WRTn). Bit de lectura de tabla de bloque externo (EBTRn).

En modo usuario los bits CPn inhiben las lecturas y escrituras externas. Un bloque de memoria de usuario puede ser protegido de las tablas de escritura mediante la puesta a 0 del correspondiente bit WRT. Los bits EBTRn controlan las tablas de lectura permitiendo, si est a 0, una lectura proveniente de dentro. Si es externa leer todo ceros. 3.17.5 Programacin serie en placa Los PICs 18FXXX pueden ser programados mediante un protocolo en serie sin necesidad de retirarlos de la placa. Simplemente es necesario conectar cinco pines: un reloj, un canal de datos, la tierra, tensin para el funcionamiento normal y una tensin de programacin. Esto permite, por ejemplo, crear placas de propsito general que sern programadas posteriormente o tener actualizado un diseo con el ltimo firmware.

Das könnte Ihnen auch gefallen