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
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 */
|
|
}
|
|
}
|
|
|