Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include "laborki_2cfg.h"
- #include "utility.h"
- #include "DSPF_sp_cfftr2_dit.h"
- #pragma DATA_ALIGN(sygnal,8)
- #pragma DATA_ALIGN(okno_out,8)
- #pragma DATA_ALIGN(w,8)
- #define M_PI 3.14159265358979323846 /* pi */
- int probka;
- short probkap;
- short probkal;
- int Nmaska = 1025;
- int n;
- int e;
- int c;
- int i;
- int k;
- int N = 1024;
- int tmp = 0;
- float sygnal[2048] = {0};
- float okno_in[2048]={0};
- float okno_out[2048]={0};
- float fft_hamming[2048]={0};
- float wynikfft[1024];
- double multiplier;
- float x[2048];
- float w[1024];
- void main()
- {
- n = 0;
- e = 0;
- MCBSP_enableRcv(hMcbsp1);
- MCBSP_enableXmt(hMcbsp1);
- tw_genr2fft(w, N); // Generate coefficient table
- bit_rev(w, N>>1); // Bit-reverse coefficient table
- IER |= 0x2000; //odblokowanie przerwania
- }
- void przerwanie_rcv()
- {
- probka = MCBSP_read(hMcbsp1);
- probkap = (short)(probka);
- if(e) {
- e--;
- return;
- }
- sygnal[n]= probkap;//składanie sygnału
- okno_in[n]=probkap;//kopia sygnału do oknowania
- n++;
- sygnal[n]=0;
- okno_in[n]=0;
- if(n==2047)
- {
- e=2;
- DSPF_sp_cfftr2_dit(sygnal, w, N);//fft bez okna
- DSPF_sp_cfftr2_dit(okno_out, w, N); //fft po oknie
- bit_rev(sygnal, 2*N>>1); // Bit-reverse coefficient table
- bit_rev(okno_out, 2*N>>1);
- for(i=0; i<1024; i++)
- {
- wynikfft[i]=sqrtf(pow(sygnal[2*i],2) + pow(sygnal[2*i+1],2));
- fft_hamming[i]=sqrtf(pow(okno_out[2*i],2) + pow(okno_out[2*i+1],2));
- }
- i=0;
- //Dodawanie Okna Hanny
- for(k = 0; k < 2048; k++)
- {
- multiplier = 1 - cos(2*M_PI*k/2047);
- okno_out[k] = multiplier * okno_in[k];
- okno_out[k+1] = multiplier * okno_in[k+1];
- }
- }
- n++;
- n&=2047;
- MCBSP_write(hMcbsp1, probka);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement