forked from acco/chti23
jeu qui marche (avec score, sans son, sans arrêt)
This commit is contained in:
parent
45fd8589c0
commit
bc0529e014
4 changed files with 98 additions and 32 deletions
|
@ -98,8 +98,7 @@ BoucleFor
|
||||||
FinBoucle
|
FinBoucle
|
||||||
|
|
||||||
; on met le résultat à disposition dans r0
|
; on met le résultat à disposition dans r0
|
||||||
;mov r1, r7
|
|
||||||
;mov r0, r8
|
|
||||||
smull r1, r0, r7, r7 ;NB :poids fort en 2eme pos
|
smull r1, r0, r7, r7 ;NB :poids fort en 2eme pos
|
||||||
smlal r1, r0, r8, r8 ;
|
smlal r1, r0, r8, r8 ;
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
THUMB
|
THUMB
|
||||||
INCLUDE DriverJeuLaser.inc
|
INCLUDE DriverJeuLaser.inc
|
||||||
EXPORT timer_callback
|
EXPORT timer_callback
|
||||||
;IMPORT GPIOB_Set
|
|
||||||
;IMPORT GPIOB_Clear
|
|
||||||
; ====================== zone de réservation de données, ======================================
|
; ====================== zone de réservation de données, ======================================
|
||||||
;Section RAM (read only) :
|
;Section RAM (read only) :
|
||||||
area mesdata,data,readonly
|
area mesdata,data,readonly
|
||||||
|
|
|
@ -41,8 +41,8 @@ IndiceCourrant dcd 0
|
||||||
;}
|
;}
|
||||||
EXPORT callbackSon
|
EXPORT callbackSon
|
||||||
callbackSon proc
|
callbackSon proc
|
||||||
push{lr}
|
push {lr}
|
||||||
push{r4}
|
push {r4}
|
||||||
push {r5}
|
push {r5}
|
||||||
|
|
||||||
ldr r0, =Son
|
ldr r0, =Son
|
||||||
|
@ -63,7 +63,7 @@ callbackSon proc
|
||||||
add r1, #1
|
add r1, #1
|
||||||
str r1, [r2]
|
str r1, [r2]
|
||||||
|
|
||||||
; SortieSon += 32767;
|
; SortieSon += 32768;
|
||||||
add r3, #32768
|
add r3, #32768
|
||||||
|
|
||||||
; SortieSon = SortieSon*719/65534;
|
; SortieSon = SortieSon*719/65534;
|
||||||
|
|
|
@ -5,20 +5,89 @@
|
||||||
extern short int LeSignal[];
|
extern short int LeSignal[];
|
||||||
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k);
|
extern int DFT_ModuleAuCarre( short int * Signal64ech, char k);
|
||||||
|
|
||||||
int moduleSignal[64] ;
|
int moduleSignal[4] ;
|
||||||
int score[4];
|
|
||||||
short int dma_buf[64] ;
|
short int dma_buf[64] ;
|
||||||
|
|
||||||
|
int score[4] = {0,0,0,0};
|
||||||
|
int cnt[4] = {0,0,0,0};
|
||||||
|
|
||||||
|
int ordreCible[15] = {1,3,4,2,4,3,1,4,3,2,1,2,3,4} ;
|
||||||
|
int clk5Hz = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void miseAJourScores(int score0, int score1, int score2, int score3) {
|
||||||
|
Prepare_Afficheur(1, score0);
|
||||||
|
Prepare_Afficheur(2, score1);
|
||||||
|
Prepare_Afficheur(3, score2);
|
||||||
|
Prepare_Afficheur(4, score3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void callback() {
|
void callback() {
|
||||||
|
clk5Hz += 1;
|
||||||
|
|
||||||
Start_DMA1(64);
|
Start_DMA1(64);
|
||||||
Wait_On_End_Of_DMA1();
|
Wait_On_End_Of_DMA1();
|
||||||
Stop_DMA1;
|
Stop_DMA1;
|
||||||
|
|
||||||
for (int j=0; j<64 ; j++) {
|
moduleSignal[0] = DFT_ModuleAuCarre(&(dma_buf[0]), 17);
|
||||||
moduleSignal[j] = DFT_ModuleAuCarre(&(dma_buf[0]), j);
|
moduleSignal[1] = DFT_ModuleAuCarre(&(dma_buf[0]), 18);
|
||||||
}
|
moduleSignal[2] = DFT_ModuleAuCarre(&(dma_buf[0]), 19);
|
||||||
}
|
moduleSignal[3] = DFT_ModuleAuCarre(&(dma_buf[0]), 20);
|
||||||
|
|
||||||
|
|
||||||
|
// Choisir à qui attribuer les points
|
||||||
|
if (moduleSignal[0] > 10000) {
|
||||||
|
cnt[0]+=1;
|
||||||
|
if (cnt[0] >= 15) {
|
||||||
|
score[0] +=1;
|
||||||
|
cnt[0]=0;
|
||||||
|
}
|
||||||
|
} else {cnt[0]=0;}
|
||||||
|
|
||||||
|
if (moduleSignal[1] > 10000) {
|
||||||
|
cnt[1]+=1;
|
||||||
|
if (cnt[1] >= 15) {
|
||||||
|
score[1] +=1;
|
||||||
|
cnt[1]=0;
|
||||||
|
}
|
||||||
|
} else {cnt[1]=0;}
|
||||||
|
|
||||||
|
if (moduleSignal[2] > 10000) {
|
||||||
|
cnt[2]+=1;
|
||||||
|
if (cnt[2] >= 15) {
|
||||||
|
score[2] +=1;
|
||||||
|
cnt[2]=0;
|
||||||
|
}
|
||||||
|
} else {cnt[2]=0;}
|
||||||
|
|
||||||
|
if (moduleSignal[3] > 10000) {
|
||||||
|
cnt[3]+=1;
|
||||||
|
if (cnt[3] >= 15) {
|
||||||
|
score[3] +=1;
|
||||||
|
cnt[3]=0;
|
||||||
|
}
|
||||||
|
} else {cnt[3]=0;}
|
||||||
|
|
||||||
|
if (clk5Hz %400 ==0) {
|
||||||
|
i = (i+1)%15;
|
||||||
|
if (i == 0){
|
||||||
|
Choix_Capteur(ordreCible[i]);
|
||||||
|
Prepare_Clear_LED(ordreCible[14]-1);
|
||||||
|
Prepare_Set_LED(ordreCible[i]-1);
|
||||||
|
}else{
|
||||||
|
Choix_Capteur(ordreCible[i]);
|
||||||
|
Prepare_Clear_LED(ordreCible[i-1]-1);
|
||||||
|
Prepare_Set_LED(ordreCible[i]-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Pour mise a jour régulière des scores
|
||||||
|
miseAJourScores(score[0],score[1],score[2],score[3]);
|
||||||
|
Mise_A_Jour_Afficheurs_LED();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
@ -30,35 +99,34 @@ int main(void)
|
||||||
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
||||||
CLOCK_Configure();
|
CLOCK_Configure();
|
||||||
|
|
||||||
//Systick_Period_ff(5000*72);
|
//Configuration intéruptions timer
|
||||||
//Systick_Prio_IT(11, callback) ;
|
Systick_Period_ff(5000*72);
|
||||||
//SysTick_On ;
|
Systick_Prio_IT(11, callback );
|
||||||
//SysTick_Enable_IT ;
|
SysTick_On ;
|
||||||
|
SysTick_Enable_IT ;
|
||||||
|
|
||||||
|
//Configuration
|
||||||
//Init_TimingADC_ActiveADC_ff( ADC1, 72 ) ;
|
Init_TimingADC_ActiveADC_ff( ADC1, 72 ) ;
|
||||||
//Single_Channel_ADC( ADC1, 2 );
|
Single_Channel_ADC( ADC1, 2 );
|
||||||
//Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
||||||
//Init_ADC1_DMA1( 0, dma_buf );
|
Init_ADC1_DMA1( 0, dma_buf );
|
||||||
|
|
||||||
//La malette
|
//La malette
|
||||||
Init_Affichage();
|
Init_Affichage();
|
||||||
Prepare_Afficheur(1, 11);
|
|
||||||
Prepare_Afficheur(2, 22);
|
|
||||||
Prepare_Afficheur(3, 33);
|
|
||||||
Prepare_Afficheur(4, 44);
|
|
||||||
|
|
||||||
Mise_A_Jour_Afficheurs_LED();
|
|
||||||
|
//TODO : englober dans fct qui fait changer la cible active régulièrement (mais wait nécessaire)
|
||||||
|
|
||||||
|
Choix_Capteur(1);
|
||||||
|
Prepare_Set_LED(LED_Cible_1);
|
||||||
|
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue