TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Diego Gonzalez en 14 de Septiembre de 2011, 16:41:08

Título: I2C preguntas varias...
Publicado por: Diego Gonzalez en 14 de Septiembre de 2011, 16:41:08
Hola a todos

Ultimamente llevo tiempo preparando diversos circuitos perifericos para aprender a usar memorias i2c, sensores de temperatura, y ultimamente el ds1307 que me acaba de llegar de china. Mi experiencia con el bus i2c es muy poca y aun estoy aprendiendo leyendome mi libro del pic16f84 desarrollo de proyectos, donde se expone como funciona este bus. Despues he estado buscando por el foro y por la red muchos ejemplos y voy comprendiendolo ya todo, pero aun hay cosas que se me escapan, por ejemplo, a ver si alguien tiene la amabilidad de explicarme la diferencia entre i2c_read() y i2c_read(0)

Esta seria mi primera pregunta, un afectuoso saludo y gracias de antemano

Código: [Seleccionar]
void ds1307_get_date(BYTE &day, BYTE &mth, BYTE &year, BYTE &dow)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x03);                     // Start at REG 3 - Day of week
  i2c_start();
  i2c_write(0xD1);
  dow  = bcd2bin(i2c_read() & 0x7f);   // REG 3 (01111111)
  day  = bcd2bin(i2c_read() & 0x3f);   // REG 4 (00111111)
  mth  = bcd2bin(i2c_read() & 0x1f);   // REG 5 (00011111)
  year = bcd2bin(i2c_read(0));         // REG 6
  i2c_stop();
}
Título: Re: I2C preguntas varias...
Publicado por: BrunoF en 14 de Septiembre de 2011, 16:52:44
Hola Diego.

En la ayuda del CCS está la respuesta a tu pregunta.

Citar
Syntax:
 data = i2c_read();
data = i2c_read(ack);
data = i2c_read(stream, ack);
 
Parameters:
 ack -Optional, defaults to 1.
0 indicates do not ack.
1 indicates to ack.
stream - specify the stream defined in #USE I2C


Al enviar el 0 como parámetro, se indica que se desea realizar un NACK. Esto debería estar especificado en el protocolo del dispositivo con el que te estés comunicando. Revisá su datasheet para ver cómo está compuesta la trama.

Saludos.
Título: Re: I2C preguntas varias...
Publicado por: Diego Gonzalez en 15 de Septiembre de 2011, 02:13:02
Gracias gracias Bruno, muchas gracias, no se como no se me paso por la mente.
Al buscar por mi pregunta solo encontraba programas de i2c pero no precisamente esa diferencia. :D