TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Palomino86 en 28 de Octubre de 2010, 19:38:46

Título: Float to String en C18 compiler
Publicado por: Palomino86 en 28 de Octubre de 2010, 19:38:46
Hola que tal foro;

Estaba viendo que C18 no cuenta entre sus  librerías que trae por default una que realice la conversión de flotantes a string; pero en el congreso de virtual de hoy se menciono que existe una función que se llama "ftoa" la cual realiza tal conversión pero que se tenia que descargar de la pagina de Microchip. La he estado buscando en la pagina y no la escuentro... De pura casualidad nadie de por aqui la tiene o podria decirme exactamente en que seccion de la pagina de microchip viene....

Saludos
Título: Re: Float to String en C18 compiler
Publicado por: migsantiago en 28 de Octubre de 2010, 19:50:46
Hola que tal foro;

Estaba viendo que C18 no cuenta entre sus  librerías que trae por default una que realice la conversión de flotantes a string; pero en el congreso de virtual de hoy se menciono que existe una función que se llama "ftoa" la cual realiza tal conversión pero que se tenia que descargar de la pagina de Microchip. La he estado buscando en la pagina y no la escuentro... De pura casualidad nadie de por aqui la tiene o podria decirme exactamente en que seccion de la pagina de microchip viene....

Saludos

Hola, parece ser ésta:

Código: [Seleccionar]
void ftoa(unsigned char *buf, float f) {
        unsigned int rem;
        unsigned char *s,length=0;
        int i;
 
        i = (int)((float)f*10);
 
        s = buf;
        if (i == 0){            //print 0.0 with null termination here
                *s++ = '0';
                *s++ = '.';
                *s++ = '0';
                *s=0;                   //null terminate the string
        } else {       
                if (i < 0) {
                        *buf++ = '-';
                        s = buf;
                        i = -i;
                }
                //while-loop to "decode" the long integer to ASCII by append '0', string in reverse manner
                //If it is an integer of 124 -> string = {'4', '2', '1'}
                while (i) {
                        ++length;
                        rem = i % 10;
                        *s++ = rem + '0';
                        i /= 10;
                }
                //reverse the string in this for-loop, string became {'1', '2', '4'} after this for-loop
                for(rem=0; ((unsigned char)rem)<length/2; rem++) {
                        *(buf+length) = *(buf+((unsigned char)rem));
                        *(buf+((unsigned char)rem)) = *(buf+(length-((unsigned char)rem)-1));
                        *(buf+(length-((unsigned char)rem)-1)) = *(buf+length);
                }
 
                /* Take care of the special case of 0.x if length ==1*/
                if(length==1) {
                        *(buf+2) = *buf;
                        *buf = '0';
                        *(buf+1) = '.';
                        *(s+2)=0;                       //null terminate
                } else {
                        *(buf+length) = *(buf+length-1);
                        *(buf+length-1)='.';
                        *(s+1)=0;                       //null terminate
                }
        }
 }

http://www.microchip.com/forums/m499118-print.aspx
Título: Re: Float to String en C18 compiler
Publicado por: Palomino86 en 01 de Noviembre de 2010, 12:57:42
Les dejo la función que convierte float a strings para quien ocupe de esta la descargue de aquí. Tal función me la proporciono Andrés Raúl Burno Saravia

Saludos :-/
Título: Re: Float to String en C18 compiler
Publicado por: cristian_elect en 03 de Noviembre de 2010, 00:59:53
Estas funciones no se basa en el formato IEEE 754 que define a un numero float, si utilizaria le costaria menos codigo y una convercion mas rapida.
Título: Re: Float to String en C18 compiler
Publicado por: Palomino86 en 25 de Noviembre de 2010, 14:29:25
Ejemplito de la funcion
Título: Re: Float to String en C18 compiler
Publicado por: Palomino86 en 25 de Noviembre de 2010, 15:11:02
Que tal cristian_elect

Oye pues si tienes alguna funcion que tenga el formato IEEE 754 que convierta flotantes a strings te agradeceria si pudieras pasarla y asi beneficiarnos todos :)

Saludos
Título: Re: Float to String en C18 compiler
Publicado por: cristian_elect en 28 de Noviembre de 2010, 02:58:03
De la red me consegui esta info.
Hay esta la teoria de los numeros flotantes como lo escriben.
De hay ise un programa para mi atmega por que usar C a full formato consume mucha flash.