Tp3 DSP Ahlem Mhelheli et Oumayma Hamdi 2GII1 6- filtre RIF a- // L138_loop_int

Tp3 DSP Ahlem Mhelheli et Oumayma Hamdi 2GII1 6- filtre RIF a- // L138_loop_intr.c // #include "L138_LCDK_aic3106_init.h" interrupt void interrupt4(void) // interrupt service routine { uint32_t sample; sample= input_sample(); // lecture des échantillons des voies L + R depuis l'ADC output_sample(sample); // ecrire les échantillons L + R vers le DAC return; } int main(void) { L138_initialise_intr(FS_48000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB,LCDK_LINE_INPUT); while(1); } Filtre passe haut #include "L138_LCDK_aic3106_init.h" //#include "rif2.h" //tableau des coefficients du filtre passe bas #include "haut.h" //tableau des coefficients du filtre passe bas float x[N]; // tableau pour stocker les échantillons interrupt void interrupt4(void) { short i; float yn =0; x[0] = (float)(input_left_sample()); // lecture échantillon for (i=0 ; i<N ; i++) // Calculer la sortie filtrée yn +=fhaut[i]*x[i]; for (i=N-1 ; i>0; i--) // Mettre à jour le tableau de échantillons x[i] = x[i-1]; output_left_sample((int)(yn)); // écriture de la sortie filtrée*/ return; } int main(void) { L138_initialise_intr(FS_48000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB,LCDK_LINE_INPUT); while(1); } Fichier haut.h Filtre passe bas #include "L138_LCDK_aic3106_init.h" #include "bas.h" //tableau des coefficients du filtre passe bas //#include "haut.h" //tableau des coefficients du filtre passe bas float x[N]; // tableau pour stocker les échantillons interrupt void interrupt4(void) { short i; float yn =0; x[0] = (float)(input_left_sample()); // lecture échantillon for (i=0 ; i<N ; i++) // Calculer la sortie filtrée yn +=fbas[i]*x[i]; for (i=N-1 ; i>0; i--) // Mettre à jour le tableau de échantillons x[i] = x[i-1]; output_left_sample((int)(yn)); // écriture de la sortie filtrée*/ return; } int main(void) { L138_initialise_intr(FS_48000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB,LCDK_LINE_INPUT); while(1); } Fichier bas .h d- // Programme qui gère les deux filtres passe haut et passe bas // #include "L138_LCDK_aic3106_init.h" #include "bas.h" #include "haut.h" uint32_t numero_RIF =0; // sans filtrage par défaut float dly[N]; // tableau des échantillons float h[2][N]; // tableau pour stocker les coefficients des deux filtres bas et haut interrupt void interrupt4(void) // routine d'interruption { int i; float yn = 0.0; if (numero_RIF!=0) // filtre passe bas ou haut { dly[0] = (float)(input_left_sample()); // lecture échantillon gauche for (i = 0; i< N; i++) // calcul de la sortie filtrée yn +=(h[numero_RIF][i]*dly[i]); for (i = N-1; i > 0; i--) // mise à jaour du tableau des échantillons dly[i] = dly[i-1]; output_left_sample((uint16_t)(yn)); } else output_left_sample(input_left_sample()); // sans filtrage return; } int main() { int i; for (i=0; i<N; i++) // initialisation du tableau des coefficients des deux filtres passe bas et haut { dly[i] = 0.0; h[0][i] = fbas[i]; h[1][i] = fhaut[i]; } L138_initialise_intr(FS_48000_HZ,ADC_GAIN_0DB,DAC_ATTEN_0DB,LCDK_LINE_INPUT); while(1); } Part 4 uploads/Litterature/ tp3-dsp.pdf

  • 24
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager