fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Brujula CMPS03

10 Respuestas
5 Usuarios
0 Reactions
4,601 Visitas
boops
Respuestas: 1813
Topic starter
(@boops)
Ardero
Registrado: hace 19 años

Bueno, hace tiempo que tengo una de estas brujulas y me encuentro con un problema, no consigo que lea nada de forma estable. Si uso la salida PWM funciona estupendamente pero en cuanto uso el bus I2C empiezo a leer valores cambiantes. He probado diferentes valores de pulls ups, delays entre los comandos, cambio de comandos. Incluso leyendo el registro 0x0C (deberia ser siempre 0), me lee 0 solo en el 50% de la veces.

¿Alguna idea?

Responder
9 respuestas
juanjo
Respuestas: 451
(@juanjo)
Ardero
Registrado: hace 18 años

Hola Boops,

No he usado nunca el I2C, pero si el SPI. Una pregunta antes de soltar nada. ¿Para el I2C es como en el SPI, es decir el registro de escritura y lectura es el mismo? Si es este el caso, puede estar sucediendo que leas un valor que has escrito antes. Averigua cual es el último dato en decimal que has escrito y mira a ver si concuerda con el valor 67 ("C") que dices que lees la mayor parte del tiempo.

Responder
boops
Respuestas: 1813
Topic starter
(@boops)
Ardero
Registrado: hace 19 años

Juanjo, si, cuando leo 67 he enviado antes 0x0C

i2c_write(0x0C);

(no el caracter 67 "C")

No me explico que puede ocurrir :S

Ademas cuando trabajo con la brújula envío 0x01 y no me devuelve ningún valor fijo que se pueda identificar como ese "1"

Responder
juanjo
Respuestas: 451
(@juanjo)
Ardero
Registrado: hace 18 años

La "C" no lo decia por el valor hexadecimal, si no por que el 67 es la "C" en ASCII, 🙂

Lo que está claro es que el error es sistemático según has comentado, ya que en un número de casos siempre aparece ese valor. Te comento esto por que seguro que puedes descartar otras posibles fuentes e intentar ver de donde proviene dicho error, que lo más probable sea un fallo.

Responder
ralmarqz
Respuestas: 1
(@ralmarqz)
New Member
Registrado: hace 16 años

hola compañeros, les comento que estoy tratando de desarrollar un proyecto con la brujula CMPS03, pero tengo problemas con ella, les cuento que la brujula esta haciendo la lectura pero los valores que me esta arroja no son los adecuados,
por favor si alguien me puede echar una manito se lo agradecere.

Responder
alex
Respuestas: 22
 alex
(@alex)
Ardero
Registrado: hace 19 años

Yo no trabajo com pic's, pero por si te sirve de algo con los micros de motorola de la serie 68hc908, el código sería el siguiente:

//Enviamos star, byte de direccion y byte de configuracion en modo transmisor
MMADR = DIR_CMPS03R; //Byte de direccion
MMRW = 0; //Maestro en modo transmisor
MMDTR = REG_1B; //Configuracion: registro a leer
while(MMTXBE == 1); //Espera hasta llenar el registro del transmisor
MMAST = 1; //Modo maestro

//Enviamos star, byte de direccion en modo receptor
MMADR = DIR_CMPS03W; //Byte de direccion
MMRW = 1; //Maestro en modo receptor
MMDTR = 0x00; //Configuracion: registro a leer
while(MMTXBE == 1); //Espera hasta llenar el registro del transmisor
MMAST = 1; //Modo maestro

//Leemos el valor enviado por el modulo brujula
angulo = MMDRR;

//Stop I2c
MMNAKIF = 1; //No detectar acuse de recibo (ACK)
MMAST = 0; //Pasa a modo esclavo

//Enviamos por el puerto serie el valor leido mediante i2c de la brujula
while(SCISCTE == 0); //Espera transmisor libre
SCDR = angulo; //Enviamos intensidad canal 1
}

espero te pueda dar una pista de lo que puedes estar haciendo mal.

Responder
Página 2 / 2
Compartir: