Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PIC - Introducion PIC18F4550
PIC - Introducion PIC18F4550
Microcontroladores
PIC18F4550
Arquitectura PIC18F4550
Arquitectura Harvard
Figura 1.
10
11
12
13
14
15
Llamada General:
16
17
18
19
RESUMEN
20
21
SDA: esta señal se conoce como datos en serie. Cualquier dato enviado de un
dispositivo a otro va en esta línea.
SCL: esta es la señal del reloj en serie. Es generado por el dispositivo maestro y
controla cuándo se envían los datos y cuándo se leen. Como se mencionó
anteriormente, la señal se puede forzar a baja para que no se produzca ningún reloj.
Esto lo hace un dispositivo que está demasiado ocupado para aceptar más datos.
22
Las líneas I2C solo pueden tener dos estados eléctricos posibles. Estos estados se
conocen como "float high" y "drive low". I2C funciona al tener una resistencia pull-
up en la línea y solo los dispositivos tiran de la línea hacia abajo. Es por eso que las
resistencias pull-up son importantes en I2C.
23
24
El bus I2C tiene una serie de "condiciones". Estas condiciones indican cuándo una
transferencia comienza, se detiene, se reconoce y otros eventos. Para simplificar la
explicación de las comunicaciones I2C, esta presentación las representará como
“elementos”, pequeños bloques de colores con una letra y un color para representar
cada condición.
25
El primer elemento que debemos observar es la condición de inicio. Una condición de inicio
indica que un dispositivo desea transferir datos en el bus I2C. Aquí se muestra el bloque
con una "S" y cómo se ven las señales en el bus I2C (SDA se baja primero, seguido de SCL).
El microcontrolador PIC se encargará de los detalles de sincronización. Sin embargo, será
necesario que le digan que desea una condición de inicio y comprobará cuando se
complete.
26
27
Una condición de reinicio (Restart) indica que un dispositivo desea transmitir más
datos, pero no desea liberar la línea. Esto se hace cuando se debe enviar un inicio,
pero no se ha producido una parada. También es una forma conveniente de enviar
una parada seguida de una salida inmediatamente después de la otra. Evita que
otros dispositivos tomen el autobús entre transferencias.
28
Aquí podemos ver claramente que la señalización utilizada para un reinicio puede verse
como nada más que una condición de parada seguida rápidamente por una condición de
inicio. Recuerde que una condición de parada es cuando el SDA sube mientras que el SCL es
alto. Una condición de inicio es cuando el SDA se baja mientras que el SCL es alto.
El microcontrolador PIC también genera esto automáticamente. Uno simplemente solicita
que se envíe una condición de reinicio y luego espere a que se complete.
29
30
Aquí hay una vista de cerca de un bloque de datos. Como se puede ver, contiene 8
bits de datos y los datos son válidos en el flanco ascendente de SCL. El dato sigue
válido mientras SCL es alto.
Si SDA es alto cuando esto sucede, el bit de datos es un "1“ y si es bajo, es un "0".
31
Por último, discutiremos la condición ACK y NACK. Un dispositivo puede "ACK" o reconocer una
transferencia de cada byte bajando la línea SDA durante el noveno pulso de reloj de SCL.
Los 9 bits de una transferencia se ven así: se sincronizan 8 bits para los datos, luego, durante el
noveno bit, el elemento que recibe los datos toma el bus por un bit. Si baja este bit, entonces el
dispositivo está señalando un "ACK". De lo contrario, permite que la línea SDA flote alto, está
transmitiendo un "NACK". Recuerde que el dispositivo debe activar el bus a bajo para enviar un
ACK, pero un NACK podría ser una respuesta pasiva. Este es uno de los beneficios de I2C.
32
Por último, discutiremos la condición ACK y NACK. Un dispositivo puede "ACK" o reconocer una
transferencia de cada byte bajando la línea SDA durante el noveno pulso de reloj de SCL.
Los 9 bits de una transferencia se ven así: se sincronizan 8 bits para los datos, luego, durante el
noveno bit, el elemento que recibe los datos toma el bus por un bit. Si baja este bit, entonces el
dispositivo está señalando un "ACK". De lo contrario, permite que la línea SDA flote alto, está
transmitiendo un "NACK". Recuerde que el dispositivo debe activar el bus a bajo para enviar un
ACK, pero un NACK podría ser una respuesta pasiva. Este es uno de los beneficios de I2C.
33
Esta es una condición NACK. I2C establece que cada byte DEBE responderse con un NACK o
ACK. Si el dispositivo no puede decidir si quiere ACK o NACK, mantendrá baja la línea del
reloj hasta que se decida. Esta acción se conoce como "alargamiento del reloj" y es una
característica de I2C para dar a los dispositivos tiempo suficiente para responder.
Observe que un "NACK" es cuando la línea SDA flota en alto durante el noveno pulso del
reloj. El significado de estos reconocimientos dependerá de qué byte se está transfiriendo y
con qué dispositivo se está hablando.
34
El objetivo de esta presentación es comunicarse para escribir en una EEPROM I2C en serie.
A continuación se muestra un ejemplo de transferencia de escritura a una pequeña
EEPROM.
Necesitamos transferir 3 bytes de información. La transferencia comienza con un inicio (S),
para señalar el comienzo de la transferencia. Luego, se envía el byte de control (dirección
del esclavo), la dirección de memoria donde guardar el dato y el dato.
35
36
Una pregunta frecuente sobre las transferencias I2C es: ¿Cuándo utilizo una condición de
reinicio en lugar de una condición de inicio?
Las razones pueden variar, pero a veces es necesario reiniciar un dispositivo en medio de
una transferencia. En el caso de una EEPROM, una vez que tiene la dirección, está listo
para ser leído, por lo que se usa un reinicio para detener la transferencia actual y enviar
inmediatamente una condición de inicio. Recuerde, las condiciones de inicio solo se
pueden usar en un bus inactivo, NO en medio de una transferencia.
37
Aquí hay otro ejemplo de lectura EEPROM. Como puede ver, se usa una
condición de inicio para comenzar la transferencia, se usa un reinicio en el
medio de la transferencia para restablecer el dispositivo EEPROM y una
parada finaliza la transferencia.
38
Bibliografía
PIC18F4550 datasheet.
I2C PICMICRO - MICROCHIP.
SETISA: División de Electronica y Telecomunicaciones ©
2006 Microchip Technology Incorporated. All Rights Reserved
39