Vous êtes sur la page 1sur 3

TP2 les entres sorties avec la DSK

Manipulation N1

Cet exemple illustre lutilisation des entres sorties avec le codec AIC23. Lexemple (loop_intr.c) utilise linterruption INT11 dj vue prcdemment. Cet exemple de programme est trs important puisqu'il peut tre utilis comme un programme de base pour construire tout un projet. Par exemple, on pourrait insrer un programme de filtre numrique ou autre, entre les instructions :
sample_data = input_sample(); //input data output_sample(sample_data); //output data

Les deux fonctions input_sample et output_sample, ainsi comm_intr sont incluses dans le fichier de support de la communication C6713dskinit.c. Le fichier C6713dskinit.c mis votre disposition est une version modifie dun (de) fichier(s) dlivr(s) avec la DSK, il peut tre utilis comme une "bote noire de fonctions".
//Loop_intr.c programme boucle avec interrupt. Output = input ave dlai //fichier de support codec-DSK // frquence d'chantillonnage // ISR //input data //output data

#include "dsk6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; interrupt void c_int11() { short sample_data; sample_data = input_sample(); output_sample(sample_data); return; } void main() { comm_intr(); while(1); }

//initialisation DSK, codec, McBSP //boucle infinie

1. Analysez le programme source ci-dessus 2. Crez un dossier pour votre projet et copiez-y les fichiers c6713dskinit.c et c6713dskinit.h qui se trouvent dans le dossier Support (nous voulons garder les fichiers \Support\c6713dskinit.c et c6713dskinit.h intact) 3. Crez le projet et ajoutez le fichier c6713dskinit.c (celui qui se trouve dans votre dossier projet) 4. Compilez le projet avec les options traditionnelles, et excutez le programme 5. Utilisez le GBF pour gnrer un signal sinusodal damplitude 1V et de frquence entre 1 et 3kHz 6. Connectez le GBF lentre LINE IN de la DSK (assurez-vous de lamplitude du signal) 7. Connectez la sortie LINE OUT de la DSK loscilloscope 8. Utilisez le second canal de loscilloscope pour visualiser le signal du GBF 9. Vrifier que la sortie est un signal sinusodal damplitude 0,4V retard par rapport lentre 10. Augmentez lamplitude du signal au-del de 3V (ne pas dpasser les 3,5V), observez la distorsion du signal de sortie Entre avec gain

Pour ajuster le gain du canal de la ligne dentre de gauche, le fichier support c6713dskinit.h doit tre lgrement modifi. 1. Ouvrez le fichier c6713dskinit.h dans CCStudio 2. Modifiez le setup register 0 (Set-Up Reg 0) de 0x0017 0x001c, ceci augmente le gain (ou le volume) de lentre de gauche 3. Reconstruisez le projet et excutez le programme 4. Assurez-vous que lamplitude de la sortie passe de la valeur prcdente ( 0,4V) 1V

Le canal gauche de l'entre a t slectionn puisque nous utilisons les fonctions input_sample et output_sample, qui utilisent par dfaut les canaux de gauche. Autrement, cest le registre Set-Up Reg 0 qui doit tre modifi et dans ce cas les fonctions input_sample et output_sample doivent tre remplaces par les fonctions input_left_sample et output_left_sample (voir le fichier c6713dskinit.c ) Slection de lentre microphone Dans ce cas il faut modifier la valeur du registre Set-Up Reg 4 (fichier c6713dskinit.h ) qui doit passer de 0x0011 0x0015. En fait le bit INSEL = input select for ADC: line doit passer de 0 1 (cest le troisime bit le moins significatif) 1. Faites les modifications ncessaires pour faire une acquisition partir de lentre microphone Page 2 sur 3

Manipulation N2 Le programme suivant (Echo.c) produit un effet dcho ajustable avec la taille du buffer, il utilise le mode interruption du DSP. 1. Construisez le projet, aidez-vous des TP prcdents pour le choix des fichiers ajouter et des options de compilation 2. Tester le programme laide du microphone et des hauts parleurs 3. Changer la taille du tableau buffer pour voir leffet 4. Expliquer les rsultats
//Echo.c effet d'echo, changement avec la taille du buffer
#include "dsk6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; short input, output; short bufferlength = 3000; short buffer[3000]; short i = 0; short amplitude = 5; //fichier support codec-DSK //fixe la frquence d'chantillonnage //taille du buffer, pour le dlai //cration du buffer //pour varier l'amplitude de l'cho

interrupt void c_int11() //ISR { input = input_sample(); //la nouvelle valeur de l'input output=input + 0.1*amplitude*buffer[i]; //la nouvelle valeur de l'input // + l'ancienne output_sample(output); //output buffer[i] = input; i++; if (i >= bufferlength) i = 0; } main() { comm_intr(); while(1); } //stockage de la nouvelle valeur de // l'entre //incrmentation du compteur buffer //si fin du buffer rinitialise

//init DSK, codec, McBSP //boucle infinie

Page 3 sur 3

Vous aimerez peut-être aussi