Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.41 KB | None | 0 0
  1. #include "math.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "dsk6713_aic23.h"
  5. #include <dsk6713_dip.h>
  6. #include <dsk6713_led.h>
  7.  
  8. #define DSK6713_AIC23_INPUT 0x0011
  9. #define LEFT 0
  10. #define RIGHT 1
  11. #define SAMPLES 8
  12.  
  13. union AIC_data{
  14.     Uint32 uint;
  15.     short channel[2];
  16. };
  17.  
  18. float *repmat(float *pDouble, int rep, int i);
  19.  
  20. Uint32 fs=DSK6713_AIC23_FREQ_44KHZ;
  21. Uint16 inputsource=DSK6713_AIC23_INPUT; // select input
  22.  
  23. void main()
  24. {
  25.     union AIC_data aicSample;
  26.     float low_n, high_n, delay_1, delay_2, delay_step, *delay;
  27.     int delay_vary_p, n_rep, no_points, i=0, j=0;
  28.     double *x, *f;
  29.  
  30.     int input;
  31.  
  32.  
  33.     float delta, Fc[7000000], Fs;
  34.     short i;
  35.     float Fw = 2000.0;
  36.     float damp = 0.05;
  37.     short minF = 300;
  38.     short maxF = 2000;
  39.     short a = 0;
  40.     delta = Fw/Fs;
  41.     for(i=minF;i<maxF; i=i+delta){
  42.         Fc[a]= Fc[a]+i;
  43.         a++;
  44.     }
  45.     comm_poll();
  46.     DSK6713_DIP_init();
  47.     DSK6713_LED_init();
  48.     while(1)
  49.     {
  50.  
  51.         if(DSK6713_DIP_get(0)==1)
  52.         {
  53.  
  54.  
  55.  
  56.             low_n = round(0.01*fs);
  57.             high_n = round(0.4*fs);
  58.             delay_vary_p = 8;
  59.             delay_step = (delay_vary_p/4)/(1/fs);
  60.  
  61.             x = (double) malloc(delay_step * sizeof(double*));
  62.             for(i = low_n; i < delay_step; i++) {
  63.                 x[i] = double(i) / (delay_step - high_n);
  64.             }
  65.  
  66.             f = (double) malloc(delay_step * sizeof(double*));
  67.             for(i = high_n; i< delay_step; i++)
  68.             {
  69.                 f[i] = double(i) / (delay_step - low_n);
  70.             }
  71.  
  72.             delay_1= round(x);
  73.             delay_2= round(input);
  74.  
  75.             delay = (double) malloc(delay_1+delay_2 * sizeof(double*));
  76.  
  77.             for(i= 0; i<sizeof(delay_1); i++){
  78.  
  79.                 delay[i] = delay_1[i];
  80.             }
  81.  
  82.             for(i= 0; i<sizeof(delay_2); i++){
  83.                 delay[sizeof(delay_1) + i] = delay_2[i];
  84.             }
  85.  
  86.             no_points = sizeof(input)/2; //pogleaj
  87.  
  88.             n_rep = round(no_points/sizeof(delay));
  89.             delay = repmat(delay, n_rep, 1);
  90.  
  91.             delay = (double) malloc(delay + delay * sizeof(double*));
  92.  
  93.             for(i= 0; i<sizeof(delay); i++){
  94.                 delay[i] = delay[i];
  95.  
  96.             }
  97.  
  98.             for(i= sizeof(delay); i<no_points; i++){
  99.                 delay[sizeof(delay) + i] = delay[sizeof(delay) + i]+0.25; //matleb
  100.  
  101.             }
  102.  
  103.             for(i=0; i< no_points; i++){
  104.                 for (j = 0; j< 2; j++){
  105.                     output_signal[i, j] = 0;
  106.                 }
  107.             }
  108.  
  109.             for(i=0; i< no_points; i++){
  110.                 n = i-delay(j);
  111.                 if(n>0){
  112.                     output_signal[i, 1] = input_signal[i,1] + input_signal[n,1]
  113.                 }
  114.                 else{
  115.                     output_signal[i,1] = y[i, 1];
  116.                 }
  117.             }
  118.  
  119.             //sad kps samo output_signal na izlaz
  120.  
  121.             DSK6713_LED_on(0);
  122.             aicSample.uint = input_sample();
  123.             output_sample(aicSample.uint);
  124.  
  125.         }
  126.         else
  127.             DSK6713_LED_off(0);
  128.     }
  129. }
  130.  
  131. float *repmat(float *source, int count, int expand) {
  132.     int i, j;
  133.     float* target = (float*)malloc(sizeof(float)*count * expand);
  134.     for (i = 0; i < count; ++i) {
  135.         for (j = 0; j < expand; ++j) {
  136.             target[i * expand + j] = source[i];
  137.         }
  138.     }
  139.     return target;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement