start adding sound to tested DMA

This commit is contained in:
Nathan Billard 2023-05-10 18:17:34 +02:00
parent bd2fea0568
commit d50a03d88d
5 changed files with 5676 additions and 2 deletions

View file

@ -0,0 +1,9 @@
#ifndef GESTION_SON
#define GESTION_SON
void StartSon(void);
void StopSon(void);
void GestionSon(void);
#endif

View file

@ -0,0 +1,75 @@
PRESERVE8
THUMB
import LongueurSon
import PeriodeSonMicroSec
import Son
include Driver/DriverJeuLaser.inc
; ====================== zone de réservation de données, ======================================
;Section RAM (read only) :
area mesdata,data,readonly
;Section RAM (read write):
area maram,data,readwrite
Son_index dcd 0
Sortie_son dcw 0
; ===============================================================================================
EXPORT Son_index
EXPORT Sortie_son
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
EXPORT GestionSon
EXPORT StartSon
EXPORT StopSon
StopSon proc
ldr r1, =Son_index
ldr r2, =LongueurSon
ldr r0, [r2]
str r0, [r1]
bx lr
endp
StartSon proc
eor r0, r0
ldr r1, =Son_index
str r0, [r1]
bx lr
endp
GestionSon proc
ldr r2, =LongueurSon
ldr r0, [r2]
ldr r2, =Son_index
ldr r1, [r2]
cmp r0, r1
bls EndOfSound ; if (LongeurSon <= Son_index) goto ResetGestionSon;
ldr r3, =Son
ldrsh r0, [r3, r1, lsl #1]
; r0 = Son[Son_index]
add r0, #32768
mov r3, #720
mul r0, r3
lsr r0, #16 ;x in [-32768; 32767] -> x in [0; 719]
ldr r3, =Sortie_son
str r0, [r3] ; Sortie_son = x
add r1, r1, #1
str r1, [r2] ; Son_index++;
b PWM_Set_Value_TIM3_Ch3
EndOfSound
bx lr
endp
END

File diff suppressed because it is too large Load diff

View file

@ -1,17 +1,24 @@
#include "DriverJeuLaser.h"
#include "module_carre.h"
#include "GestionSon.h"
#define NB_JOUEURS 6
#define SEUIL_ACCEPT_SIGNAL 0x1200
#define SEUIL_ACCEPT_SIGNAL 0x80
#define FREQ_TO_INT(f) (64 * f / 320)
#define TE_IN_TICKS 6552
#define PERIODE_PWM 720
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[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)};
extern short Sortie_son;
void systick_func() {
int module;
Start_DMA1(64);
@ -19,11 +26,15 @@ void systick_func() {
Stop_DMA1;
for (int i = 0; i < NB_JOUEURS; ++i) {
module = DFT_ModuleAuCarre(dma_buff, freq_joueurs[i]);
module_dft[i] = module;
// module_dft[i] = module;
if (module > SEUIL_ACCEPT_SIGNAL) {
score_joueurs[i]++;
StartSon();
}
}
// for (int i = 0; i < 64; ++i) {
// module_dft[i] = DFT_ModuleAuCarre(dma_buff, i);
// }
}
extern short LeSignal;
@ -49,6 +60,13 @@ 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);
for (int i = 0; i < NB_JOUEURS; ++i) {
score_joueurs[i] = 0;
}

View file

@ -403,6 +403,21 @@
<FileType>5</FileType>
<FilePath>.\Src\module_carre.h</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
<File>
<FileName>GestionSon.h</FileName>
<FileType>5</FileType>
<FilePath>.\Src\GestionSon.h</FilePath>
</File>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
</Files>
</Group>
<Group>
@ -827,6 +842,21 @@
<FileType>5</FileType>
<FilePath>.\Src\module_carre.h</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
<File>
<FileName>GestionSon.h</FileName>
<FileType>5</FileType>
<FilePath>.\Src\GestionSon.h</FilePath>
</File>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
</Files>
</Group>
<Group>
@ -1320,6 +1350,21 @@
<FileType>5</FileType>
<FilePath>.\Src\module_carre.h</FilePath>
</File>
<File>
<FileName>GestionSon.s</FileName>
<FileType>2</FileType>
<FilePath>.\Src\GestionSon.s</FilePath>
</File>
<File>
<FileName>GestionSon.h</FileName>
<FileType>5</FileType>
<FilePath>.\Src\GestionSon.h</FilePath>
</File>
<File>
<FileName>bruitverre.asm</FileName>
<FileType>2</FileType>
<FilePath>.\Src\bruitverre.asm</FilePath>
</File>
</Files>
</Group>
<Group>