int main(void) { DisableDog(); CPUinit(); EALLOW; outputEnable(); LCDinit(); LCDclear(); initADC(); DAC_init(); // SRAMwrite(0); // SRAMaddress = 0x260000; //shouldn't need SRAM here fft_init(); initBuffers(); timerINIT(ISRvalue, samplingRate); while(1){ if(sampleBufferFull){ fft.InBuf = &sampleBuffer[0]; int i; for(i = 0;i<FFT_SIZE;i++){ outBuffer[i] = 0; } for(i=0;i<FFT_SIZE/2;i++){ MagBuffer[i] = 0; } RFFT_f32(&fft); //fft.MagBuf = &sampleBuffer[0]; RFFT_f32_mag(&fft); sampleBufferFull = 0; EINT; } else{ //do nothing } } return 0; }
void main(void) { Uint16 i; InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EINT; // Enable Global interrupt INTM ERTM; // Enable Global realtime interrupt DBGM // Clear input buffers: for(i=0; i < RFFT_SIZE; i++) { RFFTin1Buff[i] = 0.0f; } // Generate sample waveforms: Rad = 0.0f; for(i=0; i < RFFT_SIZE; i++) { RFFTin1Buff[i] = sin(Rad) + cos(Rad*2.3567); //Real input signal //FFTImag_in[i] = cos(Rad*8.345) + sin(Rad*5.789); Rad = Rad + RadStep; } rfft.FFTSize = RFFT_SIZE; rfft.FFTStages = RFFT_STAGES; rfft.InBuf = &RFFTin1Buff[0]; //Input buffer rfft.OutBuf = &RFFToutBuff[0]; //Output buffer rfft.CosSinBuf = &RFFTF32Coef[0]; //Twiddle factor buffer rfft.MagBuf = &RFFTmagBuff[0]; //Magnitude buffer RFFT_f32_sincostable(&rfft); //Calculate twiddle factor for (i=0; i < RFFT_SIZE; i++) { RFFToutBuff[i] = 0; //Clean up output buffer } for (i=0; i < RFFT_SIZE/2; i++) { RFFTmagBuff[i] = 0; //Clean up magnitude buffer } RFFT_f32(&rfft); //Calculate real FFT // OutBuf[0] = real[0] // OutBuf[1] = real[1] // OutBuf[2] = real[2] // ……… // OutBuf[N/2] = real[N/2] // OutBuf[N/2+1] = imag[N/2-1] // ……… // OutBuf[N-3] = imag[3] // OutBuf[N-2] = imag[2] // OutBuf[N-1] = imag[1] // RFFT_f32_mag(&rfft); //Calculate magnitude // MagBuf[0] = magnitude[0] // MagBuf[1] = magnitude[1] // MagBuf[2] = magnitude[2] // ……… // MagBuf[N/2] = magnitude[N/2] // MagBuf[N/2+1] = magnitude[N/2+1] // rfft.PhaseBuf = &RFFTmagBuff[0]; //Use magnitude buffer // RFFT_f32_phase(&rfft); //Calculate phase // Just sit and loop forever (optional): for(;;); } //End of main