Mettre à jour 'soft/PjtKEIL_StepSon/Src/GestionSon.s'
This commit is contained in:
parent
aa73c8da19
commit
98ac912106
1 changed files with 24 additions and 24 deletions
|
@ -8,7 +8,7 @@
|
||||||
import Son
|
import Son
|
||||||
import LongueurSon
|
import LongueurSon
|
||||||
export SortieSon
|
export SortieSon
|
||||||
; ====================== 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
|
||||||
|
|
||||||
|
@ -27,48 +27,48 @@ Index dcd LongueurSon
|
||||||
|
|
||||||
;Section ROM code (read only) :
|
;Section ROM code (read only) :
|
||||||
area moncode,code,readonly
|
area moncode,code,readonly
|
||||||
; écrire le code ici
|
; écrire le code ici
|
||||||
|
|
||||||
CallbackSon ; corps de la fonction Callback
|
CallbackSon ; corps de la fonction Callback
|
||||||
push {LR}
|
push {LR}
|
||||||
push {r4-r7}
|
push {r4-r7}
|
||||||
ldr r0, =Son ; L'adresse du tableau de sons est stockée dans r0
|
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 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 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 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 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
|
beq fin
|
||||||
|
|
||||||
ldr r5, =SortieSon ; L'adresse de sortie est stockée dans r5
|
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
|
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
|
mov r7, #720
|
||||||
mul r6, r7
|
mul r6, r7 ; Mise à l'échelle
|
||||||
asr r6, #16
|
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
|
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
|
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 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
|
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
|
bl PWM_Set_Value_TIM3_Ch3 ; Mise à jour du rapport cyclique dans le cas de l'utilisation de la PWM
|
||||||
|
|
||||||
fin pop {r4-r7}
|
fin pop {r4-r7}
|
||||||
pop {LR}
|
pop {LR}
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
StartSon ; corps de la fonction StartSon
|
StartSon ; corps de la fonction StartSon
|
||||||
ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1
|
ldr r1, =Index ; L'adresse de l'index de table est stockée dans r1
|
||||||
mov r2, #0 ; Mise à 0
|
mov r2, #0 ; Mise à 0
|
||||||
str r2, [r1] ; La nouvelle valeur de l'index (0) est envoyée dans index
|
str r2, [r1] ; La nouvelle valeur de l'index (0) est envoyée dans index
|
||||||
bx LR
|
bx LR
|
||||||
|
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
; 8. Signal PWM à l'état haut (3,3V) si CompValue est supérieure 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
|
; 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
|
;15. Fc = 1/(2*pi*RC). On choisit R=1,8 kOhms et on trouve après calcul C=22,1 nF
|
Loading…
Reference in a new issue