Punto flotante en PIC16F

Ver el tema anterior Ver el tema siguiente Ir abajo

Punto flotante en PIC16F

Mensaje por sigmaorion el Miér 4 Mar 2009 - 15:06

Buenas gente,

Estuve haciendo unas pruebas, que si bien muchos podrán decir que carecen de sentido, son sólo a modo experimental. Hice un programita muy sencillo en C (compilado con SDCC) que utiliza las librerías de punto flotante y corre en un PIC16F887.
Los resultados fueron positivos siempre que los números float sean positivos; por ejemplo:

float x;
unsigned char p;

x = 0;
while(1) {
p = x;
PORTD = p;

x= (x + .01);
if (x > 255)
x = 0;
}

Este ejemplo funciona correctamente, pero el siguiente no:

float x, y;
unsigned char p;

x=-128;
while(1) {
y = x + 128;
p = y;
PORTD = p;

x = (x + .01);
if (x > 127)
x = -128;
}

Ciertamente el programa compila pero no funciona bien cuando las variables definidas como 'float' contienen un valor negativo.
Si alguien tiene experiencia o alguna idea, toda sugerencia es bienvenida.

Gracias, saludos...

sigmaorion
Nuevo Usuario
Nuevo Usuario

Mensajes : 6
Fecha de inscripción : 01/03/2009

Volver arriba Ir abajo

Re: Punto flotante en PIC16F

Mensaje por arcachofo el Mar 10 Mar 2009 - 20:17

Hola sigmaorion.

La verdad es que no he utilizado operaciones con punto flotante en SDCC y tampoco tengo idea de como trabaja el tema, pero puestos a entrar en el tema hay una cosa que sería bueno que explicaras: cuando dices que el segundo ejemplo no funciona correctamente, a que te refieres exactamente?... osea cuales son los resultados que obtienes?


Saludos.
avatar
arcachofo
Participante Activo
Participante Activo

Mensajes : 91
Fecha de inscripción : 26/11/2008

Volver arriba Ir abajo

Re: Punto flotante en PIC16F

Mensaje por sigmaorion el Jue 12 Mar 2009 - 2:07

Hola Arcachofo,

No he logrado hacer un debbug del programa pero pareciera que cuando una variable definida como float tiene un valor negativo las operaciones no se realizan correctamente. En el ejemplo de abajo x = (x + 0.01) en realidad nunca incrementa la variable, sólo se incrementa si el salto es mayor a 0.5, o sea algo como x = (x + 0.5). Creería que las operaciones con float en números negativos siempre se redondean.
En la red no encontré nada, la verdad, un misterio...

Saludos...

sigmaorion
Nuevo Usuario
Nuevo Usuario

Mensajes : 6
Fecha de inscripción : 01/03/2009

Volver arriba Ir abajo

Re: Punto flotante en PIC16F

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.