I2C AVR Ejemplos


Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0

Anterior: I2C AVR Comunicación Serial.

I2C AVR ejemplos, en esta sección se realizarán algunos ejemplos realizados con el ATMEL STUDIO sobre la utilización del módulo TWI para la comunicación serial I2C AVR, esta es la parte práctica de lo que se vio aquí, por lo que se recomienda antes de continuar visitar el enlace indicado. Se utilizará el archivo de cabecera i2c.h que se obtuvo para la transmisión y recepción de datos con el I2C AVR, el microcontrolador AVR para realizar el I2C AVR ejemplos será el ATMEGA88 en un inicio, luego se complementará con otros AVRS.

El archivo de cabecera i2c.h que se obtuvo para ser utilizado con el ATMEGA88 en el que la Fosc=8Mhz, la velocidad de comunicación de 400Khz con un prescaler de 1 es el siguiente, con algunas pequeñas modificaciones se puede utilizar en cualquier otro ATMEGAxxx, si se utiliza otra Fosc y/o otra velocidad de comunicación hay que hacer los cálculos con TWBR=((Fosc/Velocidad)-16)/(2*prescaler) para el nuevo valor a cargar en TWBR.

I2C AVR EJEMPLOS

I2C AVR ejemplos 1 En este primer ejemplo se  realizará la comunicación serial I2C AVR entre el ATMEGA88, y la memoria EEPROM 24LC256 (revisar su hoja de datos) la que está fabricada para ser I2C PIC ejemplos 1 eeprom 24LC256utilizada como esclavo en la comunicación I2C, este integrado trae una dirección de fábrica para ser utilizado como esclavo de 7 bits, que es 1010(A2)(A1)(A0) los primeros 4 bits son fijos los siguientes 3 se pueden elegir poniendo los pines A2, A1 y A0 a 0 o a 1, si se utiliza una sola de estas memorias normalmente estos pines se ponen a 0 para que su dirección sea 1010000, aunque se puede elegir otra combinación.

El pin 8 es para la alimentación, el pin 4 es para el negativo, el pin 7 es para bloquear la escritura en la eeprom si se pone a 1, se el pin 7 no se conecta o se pone a 0 se podrá escribir en la eeprom.

El pin 6 SCL se conectará al pin SCL del ATMEGA88 y el pin 5 SDA se conectará al pin SDA del AVR.

Las direcciones de los registros de la EEPROM 24LC256 donde se guardarán los datos están constituidos por 2 bytes, en este integrado se pueden almacenar hasta 256Kbites.

El el ejemplo se enviarán o escribirán datos en la EEPROM mediante la comunicación I2C, luego se leerán los datos enviados a la EEPROM y serán vistos en forma binaria en el puerto D del ATMEGA88 que será el maestro.

El ejemplo es sencillo para no complicar el código, pero  se puede hacer lo que se quiera mediante la comunicación I2C. La idea es muy similar por no decir la misma si se utiliza otro tipo de dispositivo que se pueda utilizar como esclavo en la comunicación I2C AVR.

En este ejemplo lo que se busca es que se vea como utilizar el archivo de cabecera i2c.h ya que será el utilizado en los siguientes I2C AVR ejemplos.

En la siguiente imagen se ha creado un proyecto llamado i2c, con el archivo fuente llamado i2c_ejemplo1.c, el la parte resaltada i2c_ejemplo1 se hace click derecho y en Add se selecciona New Item…, en la ventana que aparece se selecciona Include File y en name se le da el nombre de i2c.h, y se pulsa sobre Add así se creará el archivo llamado i2c.h, luego se hace doble  click sobre el archivo i2c.h creado para abrir el editor i2c.h, se borra todo lo que el programa genere, que quede limpio, se copia el contenido mostrado lineas arriba para el archivo de cabecera y se pega dentro de i2c.h, el resultado debe ser similar al que se ve en la siguiente imagen.

I2C AVR i2c.h

A partir de este momento ya se puede utilizar el archivo de cabecera i2c.h para realizar la comunicación serial con el módulo TWI I2C AVR

El circuito utilizado para el I2C AVR ejemplos 1 es el siguiente:

I2C AVR ejemplos 1 circuito

En el código para el ATMEGA88 que será el maestro se tiene que crear una función para la escritura y otra función para la lectura de la memoria EEPROM, hay que seguir un orden en cuanto a la lectura y escritura en la comunicación serial I2C AVR, eso se puede ver aquí, será realizado en el ATMEL STUDIO, los pasos que se siguen estarán comentados en el código, en caso de utilizar otro dispositivo como esclavo se seguirán los mismos pasos.

En el ejemplo no se ha utilizado la función i2c_estado_com() para no complicar el ejemplo, esta función es muy útil y se verá la manera de utilizarla en próximos ejemplos.

La siguiente es una imagen del circuito de prueba realizado para el I2C AVR ejemplos 1

I2C AVR ejemplos 1 imagen

I2C PIC ejemplos 2

Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0