Esempio n. 1
0
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