LABORATORIO LABORATORIO DE MICROPROCESADORES MICROPROCESADORES II PRÁCTICA N°4 1. Objetivo:
Desarrollar
una
aplicación
que
permita
comunicar
el
microcontrolador ATMEGA 128 con un C.I. 24CXX memoria serial utiliando el inter!ace I2C " el compilador Mi#ro C o Mi#ro $asic.
2. Ma Mar ro o te!r te!ri io: o: 2.1 Me"oria# EEPROM 24C$$: %as memorias seriales EE&'(M que !uncionan )a*o el protocolo I2C +an ,anado popularidad en los equipos electrónicos +asta con-ertirse en sistemas estndar de almacenamiento. Como se trata de una memoria no -oltil los datos que queden almacenados en su interior no se )orraran por un corte de ener,/a prolon,ado. En resumen podemos mencionar al,unas caracter/sticas de estas memorias que las +acen mu" prcticas de utiliar " aprender su !uncionamiento0 •
&ued &ueden en ser ser
• •
Electricall" Erasa)le Pro,rama)le Read Onl"Memor"3 Estn ,arantiadas para 1 millón de ciclos de escrituralectura. &ueden &ueden lle,ar lle,ar a retene retenerr la in!orm in!ormaci ación ón sin ser alimen alimentad tadas as durant durante e
•
cientos de a5os. 6e or,a or,ani nia an n por por p,i p,ina nas s para para !aci !acili lita tarr su dire direcc ccio iona nami mien ento to "
• • • •
escr escrit itas as "
)or )orradas adas de
!orm orma
elc elctr tric ica a
EE& EE &'(M '(M
almacenamiento de la in!ormación. 7tilian para su !uncionamiento una tensión nica 9:olts 9:olts o o ;<;:olts3 6on compati)les con el protocolo serial I2C Marca re,istrada de Philips3 $a*/simo costo. Amplia -ariedad de encapsulados para adaptar el modelo necesario< de acuerdo al tama5o de la aplicación.
2.2 Protoo%o I2C
El $us I2C Inter = Inte,rated Circuit3 es un sistema de comunicación de dos ca)les< con propiedades de -elocidad de trans!erencia de datos considerada de media a )a*a 4>> ?+. a 1>> ?+.3 " que !ue desarrollado por Philips Semiconductor < a comienos de la dcada del 8>. (ri,inalmente creado para reducir los costos de los equipos electrónicos< tu-o sus primeras aplicaciones en controles de contraste< )rillo " -olumen en aparatos de tele-isión pero actualmente encontramos cone@iones por )us I2C en una
,ran -ariedad de computadoras<
equipos
industriales<
entretenimiento< medicina< sistemas militares " un ilimitado a)anico de aplicaciones e importantes usos potenciales. Antes de la aparición del protocolo I2C< las trans!erencias de datos de memorias a microprocesadores< eran realiadas en !orma paralela requiriendo de esta !orma encapsulados con una importante cantidades de pines 24< 28< o ms pines3. %a asi,nación de !unciones de los pines se repart/an entre el direccionamiento de la memoria< la selección< el control " la trans!erencia de datos. Esta ltima solamente requer/a de 8 pines ms otros oc+o pines para el direccionamiento< por mencionar al,unos. En contraste
con
este despil!arro
de pines< el protocoloI2C permite la
comunicación chip-to-chipB usando solo dos ca)les en una cone@ión serial< permitiendo de esta !orma comunicar dispositi-os con mu" pocas -/as. Estos dos ca)les son llamados C%o& SCL3 " Data SDA3 " son los encar,ados del direccionamiento< selección< control " trans!erencia de datos< de a un BIT por -e.
SDA est encar,ado del intercam)io de datos< mientras que SCL se encar,a de sincroniar al transmisor " al receptor durante la trans!erencia de los datos mencionados desde un IC al otro. Dentro del sistema de comunicación
I2C<
los
dispositi-os
estn
identi!icados
como Mae#tro Ma#ter 3 " E#%avo S%ave3< por lo que al dispositi-o que inicia el contacto " abreB el )us se lo denomina Ma#ter < mientras que al que recepciona " contesta el llamado se lo denomina S%ave.
%os
dispositi-os
conectados
ser Ma#ter solamente< S%ave solamente
al o
intercalar
)us las
pueden !unciones
de Ma#ter " S%ave de acuerdo como el sistema requiera< tal como es el caso de las memorias EEPROM I2C.
Este sistema puede interconectar a muc+os IC so)re el )us +asta 299 dispositi-os3 " todos conectados a los mismos dos ca)les SDA " SCL. Cada dispositi-o escla-o posee una nica dirección " cuando el Ma#ter transmita el llamado todos los CI s conectados al )us lo escuc+arn< pero solo le contestar aquel que posea la dirección que el transmisor inclu"ó en su llamada " ser con este nico S%ave< con quien iniciar la trans!erencia de datos +asta que decida cerrarlaB.
En el protocolo I2C solo pueden e@istir dos estados elctricos0 !lotante en alto " )a*o. El dispositi-o maestro o escla-o mane*an el )us I 2C mediante un dri-er de drenador a)ierto o colector a)ierto. %as l/neas 6DA " 6C% son lle-adas a :dd mediante resistores de pull up. De)ido a que el dri-er es de drenador a)ierto< solo puede lle-ar el )us I 2C a ni-el )a*o. Cuando la salida de relo* esta en ni-el ló,ico )a*o< el transistor M(6 es apa,ado. En este caso no !lu"e corriente desde " +acia el transistor M(6 " por lo tanto el )us es lle-ado a ni-el ló,ico alto por los resistores de pull up. En caso contrario el transistor M(6 es encendido " se lle-a las l/neas a ni-el ló,ico )a*o. El -alor del resistor de pull up depende de la capacitancia de
la
l/nea de comunicación " la -elocidad de comunicación. 6e recomiendan -alores de 2<2 ? " 1 ? para los modos de comunicación estndar " de alta -elocidad.
Co'e(i!' )e %o# )i#*o#itivo# a% b+# I2C e' "o)o# e#t,')ar - a%ta ve%oi)a) 2. Se/a%e# +ti%i0a)a# *ara %a tra'#ere'ia )e )ato# o' I2C 1. S Co')ii!' )e i'iio3: 7na condición de inicio indica que un dispositi-o podr/a trans!erir datos a tra-s del )us I2C. 7na condición de inicio es representada por un !lanco descendente en la l/nea 6DA cuando la se5al de relo* se encuentra en ni-el ló,ico alto.
2. P Co')ii!' )e *ara)a3: 7na condición de parada indica que un dispositi-o desea de*ar li)re el )us I2C. 7na -e li)erado el )us< otros dispositi-os podrn utiliarlo para transmitir datos. 7na condición de parada es representada por un !lanco ascendente en la l/nea 6DA cuando la se5al de relo* se encuentra en ni-el ló,ico alto. 7na -e que la condición de parada se completa am)as se5ales 6DA " 6C% se mantienen en alto< condición conocida como )us desocupado.
. R3 Co')ii!' )e i'iio re*eti)o: 7na se5al de inicio repetido es una se5al de inicio ,enerada sin +a)er antecedido una se5al de paro &3. Esta
se5al es utiliada por el dispositi-o maestro para comunicarse con otro dispositi-o escla-o o con el mismo escla-o en un modo di!erente de comunicación sin de*ar de usar el )us.
4. Dato#: El )loque de datos representa la trans!erencia de un paquete de datos de 8 )its de in!ormación. %os datos son en-iados por la l/nea 6DA< mientras los pulsos de relo* son en-iados por la l/nea 6C%. %a se5al de relo* puede ser alineada para con los datos para indicar si cada )it es 1B o >B. %os datos son -lidos en la l/nea 6DA solo cuando la se5al de relo* es alta. Cuando 6C% no est en alto es posi)le cam)iar los datos.
. AC5 Co')ii!' )e reo'oi"ie'to3: %a trans!erencia de datos en el )us serial )a*o el protocolo I 2C necesitan ser reconocidas positi-amente AC?3 o ne,ati-amente AC?3. 7n dispositi-o puede reconocer A3 la trans!erencia de cada )"te colocando la l/nea 6DA en ni-el )a*o durante el no-eno pulso de relo*. 6i el dispositi-o en cam)io mantiene la l/nea 6DA !lotante en alto transmite un reconocimiento ne,ati-o AC?3.
2.4 Si'ro'i0ai!':
Todos los maestros ,eneran sus propias se5ales de relo* so)re la l/nea 6C% para trans!erir datos. %os datos son -lidos solo durante el periodo en que se encuentra en ni-el ló,ico alto la se5al de relo*. &or lo tanto es necesaria una se5al de relo* para ar)itrar la trans!erencia de todos los )its. &ara la ma"or/a de los microcontroladores inclu"endo el &IC 18 la se5al de relo* 6C% es ,enerada por un contador que cuenta en !orma descendente un -alor pre-iamente pro,ramado. %a sincroniación de la se5al de relo* es realiada utiliando la cone@ión AD ca)leada del inter!ace I2C a la l/nea de relo* 6C%. Esto si,ni!ica que una transición de ni-el alto a )a*o en la l/nea 6C% causar que los dispositi-os que deseen iniciar la comunicación empearan a contar su periodo en )a*o " una -e que un dispositi-o +a ,enerado una se5al de relo* en )a*o mantendr la se5al de relo* en ese estado +asta que se alcance un estado alto.
%a transición de )a*o a alto de este relo* no cam)iar el estado de la l/nea 6C% si otra se5al de relo* C%?23 se encuentra en ni-el ló,ico )a*o. %a l/nea 6C% se mantendr en ni-el ló,ico )a*o por causa del dispositi-o con ma"or periodo en ni-el )a*o. %os dispositi-os con periodo de relo* ms corto se mantendrn en estado de espera durante este tiempo. Cuando todos los dispositi-os +an realiado el conteo de su periodo en ni-el ló,ico )a*o< la se5al de relo* ser li)erada " se cam)iar a ni-el alto.
%a sincroniación de relo* ocurre cuando -arios maestros tratan de mane*ar el )us I2C " por lo tanto el ar)itra*e del )us de)e seleccionar cual es el maestro ,anador.
2. Arbitraje: El protocolo I2C permite la e@istencia de mltiples maestros en el mismo )us. En caso de que ms de un maestro desee comenar la trans!erencia de datos al mismo tiempo un esquema de ar)itra*e es empleado para !orar a un maestro a a)andonar el )us. El dispositi-o maestro continua transmitiendo +asta que uno intenta un ni-el ló,ico alto mientras el otro transmite un ni-el )a*o. Como el dri-er del )us es de tipo drenador a)ierto el )us ser lle-ado a ni-el )a*o. El maestro intentando trans!erir una se5al en ni-el alto detectar un ni-el )a*o en la l/nea 6DA " a)andonar el )us cerrando su puerto de salida de datos. El maestro ,anador continuar su transmisión mientras el perdedor se con-ertir en escla-o. Este esquema de ar)itra*e es no destructi-o< un dispositi-o ,ana " los datos no se pierden.
2.6 7or"ato )e %a tra'#ere'ia )e )ato#:
El protocolo I2C permite a un dispositi-o utiliar direcciones de o 1> )its para especi!icar a un dispositi-o escla-o para la trans!erencia de datos. %os si,uientes son los posi)les !ormatos para la trans!erencia de datos en el protocolo I2C.
Mae#tro tra'#"i#or e#%avo ree*tor: %a dirección de trans!erencia no cam)ia.
Mae#tro %ee a% e#%avo i'"e)iata"e'te )e#*+8# )e% *ri"er b-te: En el momento del primer reconocimiento de comunicación -alida AC?(F%EDGE3 el maestro emisor se con-ierte en maestro receptor " el escla-o receptor se con-ierte en escla-o transmisor. El primer AC? es ,enerado por el escla-o. %a condición de 6T(& es ,enerada por el maestro el cual en-/a pre-iamente un AC? ne,ati-o A3.
7or"ato o"bi'a)o: Durante un cam)io de dirección dentro una trans!erencia la condición de inicio 6TA'T3 " la dirección del escla-o son repetidas pero con el )it 'F in-ertido. 6i un maestro receptor en-/a una condición de inicio repetida pre-iamente en-/a un AC? ne,ati-o.
2.9Direio'a"ie'to )e 9 bit#: El procedimiento de direccionamiento para el protocolo I 2C es tal que el primer )"te despus de la condición de inicio determina cual escla-o ser seleccionado por el maestro. %a e@cepción es el direccionamiento ,eneral el cual direcciona todos los dispositi-os. El primer )"te despus del )it de inicio transporta la dirección de )its " la dirección del mensa*e. Cuando el )it menos si,ni!icati-o es 1B el dispositi-o maestro lee in!ormación del escla-o seleccionado. En caso de >B el maestro escri)e in!ormación en el escla-o seleccionado.
Cuando una dirección es en-iada cada dispositi-o en el sistema compara los primeros )its despus de la condición de 6TA'T con su dirección. 6i am)as son i,uales< el dispositi-o se considera direccionado por el maestro " es por lo tanto un escla-o receptor o escla-o transmisor< dependiendo del )it 'F. El comit tcnico encar,ado de normar el uso del protocolo I 2C determina la u)icación de las direcciones tal como se detalla en la si,uiente ta)la0
DIRECCIN ESCLA;O Bit R<= >>>>>>> >>>>>>>
> 1
DESCRIPCIN Dirección de llamada ,eneral $"te de inicio
>>>>>>1 >>>>>1> >>>>>11 >>>>1XX 11111XX 1111>XX
X X X X X X
Dirección C$76 'eser-ado para di!erentes !ormatos de )us 'eser-ado para propósitos !uturos Códi,o de modo maestro 'eser-ado para propósitos !uturos Direccionamiento en modo escla-o de 1> )its
2.> Proe#o )e o"+'iai!' %a condición de 6TA'T o Inicio ocurre nicamente en la transición de un estado A%T( a un estado $A( en la l/nea 6DA mientras la l/nea 6C% se encuentre en un ni-el A%T(. En cam)io< la transición de un estado $A( a un estado A%T( en la l/nea 6DA< mientras la l/nea 6C% se encuentre en un ni-el A%T(< indicar una condición de 6T(& o &arada. %as condiciones de 6TA'T " 6T(& son siempre ,eneradas por el dispositi-o que asuma la condición de Master dentro del )us. El )us se considerar ocupado despus de una situación de 6TA'T " pasar a estar nue-amente li)re cierto tiempo despus de la transmisión de la condición de 6T(&. Este cierto tiempoB ser determinado por el Master " -endr especi!icado en la +o*a de datos del mismo.
7i?+ra 1: Te"*ori0ai!' )e% b+# I2C 7+e'te: ATMEL T@o @ire #eria% EEPROM )ata#eet3 2.Librera )e Mi&roC *ara e% b+# I 2C: %a )i)lioteca 6o!tHareI2C de mi#roC &'( contiene las !unciones necesarias para esta)lecer la comunicación con dispositi-os I2C. Estas !unciones pueden
emplearse con cualquier microcontrolador &IC aunque no dispon,a de módulos I2C3. %as !unciones incorporadas permiten que el usuario emplee un microcontrolador &IC como maestro el modo multiJmaestro no est disponi)le3. %a ta)la muestra las !unciones que pueden ser utiliadas para la comunicación I2C0
7NCIN
DESCRIPCIN
Con!i,ura el módulo I2C por so!tHare Determina si el )us I2C est li)re " en-/a una se5al de 6TA'T 6o!tI2C'eadac#3 %ee un )"te del escla-o " responde con una se5al (AC? ac# KK >3 o AC? ac# KK 13 6o!tI2CFritedato3 En-/a un )"te dato por el )us I2C 6o!tI2C6top3 En-/a una se5al de 6T(& 6o!tI2C$rea#3 Todas las !unciones de la )i)lioteca 6o!tHareI2C pueden )loquear el !lu*o de pro,rama. 6i se e*ecuta esta !unción desde la !unción de interrupción se producir el des)loqueo del pro,rama. &ara el microcontrolador ATMEGA se tiene otro con*unto de li)rer/as que cumplen las mismas !unciones que en la ta)la anterior. 6o!tI2CInit3 6o!tI2C6tart3
7NCIN TFIInit3 TFI6tart3 TFI$us"3 TFI'ead3
TFIFritedato3 TFI6top3 TFI$rea#3
TFI6tatus3 TFIClose3
DESCRIPCIN Con!i,ura el módulo I2C por so!tHare Determina si el )us I2C est li)re " en-/a una se5al de 6TA'T 6e5alia el estado del )us %ee un )"te del escla-o " responde con una se5al (AC? ac# KK >3 o AC? ac# KK 13 En-/a un )"te dato por el )us I2C En-/a una se5al de 6T(& Todas las !unciones de la )i)lioteca 6o!tHareI2C pueden )loquear el !lu*o de pro,rama. 'etorna el estado del )us Cierra la cone@ión del )us
Cuando se utilia la )i)lioteca 6o!tHareI2C se de)e des+a)ilitar las interrupciones. %os pines utiliados en la comunicación de)en estar conectados a resistores de pull up.
Trabajo )e %aboratorio:
PRIMERA 7IRMA: Transcri)ir el si,uiente pro,rama e*emplo utiliando el microcontrolador ATMEGA 128 " el so!tHare Mi#roC &ro !or A:'. void main(){ DDRB = 0xFF; PORTB = 0; TWI_Init(100000); TWI_Start(); TWI_Write(0xA TWI_Write(); TWI_Write(0xAA); TWI_Sto!(); De"a#_100m$(); TWI_Start(); TWI_Write(0xA); TWI_Write(); TWI_Sto!(); TWI_Start(); TWI_Write(0xA%); PORTB = TWI_Read(0&); TWI_Sto!(); '
SENDA 7IRMA: En el circuito anterior< aumentar una pantalla %CD< dos pulsadores " la )ocina &ieo $uer3< donde la tarea que realiar es la si,uiente0 &or cada pulso que +a,amos en el )otton GuardarB< las -aria)les se ,uardaran contador3 internamente en el A:'< despus de +a)er realiado el ,uardado de los -alores< pulsamos el )otton %eerB para que nos pueda motrar en el %CD los
datos ,uardados " tam)in cada -e que se muestre un dato en el %CD< escuc+aremos un tono de 2?L con una duración de ><9se,3. (TA0 el estudiante de)er colocar los dispositi-os respetando el orden que tiene la tar*eta entrenadora 7I D6