kiubole kiero acer un proyecto con el dspic 2010 para realizar una FFT a una señal de entrada y me estoi basando en el programa ke viene de ejemplo en MPLAB pero en ese prog viene simulada la entrada y kiero ver komo lleno el arreglo de entradas reales y komo sako la FFT para el resultado de la transfromada en un osciloscopio
este es mi prog: SI AI OTRO PROGRAMA MAS SENCILLO O KOMO SEA PERO KE FUNCIONE LES AGRADECERIA KE ME LO PASARAN
#include <p30f2010.h>
#include <stdio.h>
#include <dsp.h>
#include "fft1.h"
#define ENTRADA PORTBbits.RB0 /****** aki es donde kiero ke este la señal de entrada*/
#define SALIDA PORTEbits.RE0
_FOSC(CSW_FSCM_OFF & XT);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & MCLR_DIS);
_FGS(CODE_PROT_OFF);
fractcomplex ENTRADAS[MUESTRAS]__attribute__ ((section (".ydata, data, ymemory"),aligned (MUESTRAS * 2 *2)));
#ifndef TABLA_DE_COEFICIENTES
fractcomplex COEFICIENTES[MUESTRAS/2] __attribute__ ((section (".xbss, bss, xmemory"), aligned (MUESTRAS*2)));
#else
extern const fractcomplex COEFICIENTES[MUESTRAS/2]__attribute__ ((space(auto_psv), aligned (MUESTRAS*2)));
#endif
int peakFrequencyBin = 0;
unsigned long peakFrequency = 0;
int main(void)
{
int i = 0;
fractional *p_real = &ENTRADAS[0].real ;
fractcomplex *p_cmpx = &ENTRADAS[0] ;
TRISB=0XFFFF; /****no se si esten bien estas abilitaciones
TRISE=0X0000;
ADPCFG=0xFFFF;
#ifndef TABLA_DE_COEFICIENTES
TwidFactorInit (LOG2_MUESTRAS, &COEFICIENTES[0], 0);
#endif
for ( i = 0; i < MUESTRAS; i++ )
{
*p_real = ENTRADA >>1 ;
*p_real++;
}
p_real = &ENTRADAS[(MUESTRAS/2)-1].real ;
p_cmpx = &ENTRADAS[MUESTRAS-1];
for ( i = MUESTRAS; i > 0; i-- )
{
(*p_cmpx).real = (*p_real--);
(*p_cmpx--).imag = 0x0000;
}
#ifndef TABLA_DE_COEFICIENTES
FFTComplexIP (LOG2_MUESTRAS, &ENTRADAS[0], &COEFICIENTES[0], COEFFS_IN_DATA);
#else
FFTComplexIP (LOG2_MUESTRAS, &ENTRADAS[0], (fractcomplex *) __builtin_psvoffset(&COEFICIENTES[0]), (int) __builtin_psvpage(&COEFICIENTES[0]));
#endif
BitReverseComplex (LOG2_MUESTRAS, &ENTRADAS[0]);
SquareMagnitudeCplx(MUESTRAS, &ENTRADAS[0], &ENTRADAS[0].real);
VectorMax(MUESTRAS/2, &ENTRADAS[0].real, &peakFrequencyBin);
peakFrequency = peakFrequencyBin*(SAMPLING_RATE/MUESTRAS);
*p_real = &ENTRADAS[0].real ;
*p_cmpx = &ENTRADAS[0] ;
for ( i = 0; i < MUESTRAS; i++ ) /* SEGUN IO AKI SAKO EL RESULTADO DE LA ffT */
{
SALIDA = *p_real >>1 ;
*p_real++;
}
for
while(1);
}