#include "DriverJeuLaser.h" #include "module_carre.h" #include "GestionSon.h" #include "Affichage_Valise.h" #define NB_JOUEURS 4 #define SEUIL_ACCEPT_SIGNAL 0x2 #define FREQ_TO_INT(f) (64 * f / 320) #define TE_IN_TICKS 6552 #define PERIODE_PWM 720 // 50ms @ 72MHz #define PERIODE_AFFICHAGE 3600 short int dma_buff[64]; int module_dft[NB_JOUEURS]; int module_dft[64]; int score_joueurs[NB_JOUEURS]; extern short LeSignal; int freq_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)}; char cible_ordre[] = {LED_Cible_1, LED_Cible_2, LED_Cible_3, LED_Cible_4}; char current_cible_index = 0; char bonne_cible_touchee = 0; char update = 0; extern short Sortie_son; //void update_score() { // if (update) { // for (int i = 0; i < NB_JOUEURS; ++i) { // Prepare_Afficheur(i + 1, score_joueurs[i]); // } // if (bonne_cible_touchee) { // Prepare_Set_LED(LED_LCD_V); // } else { // Prepare_Set_LED(LED_LCD_R); // } // Mise_A_Jour_Afficheurs_LED(); // Choix_Capteur(current_cible_index + 1); // } // //} 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) { // if (i == current_cible_index) { // score_joueurs[i]++; // Prepare_Afficheur(i + 1, score_joueurs[i]); // Prepare_Set_LED(LED_LCD_V); // StartSon(); // } else { // Prepare_Set_LED(LED_LCD_R); // } // Prepare_Clear_LED(cible_ordre[current_cible_index]); // current_cible_index = (current_cible_index + 1) % 4; // Prepare_Set_LED(cible_ordre[current_cible_index]); // // } // } for (int i = 0; i < 64; ++i) { module_dft[i] = DFT_ModuleAuCarre(dma_buff, 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); // Set up interuption for the sound effect //Timer_1234_Init_ff(TIM4, TE_IN_TICKS); //Active_IT_Debordement_Timer(TIM4, 2, GestionSon); //GPIO_Configure(GPIOB, 0, OUTPUT, ALT_PPULL); //PWM_Init_ff(TIM3, 3, PERIODE_PWM); //Timer_1234_Init_ff(TIM3, PERIODE_AFFICHAGE); //Active_IT_Debordement_Timer(TIM3, 9, update_score); //// Test pour enlever l'erreur en PA2 Init_Affichage(); for (int i = 0; i < NB_JOUEURS; ++i) { score_joueurs[i] = 0; Prepare_Afficheur(i + 1, 0); Prepare_Clear_Point_Unite(i + 1); } Prepare_Clear_LED(LED_LCD_R); Prepare_Clear_LED(LED_LCD_V); for (int i = 0; i < 4; ++i) { Prepare_Clear_LED(cible_ordre[i]); } Prepare_Set_LED(cible_ordre[current_cible_index]); Choix_Capteur(current_cible_index + 1); Mise_A_Jour_Afficheurs_LED(); StopSon(); //============================================================================ while (1) { } }