BE_CHTI/Obj_3/Src/Son.s
2020-05-29 12:59:38 +02:00

63 lines
No EOL
1.2 KiB
ArmAsm

;AFONSO Perrine LARTIGUE Auriane
thumb
area madata, data, readwrite
flag dcd 0
TIM3_CCR3 equ 0x4000043C ; adresse registre PWM
E_POS equ 0
E_TAI equ 4
E_SON equ 8
E_RES equ 12
E_PER equ 16
area moncode, code, readonly
export timer_callback
import etat
import Son
import LongueurSon
import PeriodeSonMicroSec
;GPIOB_BSRR equ 0x40010C10 ; Bit Set/Reset registe
timer_callback proc
push{r4}
ldr r2, =etat ;r2= @etat
ldr r0, [r2 , #E_POS] ; r0 = position
ldr r1, [r2 , #E_TAI] ; r1 = taille
cmp r0, r1; on compare taille et position
beq fin ; taille = position
different
ldr r3 , [r2,#E_SON] ; r3 = @son
ldrsh r4 , [r3, r0, lsl #0x1] ; r4 = son
; ajout composante continue: 2^15
add r4, #0x8000
ldr r12 , [r2 ,#E_RES] ; r12 = resolution
mul r4 , r12 ; on multiplie par le facteur d'échelle
mov r12,#0xFFFF
cmp r4, r12 ; la valeur échatillon doit etre compris entre 0 et 2^16 - 1
blo registre
udiv r4, r12
registre ; échantillon copié dans le registre TIM3_CCR3
ldr r12 , =TIM3_CCR3
str r4 , [r12]
; on incremente la position
add r0 , #0x1 ;
str r0 , [r2 , #E_POS]
fin pop{r4}
bx lr
endp
end