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.
 
 
 
 
 
 

46 lines
1.5 KiB

/********************************************************************************
* Origine du fichier l:\up\tp3\ex3b\bloc_gen.c (rev. 19-04-2004) *
* Ce fichier est copié dans le répertoire (project) f:\up\tp3\ex3b *
* 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*/
}
}