chti23_Tom_Nathan/soft/PjtKEIL_StepFinal/Src/principal.c
2023-05-16 18:19:51 +02:00

138 lines
3.4 KiB
C
Raw Blame History

#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<70>s ex<65>cution : le coeur CPU est clock<63> <20> 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)
{
}
}