Hola amigos,
Tengo un problemilla con un código de control automático de ganancia, consigo el resultado en float, y para trabajar con el dsPIC30F6014 necesito que esta variable sea int. He intentado cambiar de tipo a lo "bestia".. poniendo (int) pero no me redondea bien me quita demasiada información.
He buscado información en Internet, pero no he podido conseguir resultados..
me podeis hechar una mano?
Me valdría si me dijerais como pasar de float a integer perdiendo lo menos
información posible..
Gracias.
(He escrito este mensaje en la entrada del foro porque no sabía que había esta sección específica para programación en C.)
Este sería el código:
RXBUF0 es el buffer de entrada, y TXBUF0 es el de salida.
Fractional es un int.
He intentado multiplicar por 10000 y después hacer el cambio..
void __attribute__((__interrupt__)) _DCIInterrupt(void) {
xxx[0]=RXBUF0;
if (xxx[0]>=xmin)
{
h[k]=h[k-1]+mu*(nivel-abs(y[k-1]));
}
else
h[k]=h[k-1];
if(h[k]<=0)
{
h[k]=0.0001;
}
if (h[k]>=hmax)
{
h[k]=hmax;
}
//h[k]=min(h[k],hmax);
y[0]=(h[k]*xxx[0]);
//y[0] = y[0]*10000;
//y[0] = (abs(y[0]))/1000;
//y_final[0] = (fractional)((y[0])/10000);
TXBUF0=(int)(y[0]);
k++;
if(k == 79)
{
k = 0;
}
}
GRACIAS