Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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).
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;
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.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.
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.
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.
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.
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.
17
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.
19
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.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)
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.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.
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.
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.
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.
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).
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.
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.
32
33
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.
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.
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.
41
($C0). La direccin 0xC0 se utiliza para escribir en l y la direccin 0xC1 es para leer de l.
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.