	PRESERVE8
	THUMB   
	include ./Driver/DriverJeuLaser.inc


; ====================== zone de réservation de données,  ======================================
;Section RAM (read only) :
	area    mesdata,data,readonly
	extern Son 

;Section RAM (read write):
	area    maram,data,readwrite
		
	export SortieSon
SortieSon dcw 0 ;Declaration d'une variable sur 16bits
index dcd 0
		

	
; ===============================================================================================
	


		
;Section ROM code (read only) :		
	area    moncode,code,readonly
; écrire le code ici	

	export CallbackSon
CallbackSon proc
	push {lr}
	ldr r0, =Son  ;r0=&Son
	ldr r2, =index  ; r2=&index
	ldr r1, [r2] ; r1 = index
	ldrsh r3, [r0, r1] ;r3=son[index]
	; on aurait pu faire ldrsh r3, [r0, r1, lsl #1] et incrementer de 1
	add r1, #2 ; index +=2
	str r1, [r2] ; index en memoire=r1
	
	;Normalisation de la valeur son [index]
	add r3, #32768 ;r3+=32278
	
	push {r4}
	mov r4, #719 ; r4 = 719 
	mul r3,r4  ;r3*=719
	asr r3, #16 ;r3/=65536
	pop {r4}
	
	;On met la valeur modifiée dans SortieSon
	ldr r0, =SortieSon  ;r0=&SortieSon
	str r3, [r0]
	
	push {r0-r3}
	mov r0,r3
	bl PWM_Set_Value_TIM3_Ch3
	pop {r0-r3}

	pop {pc}
	endp
	





		
		
	END	