Estoy usando el compilador C18 y aprendí que reconocer la función de sondeo ayudará enormemente a reducir el tiempo de escritura para eliminar el retraso fijo en los métodos tradicionales. Bueno, estoy usando EEPROM 24LC256 y hay una función para reconocer el sondeo en él.
He escrito un código para Reconocer el sondeo.
long eewrite_p( int address,int msg)
{
int my_response;
int i;
i2c_init();
//if(!i2c_initialised) return ' long eewrite_p( int address,int msg)
{
int my_response;
int i;
i2c_init();
//if(!i2c_initialised) return '%pre%';
StartI2C(); //Send the Start Bit
Nop();
IdleI2C(); //Wait to complete
Nop();
WriteI2C( 0xA0 );
Nop();
IdleI2C();
//Wait to complete
WriteI2C( address>>8);
Nop();
IdleI2C();
WriteI2C(address&0xFF);
Nop();
IdleI2C();
my_response = WriteI2C(msg);
Nop();
AckI2C();
IdleI2C();
StopI2C(); //Send the Stop condition
Nop();
IdleI2C(); //Wait to complete
}
';
StartI2C(); //Send the Start Bit
Nop();
IdleI2C(); //Wait to complete
Nop();
WriteI2C( 0xA0 );
Nop();
IdleI2C();
//Wait to complete
WriteI2C( address>>8);
Nop();
IdleI2C();
WriteI2C(address&0xFF);
Nop();
IdleI2C();
my_response = WriteI2C(msg);
Nop();
AckI2C();
IdleI2C();
StopI2C(); //Send the Stop condition
Nop();
IdleI2C(); //Wait to complete
}
Bueno, este es un código antiguo sin reconocimiento de sondeo. He leído sobre el reconocimiento de sondeo para cada byte de control / Data / Address Byte es necesario. Corrígeme si estoy equivocado. ¿Debemos realizar un sondeo de reconocimiento para cada byte escrito en el chip?
Otra duda que tengo es si verificamos el acuse de recibo y si no se recibe, entonces la Hoja de datos / Notas de la aplicación dice que espere hasta que se reciba el Reconocimiento. De lo contrario, el código se sondea hasta que se recibe el Reconocimiento.
Bueno, anteriormente intenté escribir la dirección del dispositivo EE, una función tras otra, sin ningún retraso entre ellos y confío en que no se haya escrito bien. ¿Cómo puedo modificar el código actual para utilizar el sondeo de reconocimiento?