TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: hectdiaf en 14 de Abril de 2010, 21:58:23

Título: libreria ieeefloat
Publicado por: hectdiaf en 14 de Abril de 2010, 21:58:23
hola quisiera saber si alguien sabe como usar esta libreria ya que lo he intntado y mi error siempre es el mismo

"constant out of the valid range 023 is reserved by the  compiler"

en conclusion no se utilizar esa libreria.

agradeceria la colaboracion a quien me pueda brindar alugunas pautas para poder utilizar esta libreria

Título: Re: libreria ieeefloat
Publicado por: giff en 15 de Abril de 2010, 22:49:08
Yo se usar esa libreria.

En primero lugar recomiendo que tomes el archivo ieeefloat.c de la carpeta drivers y la copies a la carpeta de tu proyecto para no tener que recurrir a rutas largas para invocarla (creo que tuve problemas ahi).

Esta librería se compone de dos funciones:
f_PICtoIEEE(): conviertes un formato float CCS a uno float IEEE. Es una función a la cual le ingresas una variable del tipo float de CCS y te devuelve el valor int32 desde el pto de vista del compilador.
f_IEEEtoPIC(): conviertes un formato float IEEE a uno float CSS. es una funcion a la cual le ingresas una variable del tipo int32 y te devuelve un valor en formato float CSS

Por ejemplo se usa asi:


Código: [Seleccionar]
///antes hay declaraciones varias como fuses y includes de otras librerias.

#include <ieeefloat.c>

int32 dato_float_ieee; ///esta será la variable que  contendra la salida conversion de la funcion f_PICtoIEE() porque devuelve un dato entero de 32bit
float dato_float_ccs; ///esta variable contendra el dato float (para el compilador CSS) que devuelve la función f_IEEEtoPIC()

main()
{
dato_float_ccs=3.1416; ///por decir algo, guardamos este valor en una variable
while(true)
    {
     dato_float_ieee = f_PICtoIEEE(dato_float_ccs); //convierto el punto flotante de css y me retorna un número entero de 32 bit normalizado a la norma IEEE
     
//////aca tu codigo, por ejemplo mandar por usb a un computador o que se yo/////
    }

}

Si quieres retornar un valor en formato IEEE, por ejemplo, proveniente de un computador; y quieres trabajarlo bajo CSS debes usar la funcion f_IEEEtoPIC

La forma de usarla seria asi:
Código: [Seleccionar]
dato_float_ccs = funcion f_IEEEtoPIC(dato_float_ieee);


dato_float_css debe ser una variable del tipo float para que el compilador la interprete bien.

Y lo que va en paréntesis de estas dos funciones será el dato que quieres convertir desde CCS a IEEE o al revés, desde IEEE hacia CCS

Espero haber sido medianamente claro.

PD: que PIC estas usando?
Título: Re: libreria ieeefloat
Publicado por: Suky en 16 de Abril de 2010, 05:58:33
En primero lugar recomiendo que tomes el archivo ieeefloat.c de la carpeta drivers y la copies a la carpeta de tu proyecto para no tener que recurrir a rutas largas para invocarla (creo que tuve problemas ahi).

Eso no es necesario, la carpeta driver ya está indicada en el proyecto como contenedora de librerías, así que solo basta:

Código: [Seleccionar]
#include <ieeefloat.c>
hectdiaf , utiliza el buscador, hay información al respecto.


Saludos!
Título: Re: libreria ieeefloat
Publicado por: giff en 16 de Abril de 2010, 11:38:02
En primero lugar recomiendo que tomes el archivo ieeefloat.c de la carpeta drivers y la copies a la carpeta de tu proyecto para no tener que recurrir a rutas largas para invocarla (creo que tuve problemas ahi).

Eso no es necesario, la carpeta driver ya está indicada en el proyecto como contenedora de librerías, así que solo basta:

ok, gracias por la aclaracion
Título: Re: libreria ieeefloat
Publicado por: hectdiaf en 16 de Abril de 2010, 12:15:39
giff mil gracias por tu respuesta me podre a probar y tan pronto lo tenga colocare mi codigo para compartirlo.


el pic es 16f873a

pregunta el pic tiene algo que ver ?
Título: Re: libreria ieeefloat
Publicado por: giff en 16 de Abril de 2010, 12:39:21
giff mil gracias por tu respuesta me podre a probar y tan pronto lo tenga colocare mi codigo para compartirlo.


el pic es 16f873a

pregunta el pic tiene algo que ver ?

habría que ver el código, quizás la variable de ingreso a una función la declaraste mal.
Título: Re: libreria ieeefloat
Publicado por: 11alex11 en 03 de Junio de 2010, 17:50:53
muy buenas a todas,

la preguntar por la qual escribo es la siguiente:
Utilizo un PIC 16F877 y estoy intentando hacer una comunicación via RS-232 desde el pic al Ordenador. Consiste en dos sensores de temperatura ( que me envian la temperatura en digital, es decir,  no hago la conversión AD) y seguidamente se guarda en una EEPROM (24LC512). Luego leo directamente de esta EEPROM para enviar por el puerto seriies hacia el ordenador.
El problema me surge cuando al visualizar en el ordenador (por hyperterminal) la comunicación se cumple pero los datos que me envia son ceros. Es decir, el Ordenador me recibe datos pero no correctos. No solo me pasa con los sensores, sino también con el ClocK, que es el mismo caso, me recibe aparentemente datos de hora, minutos i segundos pero tambien son ceros.

Que problema hay? Puede ser esta conversión de la que hablais? O es otro tema?

Desde ya MIL gracias!

Saludos!