Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: Saaac en 15 de Septiembre de 2011, 08:04:38
Título: Utilizar los bits de una array de byte.
Publicado por: Saaac en 15 de Septiembre de 2011, 08:04:38
Hola,
He visto un tema parecido a mi duda pero la mia aun se complica un poco mas espero que me la podais resolver, porque me he quedado atascado. Os explico. tengo la siguiente declaracion de variables de estructura:
Y mi pregunta es, igual que la variable Condicion_ES la paso a un bit con el :1 Porque el compilador no me deja hacer lo mismo con la variable array Condicion_Bp[ns]. Si le añado a esta variable el :1 me da ERROR el compilador. Hay alguna solucion en lenguaje C para poder convertir una array dentro de una estructura en bits.
Gracias.
Título: Re: Utilizar los bits de una array de byte.
Publicado por: Suky en 15 de Septiembre de 2011, 09:56:59
Podes crear un tipo anteriormente:
Código: C
typedefstruct{
unsigned bit0:1;
unsigned bit1:1;
unsigned bit2:1;
unsigned bit3:1;
unsigned bit4:1;
unsigned bit5:1;
unsigned bit6:1;
unsigned bit7:1;
}VAL_BITS;
y después hacer:
Código: C
struct EstructuraIO{
unsignedchar TamanoMensaje;
VAL_BITS Condicion_Bp;
unsignedchar Condicion_Es:1;
unsignedchar Valorant:1;
};
Si no existe el tipo bool no creo que te permita crear un array.
Saludos!
Título: Re: Utilizar los bits de una array de byte.
Publicado por: Saaac en 15 de Septiembre de 2011, 10:26:39
Muchas Gracias Suky,
No se si es posible pero a mi lo que me gustaria es poder trabajar con el array de un solo bit igual que lo hago con las unsigned char para no ocupar tanto espacio en RAM. Me explico con un ejemplo haber si se me entiende. EJEMPLO: ¿Lo que me interesaria saber si se puede hacer es igual que la var (Condicion_Es:1) ocupo en RAM 1 bit en lugar de un byte. Me interesaria que para la var (Condicion_Bp[ns]:1) ocupar 1 bit para cada posicion de la array y no un byte pero si pongo el codigo de esta forma no me compila hay SOLUCION a esta duda? struct EstructuraIO{ unsigned char Condicion_Es:1; unsigned char Condicion_Bp[ns]:1; unsigned char Valorant:1; unsigned char TamanoMensaje; };
Título: Re: Utilizar los bits de una array de byte.
Publicado por: Suky en 15 de Septiembre de 2011, 12:19:23
Como te comente, si no existe el tipo BOOL no vas a poder. En otros compiladores de PICs por ejemplo, si lo permite:
Código: C
struct EstructuraIO{
unsignedchar Condicion_Es:1;
bool Condicion_Bp[ns];
unsignedchar Valorant:1;
unsignedchar TamanoMensaje;
};
:mrgreen:
Título: Re: Utilizar los bits de una array de byte.
Publicado por: BrunoF en 15 de Septiembre de 2011, 12:45:29
Algunos compiladores sí soportan el tipo boolean, pero NO soportan ARRAY de booleans. El CCS hace un tiempo comenzó a soportarlo. Qué compilador estás utilizando?
Título: Re: Utilizar los bits de una array de byte.
Publicado por: Saaac en 15 de Septiembre de 2011, 12:55:12
Gracias Suky pero el bool no me lo reconece.
Hola BrunoF, ¿Como puedo saber el compilador estoy usando? el programa es el FREESCALE CODEWARRIOR version 5.9.0 build2803, uso el de por defecto.