#include "DriverJeuLaser.h" #include "module_carre.h" #define NB_JOUEURS 6 #define SEUIL_ACCEPT_SIGNAL 0x1200 #define FREQ_TO_INT(f) (64 * f / 320) short int dma_buff[64]; int module_dft[NB_JOUEURS]; int score_joueurs[NB_JOUEURS]; extern short LeSignal; int freq_joueurs[NB_JOUEURS] = {FREQ_TO_INT(85), FREQ_TO_INT(90), FREQ_TO_INT(95), FREQ_TO_INT(100), FREQ_TO_INT(115), FREQ_TO_INT(120)}; void systick_func() { int module; Start_DMA1(64); Wait_On_End_Of_DMA1(); Stop_DMA1; for (int i = 0; i < NB_JOUEURS; ++i) { module = DFT_ModuleAuCarre(dma_buff, freq_joueurs[i]); module_dft[i] = module; if (module > SEUIL_ACCEPT_SIGNAL) { score_joueurs[i]++; } } } extern short LeSignal; 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(); // 5ms = n * 1/72MHz => n = 5ms * 72MHz = 360 * 10 ^ 6 Systick_Period_ff(360000000); Systick_Prio_IT(0, systick_func); SysTick_On; SysTick_Enable_IT; Init_TimingADC_ActiveADC_ff( ADC1, 72 ); Single_Channel_ADC( ADC1, 2 ); // 320 kHz = 72MHz / n => n = 72MHz / 320kHz = 225 Init_Conversion_On_Trig_Timer_ff(ADC1, TIM2_CC2, 225); Init_ADC1_DMA1(0, dma_buff); for (int i = 0; i < NB_JOUEURS; ++i) { score_joueurs[i] = 0; } //============================================================================ while (1) { } }