Engineering School, 2nd year
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

45 lines
1.7 KiB

/********************************************************************************
* Origine du fichier L:\up\tp3\ex3a\bloc_gen.c (rev. 17-04-2004) *
* Ce fichier est copié dans le répertoire (project) F:\up\tp3\ex3a *
* NE PAS MODIFIER CE FICHIER *
* ************************** *
********************************************************************************/
/****************************************
* FONCTION SineGen() *
****************************************/
int SineGen(void) {
/* Pour une fréquence d'échantillonnage égale à 48 kHz,
* cette fonction génère un signal sinusoidal à 6 kHz
* avec une amplitude égale à 0,5
*/
static float y[3] = {0, 0, 0.353934};
static float a = 1.414215;
y[0] = y[1] * a - y[2];
y[2] = y[1];
y[1] = y[0];
return (int) (0x7FFF * y[0]);
}
/************************************************************************
* FONCTION BlockGen() POUR GÉNÉRER UN BLOC DE "SINUS" *
* Cette fonction remplit un buffer avec des valeurs successives de *
* SineGen(). *
* Chaque valeur est doublée : une valeur pour chaque voie de l'AIC23 *
* L'adresse du buffer et la taille du buffer sont passée en paramètres.*
************************************************************************/
void BlockGen(short * pbuf, int taille) {
int i = 0;
short signal;
while (i != taille) {
signal = SineGen();
pbuf[i++] = signal; /* Valeur du signal pour une voie */
pbuf[i++] = signal; /* Même valeur pour l'autre voie */
}
}