Autor Tema: tipo de datos  (Leído 2530 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado johnny84

  • PIC10
  • *
  • Mensajes: 12
tipo de datos
« en: 05 de Junio de 2008, 12:51:40 »
Hola a todos!!

Tengo una dudilla con la representacion de los numeros, es que no me aclaro.
Quiero cargar en la memoria de datos 64 valores de una onda senoidal, del -1 a 1. que tipo de datos debo poner? He utilizado la libreria dsPIC30F Math Library
He puesto
     
          float  sine_table[64] __attribute__ ((space(xmemory)))

luego en el programa

              for (i=0; i<64; i++)

                sine_table=sin((2*3.14/64)*i); //No se si hay que ponerlo  en radianes o en grados

En el MPLAB C COMPILER MANUAL USER´S GUIDE  dice que los datos tipo float van del 2exp(-126) al 2exp(128) y son de 32bits. La cosa es : como saca los valores negativos del seno?? Miro en la memoria de datos y no entiendo los valores que obtengo. Si me sale, por ejemplo, A33E3DC8, como se interpreta eso?
Como no lo entiendo bien, he pensado en meterlos yo directamente en la memoria, despues de calcularlos en excel o algo. Aunque eso tampoco se como hacerlo en C, pero si en ensamblador. Alguna sugerencia?

Gracias por vuestra colaboracion!!

Desconectado vtasco

  • PIC12
  • **
  • Mensajes: 72
Re: tipo de datos
« Respuesta #1 en: 05 de Junio de 2008, 13:07:16 »
hola, creo que te falta poner así  el sine_table:

Código: C
  1. for (i=0; i<64; i++)
  2. {
  3. sine_table[i]=sin((2*3.14/64)*i); //No se si hay que ponerlo  en radianes o en grados
  4. }

Tienes que poner el argumento en radianes, justo hoy trabajé algo con senos y va en radianes.
Suerte!

Desconectado johnny84

  • PIC10
  • *
  • Mensajes: 12
Re: tipo de datos
« Respuesta #2 en: 05 de Junio de 2008, 19:16:32 »
Muchas gracias!!

Ya he probado en radianes y va bien.

Pero, sabes como se obtienen los valores negativos de la funcion seno y luego como puedo operar con ellos?

Gracias de nuevo!!

Desconectado vtasco

  • PIC12
  • **
  • Mensajes: 72
Re: tipo de datos
« Respuesta #3 en: 05 de Junio de 2008, 22:19:00 »
La función seno es negativa entre pi ypi/2. En tu caso, sería con el contador a partir de 33.

Tu quieres generar una tabla para usarla después?? en ese caso, puedes acceder al arreglo mediante un índice o con un puntero.

suerte!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: tipo de datos
« Respuesta #4 en: 06 de Junio de 2008, 02:10:55 »
Para utilizar los números negativos no tienes más que utilizarlos. El compilador internamente los trata y para ti resulta transparente.
Acabo de probar este código y va perfecto:
   float pepe;
   pepe = -1.0/2.0;
   printf ("%f",pepe);

De todas formas, si lo que quieres es tener cargada una tabla con todos los posibles resultados de la función seno para luego utilizarla, te aconsejo que sólo cargues los resultados de un cuadrante. Para averiguar el resultado de los otros 3 cuadrantes sólo tienes que restar los grados que correspondan (90,180 o 270) y cambiar el signo si procede (3º y 4º cuadrante).