Вы находитесь на странице: 1из 4

5.9.11. COMUNICACIN SERIAL SICRNICA IC.

Muchos de los dispositivos electrnicos que se encuentran comnmente en una tarjeta electrnica, incluyen circuitos integrados con el bus IC desarrollado por PHILIPS, como por ejemplo las memorias 24CXX, los procesadores de seal, codificadores de video, sensores de temperatura, RTC (reloj en tiempo real), sensores ultrasnicos, etc. El bus IC (Inter Integrated Circuit) o interconexin de circuitos integrados necesita slo 2 lneas para transmitir y recibir datos, estos son: para datos (SDA) y para la seal de reloj (SCL), esta forma de comunicacin utiliza una sincrona con un tren de pulsos que viaja en la lnea SCL, de tal manera que en los flancos negativos se revisan los datos RX o TX. Ver figura 5.9.12.2., su velocidad de transmisin pueden ser de 100Kbits/seg. en el modo standard, 400Kbits/seg. en el modo rpido y 3,4Mbits/seg. en alta velocidad. Cada dispositivo conectado al bus tiene un cdigo de direccin seleccionable mediante software, por lo que existe una relacin permanente Master/Slave. El Master es el dispositivo que inicia la transferencia en el bus y genera la seal de reloj (SCL), y el Slave es el dispositivo direccionado, sin embargo cada dispositivo reconocido por su cdigo (direccin), puede operar como transmisor o receptor de datos, ya que la lnea (SDA) es bidireccional.

5.9.12. COMUNICACIN IC CON UNA MEMORIA SERIAL 24LC04B. Esta es una prctica muy bsica para aprender sobre la interfaz IC, consiste en guardar datos en las cuatro primeras direcciones de la memoria serial, estas son utilizadas para el almacenamiento de datos que pueden ser necesitados ms adelante. Para el caso de la memoria 24LC04B tiene un espacio de memoria de 4Kbytes, luego de almacenarlos los volveremos a leer y mostrar en la pantalla de un LCD. Direccin Cantidad Voltaje Referencia Capacidad Ciclos de Bloques de disposit. de E/W internos A0 A1 A2 en el bus operacin 24LC01B 1K bits 1,000.000 1 1-0 1-0 1-0 8 2,5-5,5V. 24LC02B 2K bits 1,000.000 1 1-0 1-0 1-0 8 2,5-5,5V. 24LC04B 4K bits 1,000.000 2 X 1-0 1-0 4 2,5-5,5V. 24LC08B 8K bits 1,000.000 4 X X 1-0 2 2,5-5,5V. 24LC016B 16K bits 1,000.000 8 X X X 1 2,5-5,5V. Figura 5.9.12.1. Tabla de las capacidades de las memorias EEPROM y su direccionamiento, en nuestro caso slo podemos poner hasta 4 memorias seriales en una red IC.

El principio de funcionamiento es el siguiente: primero se enva el start bit (bit de arranque) cada palabra puesta en el bus SDA debe tener 8 bits, la primera palabra transferida debe contener la direccin del esclavo seleccionado, en este caso se enva el cdigo de la memoria 1010 (este dato lo suministra el fabricante), luego la direccin del dispositivo (A2, A1, A0), y un bit 0 indicando que se desea escribir en la memoria (1=lectura), luego de todo esto la memoria debe enviar un reconocimiento para informarle al microcontrolador que recibi la informacin, este acuse de recibo se denomina ACK (acknowledge). Luego el Master lee el ACK, si vale 0 (enviado por el esclavo), el proceso de transferencia contina. Si vale 1, esto indica que el circuito direccionado no valida la

152 ------------------------

Microcontroladores PIC

Programacin en BASIC

------------------------

comunicacin, entonces el Maestro genera un bit de stop para liberar el bus IC, en la cual las lneas SDA y SCL pasan a un estado alto, vamos a suponer que el ACK es 0, entonces el microcontrolador enva los 8 bits correspondientes a la posicin de memoria que se desea escribir o leer, nuevamente la memoria enva un reconocimiento, finalmente se enva el dato a ser almacenado y se espera la respuesta de la memoria indicando que el dato lleg correctamente, finalmente se debe enviar el bit de parada. Como en nuestra prctica vamos a almacenar la palabra HOLA, vamos a suponer que ya guardamos las 3 primeras letras, la H en la direccin 0, la O en la direccin 1 y la L en la direccin 2, nos falta guardar la A en la direccin 3, esto se realizara enviando pulsos de la siguiente manera:

Figura 5.9.12.2. Esquema de una transmisin completa con la interfaz IC para guardar el nmero 65 en la direccin 3 de una memoria serial 24LC04B.

Noten que la direccin del CI. A2, A1, A0 es 000, lo que quiere decir que estos tres pines van conectados a tierra, segn la tabla 5,9,12,1, se pueden instalar 4 dispositivos de memoria en un bus, estos son empezando por A2, A1 y A0 los siguientes: 00x, 01x, 10x y 11x, por ejemplo: 01x esta memoria debe tener conectado a 5 voltios el pin A1 y su control sera 10100100.

LA DECLARACIN I2CWRITE Y I2CREAD. Estas declaraciones sirven para escribir y leer datos en un chip EEPROM serial usando una interfaz IC de 2 hilos, funcionan en modo IC Master y tambin puede ser utilizado para comunicarse con otros dispositivos de interfaz IC como sensores de temperatura, reloj calendarios, conversores A/D, etc.
-----------------------Microcontroladores PIC
Programacin en BASIC

------------------------ 153

Los 7 bits de control contienen el cdigo de fbrica del chip y la seleccin del chip A2, A1, A0, el ltimo bit es una bandera interna que indica si es un comando de lectura o escritura y no se debe usar. Por lo tanto el control para nuestro caso en lectura o escritura es %10100000. Debido a que los pines SDA y SCL de la memoria 24LC04B son de colector abierto, estas deben ir conectadas con resistencias de 4,7 K pull-up, sin embargo existe una lnea de comando que hace que no se necesite la resistencia pull-up del SCL, esta se debe agregar al comienzo del programa: DEFINE I2C_SCLOUT 1 ; no es necesario resistencia pull-up en SCL (reloj)

Tambin cabe indicar que existen algunas memorias que necesitan de un perodo de tiempo para poder ser grabadas, por lo que se adiciona un PAUSE 10 despus de cada grabacin. Su estructura es de la siguiente manera: I2CWRITE portb.6, portb.7, %10100000, 0, [65] PAUSE 10 ;almacenar en la direccin 0 el dato 65 ;pausa necesaria para completar la grabacin

I2CWRITE pin dato, pin reloj, control, posicin memoria, variable.

MATERIALES. -1 LCD 2 x 16 -1 resistencia de 4,7 K -1 resistencia de 10 -1 potencimetro de 10 K -1 memoria serial 24LC04B de microchip o equivalente -1 switch selector de 3 pines.

Figura 5.9.12.3. Esquema de conexionado de una memoria 24LCXX a un PIC, el switch selector permite proteger a la memoria de escrituras accidentales al colocar en R Read.

154 ------------------------

Microcontroladores PIC

Programacin en BASIC

------------------------

En nuestro caso vamos a escribir y leer en la memoria, por lo que el pin WP debe estar colocado en estado bajo, una vez que se haya grabado se podr colocar este pin en estado alto para proteger la memoria de futuras escrituras, los datos almacenados en esta memoria permanecen an si se le corta la alimentacin al CI. (no voltil), el acceso a estos datos se lo realiza las veces deseadas, recuerde que la memoria serial soporta 1,000.000 de ciclos de borrado y escritura, por lo tanto se debe tener cuidado de no ejecutar un programa que almacene una y otra vez el mismo dato. DEFINE I2C_SCLOUT 1 contro PinSCL PinSDA dato CON %10100000 VAR Portb.7 VAR Portb.6 VAR BYTE ;para que no necesite resistencia pull-up en SCL ;contro contiene valor constante %10100000 ;pin seal de reloj I2C ;pin de datos I2C ;variable para almacenar dato ledo

Inicio: LCDOUT $fe,1," Grabando..." PAUSE 1000 I2CWRITE PinSDA,PinSCL,contro,0,["H"] PAUSE 10 I2CWRITE PinSDA,PinSCL,contro,1,["0"] PAUSE 10 I2CWRITE PinSDA,PinSCL,contro,2,["L"] PAUSE 10 I2CWRITE PinSDA,PinSCL,contro,3,["A"] PAUSE 10 LCDOUT $fe,1,"Leer memoria" PAUSE 1000 LCDOUT $FE,1 leer: I2CREAD PinSDA,PinSCL,contro,0,[dato] LCDOUT, dato PAUSE 1000 I2CREAD PinSDA,PinSCL,contro,1,[dato] LCDOUT, dato PAUSE 1000 I2CREAD PinSDA,PinSCL,contro,2,[dato] LCDOUT, dato PAUSE 1000 I2CREAD PinSDA,PinSCL,contro,3,[dato] LCDOUT, dato END

;limpiar y sacar el texto en LCD

;guarda la H en posicin 0 ;pause para la grabacin ;guarda la O en posicin 1 ;pause para la grabacin ;guarda la L en posicin 2 ;pause para la grabacin ;guarda la A en posicin 3 ;pause para la grabacin ;limpiar y sacar el texto en LCD

;limpiar pantalla del LCD ;programa para leer la memoria serial. ;leer la mem. 0 y guardar en dato ;mostrar dato en el LCD ;esperar 1 seg. ;leer la mem. 1 y guardar en dato ;mostrar dato en el LCD ;esperar 1 seg. ;leer la mem. 2 y guardar en dato ;mostrar dato en el LCD ;esperar 1 seg. ;leer la mem. 3 y guardar en dato ;mostrar dato en el LCD

Figura 5.9.12.4. memoria 24LCXX.pbp Programa para escribir y leer datos en un chip EEPROM.
-----------------------Microcontroladores PIC
Programacin en BASIC

------------------------ 155