Autor Tema: Consulta sobre I2C y libreria 2464.c (PICC)  (Leído 1780 veces)

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

Desconectado alexis78

  • PIC10
  • *
  • Mensajes: 3
Consulta sobre I2C y libreria 2464.c (PICC)
« en: 21 de Septiembre de 2010, 00:42:13 »
Estimados, he vuelto vuelto al ruedo con esto de los pics, estoy avanzando de a poco con el tema del lenguaje C.
He estado utilizando la libreria 2464.c (memoria i2c)  que viene en el PICC. Compile simule y funciono... pero tengo dudas con el ACK,



Código: [Seleccionar]
......
void write_ext_eeprom(long int address, BYTE data)
{
   short int status;
   i2c_start();         //Inicializa la transmisión
   i2c_write(0xa0);      //Escribe la palabra de control (dirección 0h + 0 para escritura)
   i2c_write((address>>8)&0x1f);//Parte alta de la dirección a escribir en la eeprom. 0001 1111
   i2c_write(address);      //Parte baja de la dirección a escribir en la eeprom.
   i2c_write(data);      //Dato a escribir
 
  aca empiezan las dudas  :(
Código: [Seleccionar]
-----------------------------------------------
   i2c_stop();         //Finalización de la transmisión.
   i2c_start();         //Reinicio

para que es necesario un stop y nuevamente un start?  como hago para leer el bit ACK con la funcion de escritura?

   status=i2c_write(0xa0);   //Lectura del bit ACK, para evitar escrituras incorrectas
   while(status==1)      //Si es 1 esperar a que responda el esclavo
   {
      i2c_start();
      status=i2c_write(0xa0);
   }
   i2c_stop();
}


-------------------------------------------------------------------------
BYTE read_ext_eeprom(long int address) {
   BYTE data;
   i2c_start();         //Inicializa la transmisión
   i2c_write(0xa0);      //Escribe la palabra de control (dirección 0h + 0 para escritura)
   i2c_write((address>>8)&0x1f);//Parte alta de la dirección a escribir en la eeprom.
   i2c_write(address);      //Parte baja de la dirección a escribir en la eeprom.
   i2c_start();          //Reinicio
   i2c_write(0xa1);      //Escribe la palabra de control (dirección 0h + 1 para lectura)
   data=i2c_read(0);      //lectura del dato
   i2c_stop();         //Finalización de la transmisión.  
   return(data);
}
.........
disculpen las molestias y desde ya muchas gracias!
« Última modificación: 21 de Septiembre de 2010, 12:29:18 por un Moderador, Razón: Se insertan bloques code. »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Consulta sobre I2C y libreria 2464.c (PICC)
« Respuesta #1 en: 21 de Septiembre de 2010, 01:18:35 »
El stop indica finalización de envío de datos y la memoria comienza a trabajar. El ack lo estas recibiendo en la variable status.


Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything