Upload
daniel
View
125
Download
0
Embed Size (px)
Citation preview
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 1/8
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 2/8
Sistema de desarrollo para microcontroladores PIC®, iBOARD III.60
9.2. Detalle de la comunicación I2C
Figura 9.3. Detalle de la comunicación entre dispositivos I2C.Fuente: Tomado de la web: www.Mikroe.com
Una vez inicializada la comunicación I2C condición de “Start”, comienza elproceso de transmisión/recepción de la información “Bytes” entre el dispositivomaestro y el dispositivo esclavo como se puede apreciar en la Figura 9.3.
Todos los bytes de información colocados sobre la línea SDA deben tener 8 bits.El número máximo de bytes que pueden ser enviados en una transmisión no estárestringido, siendo el esclavo quien fija esta cantidad de acuerdo a suscaracterísticas.
El envío de los bits se efectúa siempre desde el bit más significativo MSB haciael menos significativo LSB. Aún cuando el maestro es quien siempre controla elestado de la línea del reloj; un esclavo de baja velocidad o que deba detener latransferencia de datos mientras efectúa otra función, puede forzar la línea SCL anivel bajo. Esto hace que el maestro entre en un estado de espera, durante el cual,no transmite información esperando a que el esclavo esté listo para continuar latransferencia en el punto donde había sido detenida.
9.3. Direccionamiento y formato de transferencia de información
En un bus I2C, los dispositivos se identifican por medio de una dirección única
que forma parte de un byte de control enviado por el dispositivo maestro al iniciarla comunicación. La definición inicial del I2C preveía la existencia de 7 bits paradireccionar al esclavo, de esta forma, se pueden conectar hasta 128 dispositivos enel bus.
Figura 9.4. Formato de la transferencia de bytes en un Bus I2C.Fuente: Tomado de la web: www.Philip.com
A partir de la versión 1.0 del año 1992, existe un formato de direccionamientode 10 bits y se ha incrementado significativamente el número de dispositivos quepueden conectarse simultáneamente al bus. El compilador Basic® no da soportepara dispositivos con direcciones de 10 bits por lo cual, no se hará un estudio
exhaustivo del direccionamiento del bus en estos casos.
9.4. Inicialización en modo maestro
La forma común de comunicación I2C, es utilizar al PIC® como único maestro ylos periféricos como esclavos, bajo está configuración, la habilitación de lascomunicaciones se logra a través de la configuración de los siguientes registros:
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 3/8
Sistema de desarrollo para microcontroladores PIC®, iBOARD III.61
• Ajustar la velocidad de Transmisión/Recepción a través del registro SSPADD.
• Eliminar el control del “slew rate” colocando a uno el bit SMP del registroSSPSTAT.
• Seleccionar el modo de comunicación tipo “Maestro” a través del registro
SSPCON.• Habilitar el módulo de comunicaciones bit SSPEN del registro SSPCON
• Esperar que el Flag bit SSPIF del registro PIR1 esté en uno indicando que todoestá listo para iniciar la comunicación.
Figura 9.5. Inicialización en modo maestro I2C para un PIC16F876.Fuente: Tomado de la web: www.Mikroe.com
9.5. Transmisión en modo maestro
• Una vez inicializado el módulo I2C (bit SSPIF = 1 del registro PIR1) secomienza la transmisión de los datos una vez que son cargados en el registroSSPBUF.
• El primer dato a cargar en el registro SSPBUF deberá ser la dirección deldispositivo esclavo, al cual, se pretende comunicar.
• El microcontrolador tendrá que esperar la señal de reconocimiento (ACK) porparte del dispositivo esclavo, cuando esto ocurre el bit ASKSTAT del registro
SSPCON2 se colocará en cero (0), y se podrán enviar los próximos bytes querepresentan los datos de igual forma.
• La transmisión de los datos termina cuando se coloca el bit SEN = 0 delregistro SSPCON2, de esta forma ocurrirá una condición de parada “STOP” habilitándose al pin SDA de nuevo a recibir una nueva trama de comunicación:
“Arranque … Dirección … Reconocimiento …Datos … Reconocimiento …{Datos … Reconocimiento} …. Parada”
Figura 9.6. Transmisión en modo maestro I2C para un PIC16F876.Fuente: Tomado de la web: www.Mikroe.com
9.6. Recepción en modo maestro
• La preparación para la recepción de datos es similar a la transmisión con laexcepción de que el último bit del primer byte enviado (dirección) contiene ununo (1). Esto le indica al maestro que recibirá datos desde el dispositivoesclavo.
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 4/8
Sistema de desarrollo para microcontroladores PIC®, iBOARD III.62
• El dispositivo esclavo comienza a enviar los bytes de datos uno a la vez, estosbytes son almacenados en el registro SSPSR.
• Una vez leído éste registro por parte del maestro, automáticamente el maestrogenera el bit de reconocimiento (ACK) al esclavo, lo cual, indica que el maestroestá listo para recibir otro byte con información.
• La recepción de los datos termina cuando se coloca el bit SEN = 0 del registroSSPCON2, de esta forma ocurrirá una condición de parada “STOP” habilitándose al pin SDA de nuevo a recibir una nueva trama de comunicación:
“Arranque … Dirección … Reconocimiento …Datos … Reconocimiento …{Datos … Reconocimiento} …. Parada”
Figura 9.7. Recepción en modo maestro I2C para un PIC16F876.Fuente: Tomado de la web: www.Mikroe.com
9.7. Dispositivos I2C en el sistema de desarrollo iBOARD III
La figura 9.8., muestra una fotografía del sistema de desarrollo iBOARD III, enla cual, los circuitos integrados con tecnología I2C se han encerrado en un recuadrode color rojo. El primero dispositivo incluido es un reloj de tiempo real fabricado porla empresa Dallas Semiconductor™ modelo DS1307. Este dispositivo es un
completo reloj – cronómetro en tiempo real, el cual, utilizaremos en general, comofuente de información referida a la hora y fecha en nuestras aplicaciones. Elsegundo dispositivo es la memoria Eeprom modelo 24LC16B de capacidad 2KByte x8bits.
Figura 9.8. Dispositivos con capacidad de comunicación I2C incluidosen el sistema de desarrollo iBOARD III.
DS1307 24LC16B
Pines de conexión al BUS I2C
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 5/8
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 6/8
Sistema de desarrollo para microcontroladores PIC®, iBOARD III.64
9.10. Ejemplo de utilización de una memoria Eeprom 24LC16B
Utilizando el sistema dedesarrollo iBOARD III, haga unprograma que permita escribir yleer las primeras 256 localidadesde la memoria Eeprom. Deberáconectar el Bus I2C almicrocontrolador de la siguienteforma: PORTB<0> con SDA yPORTB<1> con SCL. Tambiénse deberá mostrar el resultado através de IDE Serial comunicatora una velocidad de conexión de
2400 Baud.
' CAP_09_Ejemplo_01.bas' Leer y escribir el contenido de una memoria Eeprom modelo 24LC16B.' Escribe las primeras 256 localizaciones de la memoria eeprom y ' muestra su contenido por el terminal ....' -----------------------------------------------------------------
Device = 16F876XTAL 20
Declare SDA_PIN PORTB.0 ' Asignación SDA pinDeclare SCL_PIN PORTB.1 ' Asignación SCL pin
Dim Index As Byte ' Variable uso generalDim DatoLeido As Byte ' Variable uso general
Main:For Index = 0 To 255
BusOut $A0,Index,[Index] ' $A0 = dirección memoria eepromDelayMS 5 ' Retardo escritura por fabricante
Next
For Index = 0 To 255BusIn $A1,Index,[DatoLeido]HRSOut "Eeprom[",Dec Index,"]",_
" Valor Leído = ", Dec DatoLeido, 13
DelayMS 500Next
GoTo Main
Figura 9.10. Fotografía de las conexiones entre el PIC16F876y el Bus I2C del sistema de desarrollo iBOARD III.
Figura 9.11. Resultado de la ejecución del programa CAP_09_Ejemplo_01.bas
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 7/8
5/7/2018 Manual Iboard III Cap 09 - slidepdf.com
http://slidepdf.com/reader/full/manual-iboard-iii-cap-09 8/8
Sistema de desarrollo para microcontroladores PIC®, iBOARD III.66
' CAP_09_Ejemplo_02.bas' Configurar, leer y escribir en los registros internos del RTC ' Reloj de Tiempo Real, modelo DS1307 .........................' -------------------------------------------------------------
Device = 16F876XTAL 20
Declare SDA_PIN PORTB.0 ' Asignación pin SDA Declare SCL_PIN PORTB.1 ' Asignación pin SCL
Symbol Seg = 0 ' Registro de Seg.Symbol Minu = 1 ' Registro de Min.Symbol Hora = 2 ' Registro de HorasSymbol Dia = 4 ' Registro de DíaSymbol Mes = 5 ' Registro de MesSymbol Ano = 6 ' Registro de Año
Dim RTC[7] As Byte ' Vector almacenamientoDim Index As Byte ' Variable uso general
Main:GoSub RTC_INI ' Inicilizar el RTC GoSub FECHA_INI ' Cargar Fecha inicialDelayMS 500 ' Retardo 500ms
Loop:GoSub LEER_RTC ' Leer registros RTC GoSub MOSTRAR_RTC ' Mostrat registros RTC DelayMS 1000
GoTo Loop
End
RTC_INI:BusIn $D1,0,[RTC[Seg]] ' Lee byte 0, RTC BusOut $D0,0,[RTC[Seg] & $7F] ' Pone 0 en bit CH Return ' Para Activar RTC
FECHA_INI:RTC[Seg] = $50 ' Ajusta los Seg. inicialesRTC[Minu] = $59 ' Ajusta los Min. inicialesRTC[Hora] = $23 ' Ajusta la Hora inicial
RTC[Dia] = $28 ' Ajusta el Día inicialRTC[Mes] = $02 ' Ajusta el Mes inicialRTC[Ano] = $08 ' Ajusta el Año inicialBusOut $D0,0,[Str RTC\7] ' Escribe registros RTC
Return
LEER_RTC:For Index = 0 To 6
BusIn $D1,Index,[RTC[Index]] ' Lee registros Next ' del RTC 0..6 GoSub BCD2BIN
Return
MOSTRAR_RTC:HRSOut "Hora = ", DEC2 RTC[Hora], ":", DEC2 RTC[Minu],_
":", DEC2 RTC[Seg],13
HRSOut "Fecha = ", DEC2 RTC[Dia], "/", DEC2 RTC[Mes],_"/", DEC2 RTC[Ano],13,13
Return
BCD2BIN:For Index = 0 To 6
RTC[Index] = (RTC[Index]/16)*10 + RTC[Index] & $0F Next
Return
Figura 9.15. Resultado de la ejecución del programa CAP_09_Ejemplo_02.basUtilizando el IDE Serial Comunicator.