Advertisement
losmi93

PR

Dec 23rd, 2015
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.95 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////////////
  2. // *
  3. // * Predmetni projekat iz predmeta OAiS DSP 1
  4. // * Godina: 2015
  5. // *
  6. // * Zadatak: Prijemnik DTMF signala
  7. // * Autor:
  8. // *                                                                          
  9. // *                                                                          
  10. //////////////////////////////////////////////////////////////////////////////
  11.  
  12. #include "stdio.h"
  13. #include "ezdsp5535.h"
  14. #include "ezdsp5535_i2c.h"
  15. #include "aic3204.h"
  16. #include "ezdsp5535_aic3204_dma.h"
  17. #include "ezdsp5535_i2s.h"
  18. #include "print_number.h"
  19. #include "math.h"
  20. #include "Dsplib.h"
  21.  
  22. /* Frekvencija odabiranja */
  23. #define SAMPLE_RATE 8000L
  24.  
  25. #define PI 3.14159265
  26.  
  27. /* Velicina prozora za racunanje FFT-a */
  28. #define FFT_SIZE AUDIO_IO_SIZE
  29.  
  30. /* Granica definisana od strane korisnika */
  31. /* TODO Dodeliti vrednost */
  32. #define TRESHOLD 0L
  33.  
  34. /* Niz za smestanje odbiraka ulaznog signala */
  35. #pragma DATA_ALIGN(InputBufferL,4)
  36. Int16 InputBufferL[AUDIO_IO_SIZE];
  37. #pragma DATA_ALIGN(InputBufferR,4)
  38. Int16 InputBufferR[AUDIO_IO_SIZE];
  39.  
  40. //-----------------------------------------------
  41. #pragma DATA_ALIGN(InputBufferFFT,4)
  42. Int32 InputBufferFFT[AUDIO_IO_SIZE];
  43. //--------------------------------------------
  44.  
  45.  
  46. void main( void )
  47. {  
  48.     int i;
  49.  
  50.     /* Inicijalizaija razvojne ploce */
  51.     EZDSP5535_init( );
  52.  
  53.     /* Inicijalizacija LCD kontrolera */
  54.     initPrintNumber();
  55.  
  56.     printf("\n DTMF Prijemnik\n");
  57.  
  58.     /* Inicijalizacija veze sa AIC3204 kodekom (AD/DA) */
  59.     aic3204_hardware_init();
  60.    
  61.     /* Inicijalizacija AIC3204 kodeka */
  62.     aic3204_init();
  63.  
  64.     aic3204_dma_init();
  65.  
  66.     /* Postavljanje vrednosti frekvencije odabiranja i pojacanja na kodeku */
  67.     set_sampling_frequency_and_gain(SAMPLE_RATE, 0);
  68.  
  69.     Int32 THRESHOLD  = 10000000;
  70.  
  71.     while(1)
  72.     {
  73.         aic3204_read_block(InputBufferL, InputBufferR);
  74.  
  75.         rfft(InputBufferL, AUDIO_IO_SIZE , SCALE);
  76.  
  77.         for(i = 0; i < AUDIO_IO_SIZE; i +=2){
  78.             InputBufferFFT[i/2] = (Int32)InputBufferL[i]*(Int32)InputBufferL[i]  +  (Int32)InputBufferL[i+1]*(Int32)InputBufferL[i+1];
  79.         }
  80.  
  81.     if((InputBufferFFT[6]+InputBufferFFT[7]) > THRESHOLD && (InputBufferFFT[22]) > THRESHOLD)printChar('1');
  82.     else if((InputBufferFFT[6]+InputBufferFFT[7]) > THRESHOLD && ((InputBufferFFT[25]) > THRESHOLD))printChar('2');
  83.     else if((InputBufferFFT[6]+InputBufferFFT[7]) > THRESHOLD && ((InputBufferFFT[27]) > THRESHOLD))printChar('3');
  84.     else if((InputBufferFFT[6]+InputBufferFFT[7]) > THRESHOLD && ((InputBufferFFT[29] + InputBufferFFT[30]) > THRESHOLD))printChar('A');
  85.     else if((InputBufferFFT[9]) > THRESHOLD && ((InputBufferFFT[22]) > THRESHOLD))printChar('4');
  86.     else if((InputBufferFFT[9]) > THRESHOLD && ((InputBufferFFT[25]) > THRESHOLD))printChar('5');
  87.     else if((InputBufferFFT[9]) > THRESHOLD && ((InputBufferFFT[27]) > THRESHOLD))printChar('6');
  88.     else if((InputBufferFFT[9]) > THRESHOLD && ((InputBufferFFT[29] + InputBufferFFT[30]) > THRESHOLD))printChar('B');
  89.     else if((InputBufferFFT[11]) > THRESHOLD && ((InputBufferFFT[22]) > THRESHOLD))printChar('7');
  90.     else if((InputBufferFFT[11]) > THRESHOLD && ((InputBufferFFT[25]) > THRESHOLD))printChar('8');
  91.     else if((InputBufferFFT[11]) > THRESHOLD && ((InputBufferFFT[27]) > THRESHOLD))printChar('9');
  92.     else if((InputBufferFFT[11]) > THRESHOLD && ((InputBufferFFT[29] + InputBufferFFT[30]) > THRESHOLD))printChar('C');
  93.     else if((InputBufferFFT[13]+InputBufferFFT[14]) && ((InputBufferFFT[22]) > THRESHOLD))printChar('*');
  94.     else if((InputBufferFFT[13]+InputBufferFFT[14]) && ((InputBufferFFT[25]) > THRESHOLD))printChar('0');
  95.     else if((InputBufferFFT[13]+InputBufferFFT[14]) && ((InputBufferFFT[27]) > THRESHOLD))printChar('#');
  96.     else if((InputBufferFFT[13]+InputBufferFFT[14]) && ((InputBufferFFT[29] + InputBufferFFT[30]) > THRESHOLD))printChar('D');
  97.     else printChar(' ');
  98.  
  99.  
  100.     }
  101.        
  102.     /* Prekid veze sa AIC3204 kodekom */
  103.     aic3204_disable();
  104.  
  105.     printf( "\n***Kraj programa***\n" );
  106.     SW_BREAKPOINT;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement