From 98ac912106e61629e8adf39a4f35b3414a67eb1c Mon Sep 17 00:00:00 2001 From: Abderrahman El-Ouali Date: Wed, 24 May 2023 01:39:00 +0200 Subject: [PATCH] =?UTF-8?q?Mettre=20=C3=A0=20jour=20'soft/PjtKEIL=5FStepSo?= =?UTF-8?q?n/Src/GestionSon.s'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soft/PjtKEIL_StepSon/Src/GestionSon.s | 48 +++++++++++++-------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/soft/PjtKEIL_StepSon/Src/GestionSon.s b/soft/PjtKEIL_StepSon/Src/GestionSon.s index c59930d..d2a0ecb 100644 --- a/soft/PjtKEIL_StepSon/Src/GestionSon.s +++ b/soft/PjtKEIL_StepSon/Src/GestionSon.s @@ -8,7 +8,7 @@ import Son import LongueurSon export SortieSon -; ====================== zone de réservation de données, ====================================== +; ====================== zone de réservation de données, ====================================== ;Section RAM (read only) : area mesdata,data,readonly @@ -27,48 +27,48 @@ Index dcd LongueurSon ;Section ROM code (read only) : area moncode,code,readonly -; écrire le code ici +; écrire le code ici CallbackSon ; corps de la fonction Callback push {LR} push {r4-r7} - ldr r0, =Son ; L'adresse du tableau de sons est stockée dans r0 - ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1 - ldr r2, [r1] ; L'index actuel est stocké dans r2 - ldr r3, =LongueurSon ; L'adresse de la taille du tableau est stockée dans r3- - ldr r4, [r3] ; La valeur de la taille du tableau est stockée dans r4 + ldr r0, =Son ; L'adresse du tableau de sons est stockée dans r0 + ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1 + ldr r2, [r1] ; L'index actuel est stocké dans r2 + ldr r3, =LongueurSon ; L'adresse de la taille du tableau est stockée dans r3- + ldr r4, [r3] ; La valeur de la taille du tableau est stockée dans r4 - cmp r2, r4 ; on vérifie qu'on n'est pas à la fin du tableau + cmp r2, r4 ; on vérifie qu'on n'est pas à la fin du tableau beq fin - ldr r5, =SortieSon ; L'adresse de sortie est stockée dans r5 - ldrsh r6, [r0, r2, lsl #1] ; La valeur de l'échantillon pointée par l'index est stockée dans r6 - mov r7, #720 ; Mise à l'échelle - mul r6, r7 - asr r6, #16 - add r6, #360 + ldr r5, =SortieSon ; L'adresse de sortie est stockée dans r5 + ldrsh r6, [r0, r2, lsl #1] ; La valeur de l'échantillon pointée par l'index est stockée dans r6 + mov r7, #720 + mul r6, r7 ; Mise à l'échelle + asr r6, #16 ; Cela revient à diviser la valeur par 2^16 (65536). Cela peut être utilisé pour ajuster la plage de l'échantillon sonore + add r6, #360 ; Cela permet de décaler la valeur de l'échantillon sonore dans une plage appropriée pour la sortie mov r0, r6 - add r2, r2, #1 ; Incrémentation de l'index + add r2, r2, #1 ; Incrémentation de l'index - str r2, [r1] ; la nouvelle valeur de l'index est envoyée dans index - str r6, [r5] ; la valeur de l'échantillon est stockée dans SortieSon - bl PWM_Set_Value_TIM3_Ch3 ; Mise à jour du rapport cyclique dans le cas de l'utilisation de la PWM + str r2, [r1] ; la nouvelle valeur de l'index est envoyée dans index + str r6, [r5] ; la valeur de l'échantillon est stockée dans SortieSon + bl PWM_Set_Value_TIM3_Ch3 ; Mise à jour du rapport cyclique dans le cas de l'utilisation de la PWM fin pop {r4-r7} pop {LR} bx LR StartSon ; corps de la fonction StartSon - ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1 - mov r2, #0 ; Mise à 0 - str r2, [r1] ; La nouvelle valeur de l'index (0) est envoyée dans index + ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1 + mov r2, #0 ; Mise à 0 + str r2, [r1] ; La nouvelle valeur de l'index (0) est envoyée dans index bx LR END -; 8. Signal PWM à l'état haut (3,3V) si CompValue est supérieure au Compteur -; Signal PWM à l'état bas (0V) si CompValue est inférieur au Compteur +; 8. Signal PWM à l'état haut (3,3V) si CompValue est supérieure au Compteur +; Signal PWM à l'état bas (0V) si CompValue est inférieur au Compteur -;15. Fc = 1/(2*pi*RC). On choisit R=1,8 kOhms et on trouve après calcul C=22,1 nF \ No newline at end of file +;15. Fc = 1/(2*pi*RC). On choisit R=1,8 kOhms et on trouve après calcul C=22,1 nF \ No newline at end of file