TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: Samg en 01 de Diciembre de 2014, 15:35:40
-
Hola a Todos!!!
Yo estoy trabajando con un LPC1769, y quiero guardar una trama de bits que me tira un sensor. Este entrega 40 bits(5 bytes), por lo que creo una variable de 64 bits donde guardarlos:
typedef unsigned long uint64_t;
uint64_t DATO;
Como cada Byte es un dato, lo que hago es extraerlos por separado en una variable de 8 bits,recurriendo al desplazamiento como lo especifico mas abajo:
typedef unsigned char uint8_t;
uint8_t dato_RH;
El problema se presenta que cuando desplazo para sacar el dato del 5to byte de la siguiente forma:
dato_RH=(uint8_t) ((DATO>>32)& 0x00FF);
y me responde con:
warning: right shift count >= width of type [enabled by default]
dato_RH= (uint8_t)( (DATO >> 32) & 0x00FF);
^
Finished building.
Como verán no soy un experto en el tema,alguna opinión?
-
Hola, te marca la advertencia porque seguramente un unsigned long sigue pesando 32 bits.
Intenta:
typedef unsigned long long uint64_t;
Saludos.
-
5 post mas abajo del que creaste hay algo muy parecido con una solucion mucho más elegante:
http://www.todopic.com.ar/foros/index.php?topic=43562.0
saludos!
-
Hola, te marca la advertencia porque seguramente un unsigned long sigue pesando 32 bits.
Intenta:
typedef unsigned long long uint64_t;
Saludos.
Perfecto!
Muchas Gracias!!