Bueno tengo novedades, he consultado el datasheet y aparece lo siguiente:
Write:
Read:
Me surgen dudas en cuanto al ACK, y el NACK. Se tienen en cuenta en CSS??o tengo que pasar de el??
Nose si este codigo es correcto:
Write:
i2c_start(); //Start condition
i2c_write(0x50); //Dirección del dispositivo esclavo
delay_ms(3);
i2c_write(DIRECCION_REGISTRO); //Escogemos el registro en el que queremos escribir.
delay_ms(3);
i2c_write(valor); //Valor a escribir en el registro.
delay_ms(3);
i2c_stop();
El write lo tengo bastante claro, me imagino que será algo similar a lo que he puesto. Por el contrario el Read no lo tengo tan claro. No entiendo el Random read, y no se si para leer un registro en concreto, tengo que usar el "current adress read" pero colocandome primero en el registro mediante una "falsa" escritura. Algo similar a esto:
i2c_start(); //Start condition
i2c_write(0x50); //Dirección del dispositivo esclavo
delay_ms(3);
i2c_write(DIRECCION_REGISTRO); //Escogemos el registro en el que queremos escribir.
delay_ms(3);
i2c_stop();
**A lo mejor me sobra este Stop?? i2c_start(); //Start condition
i2c_write(0x50);
**Creo que el Slave esta vez tengo que cambiarlo a 0x51delay_ms(3);
valor=i2c_read();
delay_ms(3);
i2c_stop();
**Creo que lo he entendidoNo se si será algo asi, espero que podais ayudarme. Por cierto, el byte slave del random read solo se usa en el random read verdad??El concepto de random read no lo veo muy claro...no se que utilidad puede tener.
Muchas gracias de antemano!!!