Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

21/04/2013 #1


Numeros negativos con pic
Que tal estoy trabajando con un sensor hmc5883l en el cual los valores de salida los da en dos registros para cada eje x,y,z lo qe me dice el datasheet "The value stored in these two registers is a 16-bit value in 2’s complement form, whose range is 0xF800 to 0x07FF" o sea guarda los valores de sallida a complemento a 2, mi duda es tengo que convertirlos a decimal? para poder trabajar con ellos y como es que voy a saber si obtengo valores negativos de los ejes o nomas los convierto a decimal y ya? estoy trabajando con un pic18 en lenguaje c
21/04/2013 #2

Avatar de nuk

saludos lo que te podría decir es que tienes la escala desde F800h (negativo) hasta 07FFh (positivo)
creo que con eso ya tienes los valores y no es necesario pasarlos a decimal ( a mi punto de vista) a menos
que tengas que mostrar algún dato si es así considera usar alguna librería del C (esos que te ayudan a convertir cosas o realiza tu la conversión con el fundamento "HEX to DEC" )
también considera si te es necesario mostrar decimales osea ( 000.0 )

es todo lo que te puedo aportar mi vasto conocimiento solo se limita al ASSEMBLER
te recomiendo proponer algo mas como el código C o el diagrama
para que no termines en moderación por imcuplir una que otra norma

saludos
22/04/2013 #3


gracias, si efectivamente no tuve que hacer conversiones ni nada solo tuve que utilizar variables tipo long o float para poder trabajar con ellos, ya pueden dejar el tema morir muchas gracias
22/04/2013 #4

Avatar de nuk

que bueno que hallas solucionado tu problema
si el tema ya no tiene sentido, y consideras cerrarlo, reportarlo a algún moderador ellos sabrán que hacer.
saludos
22/04/2013 #5
Moderador

Avatar de Chico3001

long o float?? eso se me hace un desperdicio de memoria... apoco no funciono con signed int??
22/04/2013 #6


pues asi los tenia en un principio pero nomas me daba valores positivos, segun yo con eso si era suficiente pero creo que no a no ser que yo haya hecho algo mal pero yo guardaba los dos registros por decir del eje x la parte baja en una variable y la parte alta en una variable de 16 bits signed int hacia el corrimiento de 8 bits luego una or para juntar el dato y luego guardaba ese valor en una variable tipo signed int llamada x y ya al momento de mandar los datos por el puerto serie me daba valores de 65000 y tantos utilizando printf(x=%u,x) luego hize el cambio a signed long con printf(x=%ld,x)y ya me dieron en los ejes por decir x=-132 y=50 z=-145 y pues hize la conversion a grados y si me da de 0 a 360 y pues ya asi lo deje mejor para no meterme ya en mas problemas
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.