Está en la página 1de 45

1

A. Microcontrolador PIC 18F4550


A.1. Arquitectura Harvard
El trmino arquitectura Harvard, proviene del computador Harvard Mark I, se encarga de almacenar instrucciones en cinta perforada y los datos en interrupciones. Es la misma arquitectura de los computadores, posee dispositivos de almacenamiento que se encuentran separados fsicamente para los datos y las instrucciones. Las partes principales de las computadores es la memoria y la CPU, la primera guarda los datos y la SPU los procesa. A travs de la memoria no solo se pueden manejar los datos sino tambin el lugar donde se encuentran almacenados, estos dos parmetros son de mucha importancia para la CPU. El microcontrolador PIC 18F4550 dispone de diferentes buses para el acceso a Memoria de Programa y Memoria de Datos (arquitectura Harvard): Bus de Memoria de programa: 21 lneas de direccin; 16/8 lneas de datos (16 lneas para instrucciones / 8 lneas para datos). Bus de Memoria de Datos: 12 lneas de direccin; 8 lneas de datos. Esto permite acceder simultneamente a la memoria de programa y a la memoria de datos. Es decir se puede ejecutar una instruccin (lo que por lo general requiere acceso a memoria de datos) mientras se lee de la memoria de programa la siguiente instruccin (proceso Pipeline). Ver Figura A.1.

Figura A.1. Esquema de Pipeline. Por lo tanto la ejecucin completa de una instruccin (lectura instruccin + ejecucin) se hace en un ciclo de instruccin (4 Tosc). Con la excepcin de las instrucciones que modifican el contenido requieren 2 ciclos de instruccin.

A.2. Organizacin de memoria


El microcontrolador PIC 18F4550 dispone de las siguientes memorias: Memoria de programa: memoria Flash interna de 32.768 bytes, almacena instrucciones y constantes / datos, puede ser escrita/leda mediante un programador externo o durante la ejecucin de un programa mediante punteros; Memoria RAM de datos: memoria SRAM interna de 2048 bytes en la que estn incluidos los registros de funcin especial, almacena datos de forma temporal durante la ejecucin del programa, puede ser escrita / leda en tiempo de ejecucin mediante diversas instrucciones; Memoria EEPROM de datos: memoria no voltil de 256 bytes, almacena datos que deben conservar aun en ausencia de tensin de alimentacin, puede ser escrita/leda en tiempo de ejecucin a travs de registros; Pila: bloque de 31 palabras de 21 bits, almacena la direccin de la instruccin que debe ser ejecutada despus de una interrupcin o subrutina;

Memoria de configuracin: memoria en la que se incluyen los bits de configuracin (12 bytes de memoria Flash) y los registros de identificacin (2 bytes de memoria de solo lectura).

A.2.1. Memoria de programa


El microcontrolador PIC 18F4550 dispone de una memoria de programa de 32.768 bytes (0000H a 7FFFH). Las instrucciones ocupan 2 bytes, excepto CALL, MOVFF, GOTO, LSFR que ocupan 4; por lo tanto la memoria de programa pueden almacenar hasta 16.384 instrucciones. Ver Figura A.2.

Figura A.2. Distribucin de la memoria en PIC 18F4550. La operacin de lectura en posicin de memoria por encima de 7FFFH da cero como resultado, equivalente a la instruccin NOP. Las direcciones especiales de la memoria de programa son: Vectorizacin del Reset en 0000H; Vectorizacin de las interrupciones de alta prioridad es la 0008H;

Vectorizacin de las interrupciones de baja prioridad es la 0018H.

A.2.2. Memoria RAM de datos


El microcontrolador dispone de una memoria RAM de datos 2.048 bytes (8 bancos de 256 bytes). Adems dispone de 160 bytes dedicados a los registros de funciones especiales (SFRs) situados en la parte alta del banco 15. Ver Figura A. 3.

Figura A.3. Distribucin memoria RAM de PIC 18F4550. Para acceder a un byte de la memoria RAM de datos primero debe seleccionarse el banco al que pertenece el byte mediante el registro de seleccin de banco (BRS) y a continuacin direccionar el byte dentro del banco. Adems existe una modalidad de acceso rpido de 96 posiciones de la parte baja del

banco 0 a los 160 bytes de SFRs (banco de acceso rpido). Los bancos 4, 5, 6 y 7 se utilizan tambin para el USB.

A.2.3. Memoria EEPROM de datos


El microcontrolador PIC 18F4550 dispone de una memoria EEPROM de datos de 256 bytes. Al ser una memoria no voltil los datos almacenados en ella se mantienen aun en ausencia de tensin de alimentacin. El acceso a esta memoria se realiza mediante los SFR (EECON1, EECON2, EEDATA, EEADR). Esta memoria permite hasta 1.000.000 de ciclos de borrado/escritura. Se puede leer y escribir de forma individual en cada una de las 256 posiciones de memoria. Cuando se realiza una operacin de escritura la circuitera interna del microcontrolador se encarga de borrar previamente la posicin en la que se desea escribir. La duracin de un ciclo completo de borrado/escritura de un byte en la memoria EEPROM suele ser de unos 4 [mS]. Un problema bastante comn en las memorias EEPROM es la corrupcin de los datos almacenados debido a operaciones de escrituras indeseadas. Para evitar este tipo de situaciones durante la inicializacin del microcontrolador ( Power up, Reset) la operacin de escritura queda deshabilitada.

A.2.4. Pila

La Pila es un bloque de memoria RAM independiente de 31 palabras de 21 bits que sirve para almacenar temporalmente el valor del PC cuando se produce una llamada a subrutina o una interrupcin. Ver Figura A.4.

Figura A.4. Manipulacin de memoria de Pila. El puntero de Pila, contenido en el registro STKPTR, es un contador de 5 bits que indica la posicin actual del final de pila. El contenedor del final de pila es accesible mediante los registros TOSU, TOSH, TOSL. Cuando se procesa una interrupcin o se ejecutan las instrucciones, las instrucciones CALL o RCALL (el PC est apuntando a la siguiente instruccin) se incrementa el STKPR y se almacena en el final de la pila el valor del PC. Cuando se ejecutan las instrucciones RETURN, RETLW o RETFIE se copia el valor almacenado en la cima de la pila en el PC y se decrementa el STKPTR.

A.2.5. Memoria de configuracin


Se trata de un bloque de memoria situado a partir de la posicin 30000H de memoria de programa (ms all de la zona de memoria de programa de usuario).

En esta memoria de configuracin se incluyen los bits de Configuracin que estn contenidos en 12 bytes de memoria Flash permiten la configuracin de algunas opciones del microcontrolador como: Opciones del oscilador; Opciones del Reset; Opciones del Watchdog; Opciones de la circuitera de depuracin y programacin; Opciones de proteccin contra escritura de memoria de programa y memoria EEPROM de datos. Estos bits se configuran generalmente durante la programacin del microcontrolador, aunque tambin pueden ser ledos y modificados durante la ejecucin del programa. Los Registros de Identificacin son dos registros situados en las direcciones 3FFFFEH y 3FFFFFH que contienen informacin del modelo y revisin del dispositivo. Son registros de slo lectura y no pueden ser modificados por el usuario.

A.3. Sistema de interrupciones de PIC 18F4550


Dispone de 21 fuentes de interrupciones (INTCON). Se distinguen dos grupos de interrupciones: Grupo general de interrupciones y Grupo de interrupciones de perifricos. Se dispones de niveles de prioridad: Nivel alto, vectorizado en la direccin 0008H; Nivel bajo, vectorizado en la direccin 0018H.

Todas las interrupciones pueden ser programadas con cualquiera de las dos prioridades, salvo la interrupcin externa 0 (que siempre tiene alta prioridad). Adems, las interrupciones disponen de 3 bits de configuracin, excepto la interrupcin externa 0, que tiene dos: Bit de habilitacin de interrupcin: permite habilitar a nivel individual la interrupcin; Flag de interrupcin: se pone a 1 cuando se produce la condicin de interrupcin independientemente de si la interrupcin est habilitada o no. Este Flag debe ponerse a 0 por software cuando se procesa la interrupcin; Bit de prioridad de interrupcin: establece si la interrupcin es de alta o de baja prioridad, este bit no est disponible para la interrupcin externa 0.

A.4. Unidades funcionales del microcontrolador


El microcontrolador PIC 18F4550 dispone de una serie de unidades funcionales que le permiten realizar tareas especificas especializadas (conversin ADC, Transmisin / Recepcin de datos, generacin de seales digitales con temporizacin programable). Adems optimizar el rendimiento del microcontrolador ya que estas unidades trabajan en paralelo a la CPU permitiendo que sta se centre en otras tareas como procesado de datos, clculos, movimiento de datos, etc. La unidades funcionales ms importantes del PIC 18F4550 son: Puertos de E/S; Temporizadores (0 al 3); Convertidores ADC;

Unidades de Comparacin / Captura / PWM (CCP); Unidades de Comparacin / Captura / PWM mejorada (ECCP); Canal de comunicacin serie EUSART; Canal de comunicacin serie MSSP; Canal de comunicaciones serie USB; Mdulo analgico de comparacin; Canal de transmisin de datos en paralelo (SPP); Canal de comunicacin I2C.

A.4.1. Puerto de E/S


El microcontrolador dispone de cinco puertos de Entrada y Salida (E/S) que incluyen un total de 35 lneas digitales. Tabla A1. Listado de puertos del microcontrolador PIC 18F4550. Puerto PORTA PORTB PORTC PORTD PORTE Lneas de Entrada/Salida 7 lneas de Entrada / Salida 8 lneas de Entrada / Salida 6 lneas de Entrada / Salida + 2 lneas de Entrada 8 lneas de Entrada / Salida 3 lneas de Entrada / Salida + 1 lnea de Entrada

Todas las lneas digitales de E/S disponen de al menos una funcin alternativa asociada a alguna circuitera especfica del microcontrolador. Cuando una lnea trabaja en el modo alternativo no puede ser usada como lnea digital de E/S estndar.

10

Cada puerto de E/S tiene asociado tres registros: Registro TRIS: mediante este registro se configura cada una de las lneas de E/S del puerto como Entrada (bit correspondiente a 1) o como Salida (bit correspondiente a 0); Registro PORT: mediante este registro se puede leer el nivel de pin de E/S y se puede establecer el valor del Latch de salida; Registro LAT: mediante este registro se puede leer o establecer el valor del Latch de salida. El Puerto A, dispone de siete lneas de Entrada y Salida. Las funciones alternativas son: RA0: Entrada anloga (AN0) / Entrada de comparacin (C1IN-); RA1: Entrada anloga (AN1) / Entrada de comparacin (C2IN-); RA2: Entrada anloga (AN2) / Entrada de comparacin (C2IN+); RA3: Entrada anloga (AN3) / Entrada de comparacin (C2IN+); RA4:Entrada de reloj del temporizador 0 (TOCKI) / Salida de comparacin (C1OUT); RA5: Entrada anloga (AN4) / Salida de comparacin (C2OUT) / HLVDIN entrada de deteccin de tensin alta/baja; RA6: Entrada del oscilador principal (OSC2) / Salida de seal de reloj (CLK0). En el Reset de las lneas RA0, RA1, RA2, RA3 y RA5 se configuran como lneas de entrada analgicas. Para poder utilizarlas como lneas digitales de E/S hay que desactivar la funcin analgica. El Puerto B dispone de ocho lneas de Entrada y Salida. Las funciones alternativas son:

11

RB0: Entrada anloga (AN12) / Interrupcin externa 0 (INT0) / Entrada de fallo del ECCP (FLT0) / Entrada de datos del SPI (SDI) / Lnea de datos del I2C (SDA); RB1: Entrada anloga (AN10) / Interrupcin externa 1 (INT1) / Lnea de reloj del SPI (SDI) / Lnea de reloj del I2C (SDA); RB2: Entrada anloga (AN8) / Interrupcin externa 2 (INT2) / Salida de datos del USB (VCMO); RB3: Entrada anloga (AN9) / Lnea de E/S del CCP2 / Salida de datos USB (VPO); RB4: Entrada anloga (AN11) / Interrupcin por cambio en pin (KBI0) / Salida de CS del SSP (VPO); RB5: Interrupcin por cambio en pin (KBI1) / Lnea de programacin (PGM); RB6: Interrupcin por cambio en pin (KBI2) / Lnea de programacin (PGC); RB7: Interrupcin por cambio de pin (KBI3) / Lnea de programacin (PGD). Todas las lneas del Puerto B disponen de resistencias de Pull-up internas que pueden ser activadas poniendo el pin RBPU del registro INTCON2 a 0 (RPBU=1 despus de un Reset). Si una lnea del Puerto B se configura como salida de la resistencia de Pull-up correspondiente se desactiva automticamente. Por defecto, en el Reset de las lneas RB4,RB3,RB2,RB1,RB0 estn programadas como entradas analgicas. Existen dos formas de configurar estos puertos como lneas de E/S digitales: poniendo a 0 el bit PBADEN del registro de configuracin CONFIG3H o si PBADEN=1 desactivando la funcin analgica.

12

El Puerto C dispones de cinco lneas de Entrada y Salida (RC0, RC1, RC2, RC6 Y RC7) y dos lneas de solo entrada (RC4 y RC5). Las funciones alternativas son: RC0: Salida del oscilador del temporizador 1 (T1OS0) / Entrada de controlador de los temporizadores 1 y 3 (T13CK1); RC1: Entrada del oscilador del temporizador 1 (T1OS1) / Lnea de E/S del CCP2 / Salida OE del transciever del USB (UOE); RC2: Lnea de E/S del CCP1 / Salida PWM del ECCP1 (P1A); RC4: Lnea menos del bus USB (D-) / Lnea de entrada del USB (VM); RC5: Lnea ms del bus USB (D+) / Lnea de entrada del USB (VP); RC6: Salida de transmisin del EUSART (TX) / Lnea de reloj del EUSART (CK); RC7: Entrada de recepcin del EUSART (RX) / Lnea de datos sncrona del EUSART (DT) / Salida de datos del SPI (SDO). En el Reset de todas las lneas del Puerto C quedan configuradas como entradas digitales. El Puerto D dispone de ocho lneas de Entrada y Salida. Las funciones alternativas son: RD0: Lnea de datos del SPP (SPP0); RD1: Lnea de datos del SPP (SPP1); RD2: Lnea de datos del SPP (SPP2); RD3: Lnea de datos del SPP (SPP3); RD4: Lnea de datos del SPP (SPP4); RD5: Lnea de datos del SPP (SPP5) / Salida PWM del ECCP1 (P1B); RD6: Lnea de datos del SPP (SPP6) / Salida PWM del ECCP1 (P1C); RD7: Lnea de datos del SPP (SPP7) / Salida PWM del ECCP1 (P1D).

13

Todas las lneas del Puerto D disponen de resistencias Pull-up internas que pueden ser activadas poniendo el bit RDPU del registro PORTE a 1. Si una lnea del Puerto D se configura como salida la resistencia de Pull-up correspondiente se desactiva automticamente. El Puerto E dispone de tres lneas de Entrada y Salida (RE0, RE1, RE2) y una lnea de slo entrada (RE3). Las funciones alternativas son: RE0: Entrada anloga (AN5) / Salida de reloj 1 del SPP (CK1SPP); RE1: Entrada anloga (AN6) / Salida de reloj 2 del SPP (CK2SPP); RE2: Entrada anloga (AN7) / Salida habilitacin del SPP (OESPP); RE3: Lnea de Reset externo (MCLR) / Lnea de programacin (VPP). En el Reset todas las lneas RE2,RE1,RE0 se configuran como entrada analgicas. Para poder utilizarlas como lneas digitales de E/S hay que desactivar la funcin analgica. La lnea RE3 por defecto tiene la funcin de Reset del microcontrolador. Si se desea desactivar la funcin de Reset y utilizar RE3 como lnea de entrada digital hay que poner a 0 el bit MCLRE del registro de configuracin CONFIG3H.

A.4.2. Temporizadores
El Temporizador 1 dispone de un oscilador propio que permite: Generar la seal de reloj del Temporizador 1; Generar la seal de reloj principal en algunos modos de bajo consumo. Est diseado con un oscilador interno para trabajar a una frecuencia de 32 KHz. Este microcontrolador ejecuta una instruccin en un ciclo de mquina

14

(cuatro periodos de reloj). Adems dispone de un modulo de bajo consumo, aunque presenta el inconveniente de que cuando el oscilador trabaja en este modo se vuele ms sensible a las interferencias. A partir de este oscilador y utilizando la interrupcin del Temporizador 1, se puede implementar un reloj en tiempo real de forma muy sencilla. Cundo se requiere aumentar la velocidad de procedimiento se debe conectar un oscilador externo con frecuencias de osciladores de 8, 10, 12, 16, 20, 32, 40, 48 MHz. En los modos de oscilacin HS, HSPLL, XT y XTPLL, un cristal o resonador de cermica debe ser conectado en las lneas de entrada OSC1 y OSC2, mostrado en la Figura A.5.

Figura A.5. Oscilador con Cristal. Una alta capacitncia incrementa la estabilidad de la oscilacin pero tambin incrementa el tiempo de inicio del microcontrolador. Adems cuando el microcontrolador opera bajo los 3V VDD, o cuando es usado un resonador de cermica a cualquier voltaje, debe ser necesario utilizar el modo HS en la configuracin. Ver Tabla A.2.

15

Tabla A.2. Valores para condensadores segn cristal a usar. Modo Frecuencia cristal Valor tpico condensadores OSC1 XT HS 4 MHz 4 MHz 8 MHz 20 MHz 27 pF 27 pF 22 pF 15 pF OSC2 27 pF 27 pF 22 pF 15 pF

En tanto el Temporizador 2, posee las siguientes caractersticas fundamentales: Temporizador de 8 bits (registro TMR2); Registro de periodo PR2; Pre-escalar de 2 bits programable (1:1, 1:4, 1:16); Post-escalar de 4 bits (1:1, ... 1:16); Interrupcin por igualdad entre TMR2 y PR2; Se pude utilizar con los mdulos CCP y ECCP; Se puede utilizar como seal de reloj para MSSP en modo PSI; Los registros TMR2 y PR2 son de lectura y escritura, adems los contadores del pre-escalar y del post-escalar no son accesible por el usuario; La seal de salida del Temporizador 2 puede ser utilizada en el modulo CCP para generar seales PWM o en el mdulo MSSP como seal de reloj del modulo SPI; La seal de salida del Temporizador est conectada a un contador postescalar que se incrementa cada vez que se produce la igualdad entre TMR2 y PR2.

16

Y el Temporizador 3 posee las siguientes caractersticas fundamentales: Configurable como temporizador/contador de 16 bits; Dispones de varias opciones de seal de reloj en el modo temporizador; Pre-escalar de 3 bits programable; Interrupcin por desbordamiento.

A.4.3. Convertidores ADC


Las caractersticas fundamentales son: 10 bits de resolucin; 13 canales multeplexados; Seal de reloj de conversin configurable; Tiempo de adquisicin programable (0 a 20TAD); Posibilidad de establecer el rango de tensin de conversin mediante tensiones de referencias externas. Por defecto, el rango de tensin de conversin del convertidor ADC del PIC 18F4550 es de 0V a 5V. Sin embargo, en ocasiones puede resultar interesante modificar este rango para aumentar la resolucin de la conversin acercando las tensiones de referencia mxima y mnima VREF+ y VREF- a los limites de variacin de la seal que se desea digitalizar. Esto se puede conseguir configurando las lneas RA2/AN2/VREF- y RA3/AN3/VREF+ como tensin de referencia del convertidor A/D, poniendo a 1 los bits VCFG1 y VCFG0 del registro ADCON1. De esta forma el rango de tensiones de conversin vendr determinado por las tensiones que conecten a dichas lneas. Esto puede ser mostrado en la siguiente Figura A.6.

17

Figura A.6. Distribucin de ADC y los voltajes de referencias VREF+ y VREF-.

A.4.4. Mdulo de Comparacin/Captura/PWM


Dispone de tres modos de funcionamiento: Modo de Captura: se utiliza para medir eventos externos como la duracin de pulsos digitales; Modo de Comparacin: se utiliza para generar seales digitales com temporizaciones programables. Este tipo de seales son muy tiles para el control de etapas de potencia (convertidores DC/DC, DC/AC, AC/DC, AC/AC); Modo PWM: se utiliza para generar seales de modulacin por ancho de pulso.

18

Los elementos asociados a estos modos son los siguientes: Temporizadores asociados: Temporizador 1 y Temporizador 3; Registros de comparacin: CCP2RH y CCPR2L; Pines de E/S: RC1/T1OSC1/CCP2 o RB3/AN9/CCP2; Interrupcin asociada a los mdulos de Captura y Comparacin.

A.4.4.1. Modo de Captura


En el Modo de Captura, ver Figura A.7, el valor del Temporizador 1 o Temporizador 3 pasa al par de registros CCPR2H o CCP2L cuando se produce alguno de los siguientes eventos en el pin del CCP (RB3 o RC1): En cada flanco de bajada; En cada flanco de subida; Cada cuatro flacos de subida; Cada 16 flancos de subida. La seleccin del Temporizador que se captura se utiliza mediante los bits T3CCP2 y T3CCP1 del registro T3CON. El Temporizador que se utilice debe configurarse en modo Temporizador o en modo contador sncrono. Si se configura en modo contador asncrono el modo no captura, no funcionar.

Figura A.7. Diagrama de Bloques Modo de Captura.

19

A.4.4.2. Modo de Comparacin


En el Modo de Comparacin, ver Figura A.8, el par de registros CCPR2H y CCPR2L se comparan continuamente con el Temporizador asociado. Existen varios modos de comparacin en funcin del valor de los bits CCP2M3 a CCP2M0.

Figura A.8. Diagrama de Bloques modo de Comparacin.

A.4.4.3. Modo PWM


El Modo PWM permite generar una seal PWM de ciclo de trabajo y frecuencia programable, ver Figuras A.9 y A.10. El funcionamiento de este modo es el siguiente: Un registro de 10 bits, compuesto por CCPR2H y por un registro interno de 2 bits, se comprara constantemente con un contador de 10 bits, compuesto por el registro TMR2 del Temporizador 2 y un pre-escalar de 2 bits; Cuando el valor del contenedor se hace igual al del registro se pone a 0 el pin de salida del CCP; En paralelo el registro PR2 se compara constantemente con el registro TMR2 del Temporizador 2. Cuando el valor de TMR2 alcanza PR2, se pone a 1 el pin de salida del CCP, se inicializa a 0 el valor del

20

contador de 10 bits y el valor del registro de 10 bits se recargan con el valor del registro CPPR2L y los bits CCP2CON.

Figura A.9. Diagrama de Bloques del Modo PWM.

Figura A.10. Periodo y ciclo de trabajo para PWM. Para generar la seal PWM s deben seguir los siguientes pasos: Configurar el pin CCP (RC1 o RB3) como salida; Configurar el Temporizador 2 para que trabaje como temporizador. Puede utilizarse el pre-escalar del Temporizador 2, pero no puede utilizarse el post-escalar; Configurar el modulo CCP en modo PWM; Establecer el periodo de la seal PWM mediante el valor del registro PR2.

21

Mediante las formulas 2.1, 2.2, se puede lograr la obtencin el periodo y el ciclo de trabajo para PWM del microcontrolador. (A.1) (A.2)

A.4.5. Modulo de Comparacin/Captura/PWM mejorado


Dispone de cuatro modos de funcionamiento: Modo de Captura: se utiliza para medir eventos externos como la duracin de pulsos digitales; Modo de Comparacin: se utiliza para generar seales digitales con temporizaciones programables. Este tipo de seales son muy tiles para el control de etapas de potencia (convertidores DC/DC, DC/AC, AC/DC); Modo PWM: se utiliza para generar seales de modulacin por ancho de pulso; Modo PWM mejorado: se utiliza para generar seales PWM complementarias para el control de semi-puentes de transistores (puente H o H-Bridge). Las funciones son las mismas que los mdulos anteriores con excepcin del PWM mejorado.

A.4.5.1. Modo PWM mejorado:


El Modo PWM mejorado del mdulo ECCP permite generar seales PWM por los pines RC2/P1A, RD5/P1B, RD6/P1C y RD7/P1D con una gran flexibilidad. Algunas de las posibilidades de este modo son:

22

Generacin de 1 salida PWM (pin RC2/P1A), modo estndar; Generacin de 2 salidas PWM complementarias (pines RC2/P1A, RD5/ P1B); Generacin de 4 salidas PWM (pines RC2/P1A, RD5/P1B, RD6/P1C, RD7/P1D) con posibilidad de realizar modulacin PWM en dos de ellas, modo puente completo; Flexibilidad en la configuracin de los niveles activos de las seales PWM; Programacin de tiempos muertos entre las transiciones de las seales de salida; Programacin de condiciones de Auto-Shutdown y de reinicio automtico una vez que desaparece la condicin de Auto-Shutdown. El Modo PWM mejorado, ver Figura A.11, se puede utilizar para la generacin de las seales de disparo de la etapa de potencia de convertidores DC/DC (control unidireccional y bidireccional de motores DC) y AC/AC (inversores, control de motores AC).

Figura A.11. Diagrama de bloques de PWM mejorado. En el modo semi-puente, ver Figura A.12, el ECCP genera seales PWM complementarias por los pines RC2/P1A y RD5/P1B. Las seales PWM pueden

23

configurarse para que sean activas por nivel alto o por nivel bajo. Se puede programar un tiempo muerto entre las transiciones de las seales con el fin de evitar cortocircuitos en la alimentacin de la etapa de potencia.

Figura A.12. Configuracin de semi-puente o puente H.

Figura A.13. Configuracin de puente completo. Las limitaciones al usar el puente completo, ver Figura A.13, y a pesar del intervalo de transicin, en determinadas condiciones de funcionamiento se puede producir un cortocircuito en algunas de las semi-ramas del puente completo. Si el cambio de sentido se produce cuando el ciclo de trabajo del PWM est cerca del

24

100% y los transistores utilizados en el semi-puente tiene un tiempo de conmutacin a OFF superior al tiempo de conmutacin a ON, se producir un cortocircuito en las semi-ramas del puente. Para evitar este problema caben varias soluciones: Reducir el ciclo de trabajo ligeramente antes de realizar el cambio de sentido; Utilizar transistores o circuitos de disparo de los transistores que permitan que la conmutacin OFF sea ms rpida que la conmutacin a ON.

A.4.6. Canal de comunicacin serie EUSART


Las caractersticas fundamentales de este sistema de comunicacin son: Modo de trabajo; Modo asncrono de 8 bits; Modo asncrono de 9 bits; Modo sncrono Maestro; Modo sncrono Esclavo; Auto activacin por deteccin de datos recibidos; Deteccin automtica de velocidad de comunicacin (Baud Rate); Transmisin y deteccin de carcter de Break (bus LIN). Solo se explicara el mtodo de transmisin TX/RX asncrono. Los pines RC6/TX y RC7/RX deben configurarse adecuadamente para que puedan funcionar como las lneas de transmisin y recepcin respectivamente.

25

El microcontrolador 18F4550 dispone de un generador de velocidad de comunicacin. Se trata de un temporizador cuya frecuencia es controlada mediante un registro. El registro puede ser de 8 (SPBRG) o 16 bits (SPBRGH). El generador de velocidad de comunicacin tiene dos velocidades de funcionamiento que pueden seleccionarse mediante el bit BGRH. En la recepcin de la USART incorpora un registro de desplazamiento serie (RSR). Los datos entran en serie por el pin RC7/RX y son muestreados por un bloque de lectura de bits. Una vez se han recibido todos los bits correspondientes a un byte el valor recibido se pasa en paralelo de RSR al registro RCREG. De esta forma el registro RSR queda listo para recibir un nuevo dato. Si durante el proceso de recepcin se produce algn error de formato o de sobreescritura se pondr a 1 el bit correspondiente (FERR/OERR). La recepcin de datos puede hacerse por dos mtodos: Polling: en este caso el programa monitorea el estado del bit RCIF, siendo este el estado 1 para poder leer el registro RCREG; Interrupcin: cada vez que se recibe un dato, el Flag se pone a 1, habilitando la interrupcin de recepcin del canal EUSART (RCIE=1) se producir un interrupcin y el microcontrolador saltar a la direccin vectorizada que corresponda segn se hayan configurado las prioridades. En la transmisin de la USART, el bloque de recepcin incorpora un registro de desplazamiento serie (TSR) que se encarga de enviar en serie por el pin RC6/TX los bits del dato a transmitir. La lgica que el registro TSR se encarga de enviar adems de los 8 bits de datos, el Start bit y el Stop bit. La cadencia de

26

esta transmisin viene determinada por la seal de reloj producida por el generador de velocidad de comunicacin. Para transmitir datos por el canal EUSART, se puede hacer de las siguientes maneras: Polling: en este caso el programa monitorea el estado del bit TXIF, si esta en 1 significa que TXREG esta vaco y por lo tanto podemos escribir el siguiente dato; Interrupcin: si se habilita la interrupcin del transmisor del canal EUSART se producir una interrupcin por cada vez que el registro TXREG este vaco. La interrupcin de transmisin del canal serie permite por tanto detectar cuando TXREG queda libre para poder enviar un nuevo dato. Por tanto solo se debe habilitar esta interrupcin despus de haber enviado el primer dato y debe ser deshabilitada cuando se haya transmitido el ltimo dato.

A.4.7. Canal de comunicacin MSSP


El modulo MSSP o Master Syncronous Serial Port, es una interface serial, muy usada para comunicarse con otros perifricos o microcontroladores. Estos dispositivos pueden ser memorias seriales EEPROM, Shift Registers, Displays, conversores ADC. El modulo MSSP puede operar en uno de estos dos modos: Serial Peripheral Interface (SPI) o interface serial para perifricos; Inter-Integrated Circuit (I2C): Modo maestro o Master; Modo esclavo o Slave con direcciones generales.

27

El modulo MSSP posee tres registros de control asociados, SSPSTAT y dos registros de control SSPCON1, SSPCON2. El uso de estos registros y al configuracin individual difieren significativamente dependiendo de como va ser usado el modulo MSSP. En el modo SPI los 8 bits de datos son sincronizados para transmitir o recibir simultneamente. Los cuatro modos del SPI son: Salida dato serial (SDO): RC7/RX/DT/SDO; Entrada de dato serial (SDI): RB0/AN12/INT0/FLT0/SDI/SDA; Reloj serial (SCK): RB1/AN10/INT1/SCK/SCL. El modo I2C, se explica en el punto 2.5.10.

A.4.8. Canal de Comunicacin serie USB


El microcontrolador PIC 18F4550 contiene una interfaz serie compatible con el SIE (Serial Interface Engine, mquina con comunicacin serie) USB (Universal Serial Bus), ya sean de Full Speed (2.0) y Low Speed (1.1) que permite la comunicacin rpida entre cualquier dispositivo USB y el microcontrolador PIC. El SIE se puede interconectar directamente al USB, utilizando el Transmisor / Receptor interno, o puede conectarse a travs de un Transmisor / Receptor externo. El PIC tiene un regulador interno de 3,3 Volt para accionar el Transmisor / Receptor interno en aplicaciones de 5 Volt. Ver Figura A.14. Se ha incluido algunas caractersticas especiales en el hardware para mejorar el funcionamiento. Se proporciona memoria de puerto dual en la memoria

28

de datos del dispositivo (RAM del USB) para tener acceso directo a la memoria dede el ncleo del microcontrolador y desde el SIE. Tambin se puede proporcionar unos buffer para poder elegir libremente el final de la memoria dentro del espacio de la RAM del USB. Existe un puerto paralelo para transmitir datos grandes, por ejemplo datos al puerto paralelo, se ha proporcionado la ayuda de transferencia interrumpida de volmenes de datos grandes, por ejemplo datos sncronos, a los Buffer de memoria externos.

Figura A.14. Perifrico y opciones del puerto USB.

A.4.8.1. Estado y control del USB


Las operaciones del modulo USB se configura y controlan con tres registros. En total hay 22 registros para manejar las transacciones del USB. Los registros son: Registro de control del USB (UCON): contiene los bits necesarios para dirigir el comportamiento del modulo durante la transferencia. El registro

29

contiene los bits que gobiernan los permisos del perifrico principal del USB, Reset de los punteros tipo Ping-pong, control del modo al suspender y desactivacin de la transferencia de paquetes; Registro de configuracin del USB (UCFG): contiene la mayor parte de los bits que dirigen el comportamiento del modulo USB como la velocidad del bus, permiso de las resistencias Pull-up del PIC, permiso del transmisor del PIC y el uso del Buffer Ping-pong; Registro de estado de la transferencia del USB (USTAT): cuando el SIE publica una interrupcin de transferencia completa por el USB, hay que leer USTAT para determinar el estado de la transferencia, ya que contiene el nmero de los Endpoints de la transferencia, direccin y valor del puntero del Buffer Ping-pong; Registro de direccin de dispositivo USB (UADDR): contiene una nica direccin del USB que el perifrico descifra cuando esta activo. Se pode a 0 cuando recibe un Reset del USB, la direccin del USB la tiene que escribir el microcontrolador durante la parte de Setup como parte del Firmware de ayuda del USB; Registro del nmero del Frame (UFRMH, UFRML): contienen 11 bits del nmero del Frame y estos registros son solo de lectura. El registro del nmero del Frame se utiliza sobre todo para transferencias asncronas.; Registro activadores de los Endpoints de 0 a 15 (UEPn).

A.4.8.2. Resistencias Pull-up


El microcontrolador PIC 18F4550 tiene unas resistencias Pull-up internas diseadas para conocer los requerimientos del USB Low speed y Full speed. El bit UPUEN activa las Pull-up internas.

30

Adems se pueden utilizar resistencias Pull-up externas. El pin VUSB se puede utilizar para aumentar D+ o D-. Las resistencias Pull-up tienen que ser de 15KOhm. Ver Figura A.15.

Figura A.15. Resistencia Pull-up en circuito externo. Es el caso de la Tarjeta de Desarrollo, es recomendable utilizar las resistencias internas de Pull-up, por razones de comodidad y reduccin de espacio.

A.4.8.3. RAM del USB


Los datos del USB y el SIE a travs de una una memoria de puerto se mueven entre el ncleo del microcontrolador memoria conocida como USB RAM. Esta es dual especial que est mapeada en la memoria

normal de datos en los bancos de 4 a 7 (400h a 7FFh) para un total de 1 Kbyte. El banco 4 se utiliza especficamente en el control del buffer del Endpoint, mientras que los bancos 5 a 7 estn disponibles para los datos del USB. Dependiendo del tipo de buffer que se utilice, los 8 bytes del banco 4 pueden estar disponibles ara utilizarlos como Buffer del USB.

31

Aunque la RAM del USB est disponible en el microcontrolador como memoria de datos, las secciones que esta modificando el SIE no las puede usar el microcontrolador. Se utiliza un mecanismo de semforo para determinar el acceso al Buffer en un momento dado.

A.4.8.4. Interrupciones del USB


El modulo USB puede generar condiciones de interrupcin mltiples. Para acomodar todas estas fuentes de interrupcin, el modulo proporciona su propia lgica de estructura de interrupcin, similar a la del microcontrolador. Las interrupciones del USB se activan con un sistema de registro de control y registradas con u sistema separado de Flags. Todas las fuentes se concentran en una sola peticin de interrupcin del USB, USBIF. Hay dos capas de registro de interrupcin en el modulo USB, ver Figura A. 16. El nivel superior consiste en todas las interrupciones de estado del USB; estos se permiten y sealan por medio de una Flag en los registros UIE y UIR, respectivamente. El segundo nivel consiste en las condiciones de error del USB, se permiten y sealan por medio de un Flag en los registros UEIR y UEIE. Ninguna condicin de interrupcin en estos provoca la activacin del Flag de interrupcin por error del USB (UERRIF) en el nivel superior. Las interrupciones se pueden utilizar para detectar acontecimientos rutinarios en una transaccin USB.

32

Figura A.16. Lgica embudo de la interrupcin del USB.

A.4.8.5. Modos de energa del USB


Las aplicaciones USB tendrn diferentes requisitos y configuracin de energa. Entre las cuales se pueden nombrar: Slo energa en el bus: es el mtodo ms simple de energa para el dispositivo, ver Figura A.17; Slo Self-power: el uso del USB proporciona su propia energa, con la energa muy pequea cedida por el USB, ver Figura A.18; Energa dual con dominancia de Self-power: algunas aplicaciones necesitan una opcin con dos energas. La aplicacin utiliza la fuente de energa interna como primaria, pero cambia a la energa del USB cuando no se dispone de una fuente lineal, ver Figura A.19.

Figura A.17. Diagrama de slo energa en el bus.

33

Figura A.18. Diagrama de slo Self-power.

Figura A.19. Diagrama de energa dual con dominancia Self-power.

A.4.9. Canal de transmisin de datos en paralelo


El microcontrolador PIC 18F4550 proporciona un Puerto Paralelo Streaming como interfaz de alta velocidad para mover datos a desde un sistema externo. Este puerto paralelo funciona como puerto principal, completo con un Chip-select y salida de reloj para controlar el movimiento de los datos a los dispositivos auxiliares. Los datos se pueden dirigir directamente al SIE del USB o al ncleo del microcontrolador, ver Figura A.20. Adems, el SPP puede proporcionar tiempo multiplexado tratando la informacin junto con los datos usados segunda salida estroboscpica. As, el

34

nmero del Endpoint del USB se puede escribir con juntamente con los datos en este Endpoint.

Figura A.20. Trayectoria de datos del SPP. La operacin del SPP se controla con dos registros (SPPCON, SPPCFG). El registro SPPCON dirige la operacin total del puerto paralelo y determina si funciona bajo el control del USB o del microcontrolador. El Registro SPPCFG controla la configuracin del tiempo y los pines de salida. Para permitir el SPP se debe activar el bit SPPEN. Adems los bits del TRIS del SPP correspondiente, los pines se deben configurar correctamente. El SPP se disea con la capacidad de agregar estados de espera para las operaciones de lectura y escritura. Esto permite el acceso paralelo a los dispositivos que requieren ms tiempo para acceder. Registrar el estado de espera se basa en el reloj de la fuente de datos. Si el SPP se configura para funcionar como Endpoint del USB, entonces los estados de espera se basan en el reloj del USB. As mismo, si el SPP se configura para que funcionar desde el microcontrolador, entonces los estados de espera se basa en la razn de instruccin (FOSC/4).

35

Las lneas de datos del SPP poseen resistencias Pull-up internas para aplicaciones que puedan salir del puerto en condiciones de alta impedancia. Los Pull-up se permiten con el bit de control, RDPU. El SPP puede actuar como puerto paralelo del microcontrolador, el control puede generar una interrupcin para notificar la aplicacin cuando termina cada operacin de lectura y escritura. El Flag de interrupcin es SPPIF y se permite con el bit SPPIE. Como el resto de prioridades de interrupciones del microcontrolador, se puede fijar a un nivel bajo o prioritario. Esto se hace con el bit SPPIP.

A.4.10. Canal de comunicacin I2C


El bus I 2 C, es un estndar que facilita la comunicacin entre microcontroladores, memorias y otros dispositivos con cierto nivel de inteligencia. Su principal caracterstica es que utiliza dos lneas para transmitir la informacin, una para los datos y otra para la seal de reloj. Los dispositivos conectados al bus I2C tienen una direccin nica para cada uno. Tambin pueden ser maestro o esclavo. El dispositivo maestro inicia la transferencia de datos y adems genera la seal de reloj, pero no es necesario que el maestro sea siempre el mismo dispositivo, esta caracterstica se la pueden ir pasando los dispositivos que tengan esa capacidad. Esta caracterstica hace que la bus I2C se le denomine bus multimaestro. La metodologa de comunicacin de datos del bus I2C es en serie y sincrnica. Una de las seales del bus marca el tiempo (pulso de reloj) y la otra se utiliza para intercambiar datos.

36

La descripcin de la seales son: SCL (System Clock): es la lnea de los pulsos de reloj que sincronizan el sistema; SDA (System Data): es la lnea por la que se mueven los datos entre los dispositivos; GND (masa): comn de la interconexin entre todos los dispositivos conectados al bus. Las lneas SDA y SCL son del tipo drenaje abierto, es decir, un estado similar al colector abierto, pero asociado a un transistor de efecto de campo o FET. Se deben polarizar en estado alto, conectando a la alimentacin por medio de resistencias Pull-up, lo que define una estructura de bus que permite conectar en paralelo mltiples entradas y salidas.

Figura A.21. Diagrama conexin puerto I2C. La Figura A.21. Es suficientemente autoexplicativo. Las dos lneas del bus estn en un nivel lgico alto cuando estn inactivas. En principio, el nmero de dispositivos que se puede conectar al bus no tiene lmites, aunque hay que observar que la capacidad mxima sumada de todos los dispositivos no supere los 400 pF. El valor de las resistencias de Pull-up no es muy crtico, y puede ir desde 1,8 KOhm a 47KOhm. Un valor menor de resistencia incrementa el consumo de

37

los integrados pero disminuye la sensibilidad al ruido y mejora el tiempo de los flancos de subida y bajada de las seales.

A.4.10.1. Comunicacin del I2C.


El protocolo de comunicacin del bus I2C, habiendo varios dispositivos conectados sobre el bus, es lgico que para establecer una comunicacin a travs de l se deba respetar un protocolo. Digamos, en primer lugar, lo ms importante: existen dispositivos Maestro y dispositivos Esclavos. Slo los dispositivos maestros pueden iniciar una comunicacin. La condicin inicial, de bus libre, es cuando ambas seales estn en estado lgico alto. En este estado cualquier dispositivo maestro puede ocuparlo, estableciendo la condicin de Inicio (Start). Esta condicin se presenta cuando un dispositivo maestro pone en estado bajo la lnea de datos (SDA), pero dejando en alto la lnea de reloj (SCL). El primer byte que se transmite luego de la condicin de inicio contiene siete bits que componen la direccin del dispositivo que se desea seleccionar, y un octavo bit que corresponde a la operacin que se quiere realizar con l (lectura o escritura). Ver Figura A.22.

Figura A.22. Modo de secuencia de inicio I2C.

38

Si el dispositivo cuya direccin corresponde a la que se indica en los siete bits (A0-A6) est presente en el bus, ste contesta con un bit en bajo, ubicado inmediatamente luego del octavo bit que ha enviado el dispositivo maestro. Este bit de reconocimiento (ACK) en bajo le indica al dispositivo maestro que el esclavo reconoce la solicitud y est en la condicin de comunicarse. Aqu en la comunicacin se establece en firme y comienza el intercambio de informacin entre los dispositivos. Ver Figura A.23.

Figura A.23. Transmisin de bits en I2C. Si el bit de Lectura / Escritura (R/W) fue puesto en esta comunicacin a nivel lgico bajo (escritura), el dispositivo maestro enva datos al dispositivo esclavo. Esto se mantiene mientras contine recibiendo seales de reconocimiento, y el contacto concluye cuando se haya transmitido todos los datos. En el caso contrario, cuando el bit de Lectura / Escritura estaba a nivel lgico alto (lectura), el dispositivo maestro genera pulsos de reloj para que el dispositivo esclavo pueda enviar los datos. Luego de cada byte recibi el dispositivo maestro (quien est recibiendo los datos) genera un pulso de reconocimiento. El dispositivo maestro puede dejar libre el bus generando una condicin de parada (o detencin o Stop). Ver Figura A.24.

39

Figura A.24. Modo de secuencia de parada I2C. Si se desea seguir transmitiendo, el dispositivo maestro puede generar otra condicin de inicio en lugar de una condicin de parada. Esta nueva condicin de inicio se denomina Inicio Reiterado y se puede emplear para direccionar un dispositivo esclavo diferente o para alterar el estado del bit de lectura/escritura. En una forma ms detallada, cuando el dispositivo maestro quiere comunicarse con un esclavo, produce una secuencia de inicio en el bus. La secuencia de inicio es una de las dos secuencias especiales que se han definido en el bus I2C; la otra es la secuencia de parada. Las secuencias de inicio y la de parada son especiales porque son los dos nicos casos en que se permite que la lnea de datos (SDA) cambie cuando la lnea de reloj (SCL) est alta. Cuando se estn transmitiendo datos, la lnea SDA debe permanecer estable, y jams cambiar, mientras la lnea SCL est alta. Las secuencias de inicio y de parada sealan el comienzo y el final de una transaccin con los dispositivos esclavos.

Los datos se transfieren en secuencias de 8 bits. Estos bits se colocan en la lnea SDA comenzando por el bit de ms peso (o ms significativo). Una vez puesto un bit en SDA, se lleva la lnea SCL a alto. Debemos recordar que el chip no puede llevar la lnea a un estado alto, en realidad, lo que hace es "soltarla", y el que la pone en nivel lgico alto es la resistencia de polarizacin. Por cada 8 bits

40

que se transfieren, el dispositivo que recibe el dato enva de regreso un bit de reconocimiento, de modo que en realidad por cada byte de dato se producen 9 pulsos sobre la lnea SCL (es decir, 9 pulsos de reloj por cada 8 bits de dato). Si el dispositivo que recibe enva un bit de reconocimiento bajo, indica que ha recibido el dato y que est listo para aceptar otro byte. Si retorna un alto, lo que indica es que no puede recibir ms datos y el dispositivo maestro debera terminar la transferencia enviando una secuencia de parada.

A.4.10.2. Direccionamiento del bus I2C


Lo ms comn en los dispositivos para el bus I2C es que utilicen direcciones de 7 bits, aunque existen dispositivos de 10 bits. Este ltimo caso es raro. Una direccin de 7 bits implica que se pueden poner hasta 128 dispositivos sobre un bus I2C, ya que un nmero de 7 bits puede ir desde 0 a 127. Cuando se envan las direcciones de 7 bit, de cualquier modo la transmisin es de 8 bits. El bit extra se utiliza para informarle al dispositivo esclavo si el dispositivo maestro va a escribir o va a leer datos desde l. Si el bit de Lectura / Escritura (R/W) es cero, el dispositivo maestro est escribiendo en el esclavo. Si el bit es 1 el maestro est leyendo desde el esclavo. La direccin de 7 bit se coloca en los 7 bits ms significativos del byte y el bit de Lectura / Escritura es el bit menos significativo. El hecho de colocar la direccin de 7 bits en los 7 bits ms significativos del byte produce confusiones entre quienes comienzan a trabajar con este bus. Si, por ejemplo, se desea escribir en la direccin 21 (hexadecimal), en realidad se debe enviar un 42, que es un 21 desplazado un bit hacia arriba. Tambin se pueden tomar las direcciones del bus I2C como direcciones de 8 bit, en las que las pares son de slo escritura y las impares son de slo lectura. Para dar un ejemplo, el integrado de brjula magntica CMPS03 es fijado en fbrica en la direccin 0xC0

41

($C0). La direccin 0xC0 se utiliza para escribir en l y la direccin 0xC1 es para leer de l.

A.4.10.3. Protocolo de programacin del bus I2C


Lo primero que ocurre en un bus I2C es que el dispositivo maestro enva una secuencia de inicio. Esto alerta a los dispositivos esclavos, ponindolos a la espera de una transaccin. stos quedan atentos para ver si se trata de una solicitud para ellos. A continuacin el dispositivo maestro enva la direccin de dispositivo. El dispositivo esclavo que posee esa direccin continuar con la transaccin, y los otros ignorarn el resto de los intercambios, esperando la prxima secuencia de inicio. Habiendo direccionado ya el dispositivo esclavo, lo que debe hacer ahora el maestro es enviar la ubicacin interna o nmero de registro desde el que desea leer o al que va a escribir. La cantidad depende, obviamente, de qu dispositivo es y de cuntos registros internos posee. Algunos dispositivos muy simples no tienen ninguno, pero la mayora s los poseen. Siguiendo con el ejemplo del CMPS03, ste posee 16 ubicaciones internas, numeradas desde el 0 al 15. Otro dispositivo, el medidor ultrasnico de distancia SRF08, tiene 36 registros. Una vez que el maestro ha enviado la direccin del dispositivo en el bus I2C y la direccin del registro interno del dispositivo, puede enviar ahora el byte o bytes de datos. El dispositivo maestro puede seguir enviando bytes al esclavo, que normalmente sern puestos en registros con direcciones sucesivas, ya que el esclavo incrementa automticamente la direccin del registro interno despus de recibir cada byte. Cuando el maestro ha terminado de escribir datos en el esclavo, enva una secuencia de parada que concluye la transaccin.

42

Escritura en un dispositivo esclavo: Enviar una secuencia de inicio; Enviar la direccin de dispositivo con el bit de lectura/escritura en bajo; Enviar el nmero de registro interno en el que se desea escribir; Enviar el byte de dato; [Opcionalmente, enviar ms bytes de dato]; Enviar la secuencia de parada. Como ejemplo, veamos un SRF08, que tiene una direccin de bus fijada en fbrica de 0xE0. Para comenzar una medicin de distancia con el SRF08 se debe escribir 0x51 en el registro de comando, ubicado en la direccin interna 0x00. La secuencia es la que sigue: Enviar una secuencia de inicio; Enviar 0xE0 (La direccin de dispositivo del SRF08 con el bit de Lectura / Escritura en bajo); Enviar 0x00 (direccin interna del registro de comando); Enviar 0x51 (el comando para comenzar la medicin del SRF08); Enviar la secuencia de parada. La lectura desde un dispositivo esclavo, esta operacin es algo ms complicada, pero no demasiado. Antes de leer datos desde el dispositivo esclavo, primero se le debe informar desde cul de sus direcciones internas se va a leer. De manera que una lectura desde un dispositivo esclavo en realidad comienza con una operacin de escritura en l. Es igual a cuando se desea escribir en l: Se enva la secuencia de inicio, la direccin de dispositivo con el bit de Lectura / Escritura en bajo y el registro interno desde el que se desea leer. Ahora se enva otra secuencia de inicio nuevamente con la direccin de dispositivo, pero esta vez

43

con el bit de Lectura / Escritura en alto. Luego se leen todos los bytes necesarios y se termina la transaccin con una secuencia de parada. Volviendo al ejemplo del mdulo de brjula CMPS03, veamos cmo se lee el registro de ngulo: Enviar una secuencia de inicio; Enviar 0xC0 (La direccin de dispositivo del CMPS03 con el bit de Lectura / Escritura en bajo); Enviar 0x01 (direccin interna del registro de ngulo en valor 0-255); Enviar una secuencia de inicio (inicio reiterado); Enviar 0xC1 (La direccin de dispositivo del CMPS03 con el bit de lectura/escritura en alto); Leer un byte de dato desde el CMPS03; Enviar la secuencia de parada.

A.7. Reset
El microcontrolador PIC 18F4550 posee las siguientes clases de Reset: Reset por fallo de energa (POR); Reset por MCLR durante la operacin normal; Reset de MCLR durante modos de ahorro de energa; Reset por el perro guardin (WDT) durante ejecucin; Reset por cese de energa (BOR); Instruccin RESET; Reset por desbordamiento de la Pila; Reset por vaciado de la Pila.

44

El pin MCLR, proporciona un mtodo para accionar un Reset externo del dispositivo. El Reset se genera poniendo el pin a 0. Estos dispositivos tienen un filtro anti-ruido en la trayectoria del Reset de MCLR que detecta y no hace caso de pulsos pequeos. El pin MCLR no se pone a cero con ningn Reset interno, incluyendo el WDT. La entrada MCLR se puede inhabilitar con la configuracin del bit MCLRE. Cuando MCLR est desactivado, el pin se convierte en una entrada digital. Ver Figura A.25.

Figura A.25. Diagrama simplificado del circuito Reset del PIC 18F4550. Un Reset por subida tensin o POR, se genera en el chip cuando VDD sube hasta un umbral. Esto provoca que el dispositivo se inicialice cuando VDD tenga un valor adecuado. Para aprovechar del POR, conectar el pin MCLR a VDD a travs de una resistencia ( 1KOhm a 10KOhm). Esto elimina los componentes RC externos que se necesitan para crear un retraso en el Reset por subida de tensin. Ver Figura A.26.

45

Figura A.26. Circuito Reset externo POR. Cuando el dispositivo comienza la operacin normal, los parmetros de funcionamiento del dispositivo se deben conocer para asegurar el correcto funcionamiento del dispositivo. Un Reset por BOR, el microcontrolador tiene un circuito BOR en ejecucin que provee al usuario un nmero de opciones de configuracin y de ahorro de energa. El BOR se controla con los bits BORV1,BORV0 y BOREN1,BOREN0. Hay un total de cuatro configuraciones del BOR. Cualquier tensin Vdd por debajo de VBOR durante un tiempo mayor que TBOR resetea el dispositivo. Un reset puede o no puede ocurrir si VDD baja por debajo de VBOR durante un tiempo menor que TBOR. El microcontrolador permanece en Reset hasta que VDD vale ms que VBOR.

También podría gustarte