forked from acco/chti23
105 lines
2 KiB
C
105 lines
2 KiB
C
|
|
|
|
#include "DriverJeuLaser.h"
|
|
extern short int LeSignal[];
|
|
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k) ;
|
|
int Dft_x[64];
|
|
int compteur[6]={0,0,0,0,0,0};
|
|
int score[6]={0,0,0,0,0,0};
|
|
short int dma_buf[64];
|
|
int seuil=65535;
|
|
|
|
void callback_Systick(void){
|
|
//démarrage de la DMA sur 64 échantillons :
|
|
Start_DMA1(64);
|
|
//attente de la fin de DMA :
|
|
Wait_On_End_Of_DMA1();
|
|
//arrêter la DMA
|
|
Stop_DMA1;
|
|
|
|
for(char k=0 ; k<64 ; k++){
|
|
Dft_x[k]=DFT_ModuleAuCarre(dma_buf,k);
|
|
if (Dft_x[k]>seuil)
|
|
{switch (k){
|
|
case 17:
|
|
compteur[0]++;
|
|
break;
|
|
case 18:
|
|
compteur[1]++;
|
|
break;
|
|
case 19:
|
|
compteur[2]++;
|
|
break;
|
|
case 20:
|
|
compteur[3]++;
|
|
break;
|
|
case 23:
|
|
compteur[4]++;
|
|
break;
|
|
case 24:
|
|
compteur[5]++;
|
|
break;
|
|
}
|
|
for (int i=0;i<6;i++){
|
|
if(compteur[i]>10){
|
|
score[i]++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
int main(void)
|
|
{
|
|
|
|
|
|
// ===========================================================================
|
|
// ============= INIT PERIPH (faites qu'une seule fois) =====================
|
|
// ===========================================================================
|
|
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
|
CLOCK_Configure();
|
|
/*initialisation du timer*/
|
|
|
|
/*GBio*/
|
|
|
|
/*DFT*/
|
|
//for (char k=0;k<64;k++){
|
|
// Dft_x[k]=DFT_ModuleAuCarre(&LeSignal[0],k);
|
|
//}
|
|
|
|
/*ADC*/
|
|
|
|
//'activer l'ADC1 en indiquant la durée de capture du signal
|
|
Init_TimingADC_ActiveADC_ff( ADC1, 72 );
|
|
//choisir la pin d'entrée PA2
|
|
Single_Channel_ADC( ADC1, 2 );
|
|
// configurer le timer 2
|
|
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
|
//configurer la DMA
|
|
Init_ADC1_DMA1( 0, dma_buf );
|
|
|
|
|
|
|
|
/*configuration du timer*/
|
|
//régler la périodicité du timer
|
|
//Periode_ticks = 5ms *72 périodes d'horloge à 72MHz donne 1µs=5ms*72Mhz
|
|
Systick_Period_ff(36E4);
|
|
//configurer le timer
|
|
Systick_Prio_IT( 3,callback_Systick );
|
|
//lancer le systick
|
|
SysTick_On ;
|
|
//lancer le systick
|
|
SysTick_Enable_IT ;
|
|
|
|
|
|
|
|
|
|
//============================================================================
|
|
|
|
|
|
while (1)
|
|
{
|
|
}
|
|
}
|
|
|