TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: johnny84 en 05 de Junio de 2008, 12:51:40

Título: tipo de datos
Publicado por: johnny84 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!!
Título: Re: tipo de datos
Publicado por: vtasco 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!
Título: Re: tipo de datos
Publicado por: johnny84 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!!
Título: Re: tipo de datos
Publicado por: vtasco 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!
Título: Re: tipo de datos
Publicado por: Nocturno 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).