Estoy intentando leer los registros de salida de datos de X, Y, Z
Hasta ahora he podido:
Send a START - flag 0x08 = START condition transmitted.
Send 0x3C - flag 0x18 = SLA+W transmitted, ACK received.
//For configuring HMC5883L Control Register A & B
Send 0x02 data byte - flag 0x28 = Data byte transmitted, ACK received.
Send 0x00 data byte - flag 0x28 = Data byte transmitted, Ack Received.
Send a Repeat Start - flag 0x10 = Repeat Start condition transmitted.
Send 0x3D - flag 0x40 = SLA+R transmitted, ACK received.
Start > SLA+W > Configure Control Register A & B > Repeat Start > SLA+R > ??
Estoy atascado en qué hacer después de enviar un SLA + R, he intentado enviar un 0x03 (registro MSB para la Salida X). Sigo obteniendo un valor fijo repetido como (0,10,10,18 - repetir).
Mi pregunta principal sería ¿Cómo puedo leer correctamente la dirección de memoria del esclavo en 0x03 seguido de 0x04, 0x05, 0x06, 0x07, 0x08 con éxito?
En la hoja de datos se menciona:
Cuando se leen uno o más de los registros de salida, los nuevos datos no pueden ser colocado en cualquiera de los registros de datos de salida hasta los seis datos de salida Se leen los registros.
Para minimizar la comunicación entre el maestro y este dispositivo, el Puntero de dirección actualizado automáticamente sin intervención maestra. los el puntero de registro se incrementará en 1 automáticamente después de la El registro actual se ha leído correctamente.
El valor del puntero de dirección en sí no se puede leer a través del bus I2C. Alguna el intento de leer una ubicación de dirección no válida devuelve 0, y cualquier escritura a una ubicación de dirección no válida o un bit indefinido dentro de una válida la ubicación de la dirección es ignorada por este dispositivo.
Para mover el puntero de dirección a una ubicación de registro aleatorio, primer problema una "escritura" en esa ubicación de registro sin un byte de datos después de la elogiar. Por ejemplo, para mover el puntero de dirección al registro 10, envíe 0x3C 0x0A.
Cualquier ayuda sería apreciada, gracias de antemano!