diff --git a/Etape_3.uvoptx b/Etape_3.uvoptx
index fb6a59e..b173c8c 100644
--- a/Etape_3.uvoptx
+++ b/Etape_3.uvoptx
@@ -219,12 +219,44 @@
\\Simu_Etape0\FonctionEtape3.asm\51
+
+ 5
+ 0
+ 58
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\FonctionEtape3.asm
+
+
+
+
+ 6
+ 0
+ 68
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\FonctionEtape3.asm
+
+
+
1
0
- 0xE000ED08
+ 0x20000200
0
diff --git a/FonctionEtape.asm b/FonctionEtape.asm
index d85c3c9..6717f3a 100644
--- a/FonctionEtape.asm
+++ b/FonctionEtape.asm
@@ -92,12 +92,11 @@ Allume_LED PROC
; On inverse la LED (besoin de R0)
;*******************************************************************************
Inverse_LED PROC
- PUSH {R12,R0} ;On stocke R12 dans R0
+ PUSH {R12,R5} ;R12 et R5 sont mis dans la pile
LDR R12,=GPIOBASEB ;On recupère l'adresse de base
+ LDR R1,=isLedOn ;On recupère l'adresse de isLedOn
MOV R5,#(0x01 << 10) ;1 décalé de 10 dans R5
CMP R0,#0 ;Si R3=0 (default) alors on allume, sinon on eteint
- ;BEQ Allume
- ;B Eteint
BNE Eteint
Allume
STRH R5,[R12,#OffsetSet] ;On stocke la variable R5 à l'adresse 0x0X40010C10 (set)
@@ -110,8 +109,8 @@ Eteint
Fin
- POP {R12,R0} ;On restitue R12 dans R0
- BX LR ;Retour
+ POP {R12,R5} ;On restitue R12
+ BX LR ;Retour
ENDP
diff --git a/FonctionEtape3.asm b/FonctionEtape3.asm
index 59c207b..9f38818 100644
--- a/FonctionEtape3.asm
+++ b/FonctionEtape3.asm
@@ -30,8 +30,8 @@
AREA MesDonnees, data, readwrite
;**************************************************************************
-Timer_Up_Reg EQU 25
-Timer_Cc_Reg EQU 27
+Timer_Up_Reg EQU 25+0x40
+Timer_Cc_Reg EQU 27+0x40
MAX_Interrupt EQU 256
TVI_Flash EQU 0x0
TVI_Pile EQU 0x20000200 ;9 bits de poids faible = 0
@@ -44,26 +44,34 @@ TVI_Pile EQU 0x20000200 ;9 bits de poids faible = 0
AREA moncode, code, readonly
;**************************************************************************
+scbvector_link PROC
+ LDR R1,=TVI_Pile ;On relit l'adresse de TVIPile
+ LDR R0,=SCB_VTOR ;ON lit l'adresse de SCB_VTOR
+ STR R1,[R0] ;On met l'adresse de TVI_Pile dans le SCB_VTOR
+ BX LR
+ ENDP
+
+Timer1_IRQHandler PROC
+
+
+;On copie toute la TVI dans la RAM (0x2....)
+;On modifie les interruptions Up et CC pour pointer sur nos fonctions rien qu'à nous
+;On fait pointer à SCB_VTOR l'adresse de la TVI que nous avons copié
Init_TVI PROC
- ;On copie toute la TVI dans la RAM (0x2....)
- ;On modifie les interruptions Up et CC pour pointer sur nos fonctions rien qu'à nous
- ;On fait pointer à SCB_VTOR l'adresse de la TVI que nous avons copié
- LDR R0,=TVI_Flash ;On Lit le premier TVI
- LDR R1,=TVI_Pile ;Nouvelle TVI
- MOV R2,#0 ;i
+ LDR R0,=TVI_Flash ;On Lit le premier TVI
+ LDR R1,=TVI_Pile ;Nouvelle TVI
+ MOV R2,#0 ;i
for_tvi ;for(int i=0;i