Autor Tema: I2C preguntas varias...  (Leído 1564 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
I2C preguntas varias...
« 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();
}
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: I2C preguntas varias...
« Respuesta #1 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Diego Gonzalez

  • PIC18
  • ****
  • Mensajes: 323
    • Visita mi web sobre electronica,fisica,mecanica y demas temas....
Re: I2C preguntas varias...
« Respuesta #2 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
Visita mi web sobre electronica,fisica,mecanica y demas temas....

http://sites.google.com/site/skygaps/Home


 

anything