diff --git a/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s b/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s
index 2e3c842..4478323 100644
--- a/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s
+++ b/soft/PjtKEIL_DFT_Signal_Reel/Src/DFT.s
@@ -22,58 +22,60 @@
; écrire le code ici
EXPORT DFT_ModuleAuCarre
-
+
DFT_PartieReelle PROC
- push {lr, r4-r7}
+ push {lr, r4, r5, r6}
ldr r3, =TabCos
mov r4, #0
+ mov r6, #0
mov r7, #0
Boucle1
- mul r6, r1, r4
+ add r6, r1
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
- ldrsh r5, [r0, r6, LSL#1]
+ ldrsh r5, [r0, r4, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
cmp r4, #64
blt Boucle1
mov r0, r7
- pop {lr, r4-r7}
+ pop {lr, r4, r5, r6}
bx lr
ENDP
DFT_PartieImaginaire PROC
- push {lr, r4-r7}
+ push {lr, r4, r5, r6}
ldr r3, =TabSin
mov r4, #0
+ mov r6, #0
mov r7, #0
Boucle2
- mul r6, r1, r4
+ add r6, r1
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
- ldrsh r5, [r0, r6, LSL#1]
+ ldrsh r5, [r0, r4, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
cmp r4, #64
blt Boucle2
- mov r0, r7
- pop {lr, r4-r7}
+ mov r0, r7 ; 10.22
+ pop {lr, r4, r5, r6}
bx lr
ENDP
DFT_ModuleAuCarre PROC
- push {lr, r0-r7}
+ push {r0, r4, lr}
bl DFT_PartieReelle
mov r4, r0
pop {r0}
bl DFT_PartieImaginaire
smull r1, r3, r0, r0
smull r2, r7, r4, r4
- ;adds r1, r2
- add r0, r3, r7
- pop {lr, r1-r7}
+ adds r1, r2
+ adc r0, r3, r7
+ pop {r4, lr}
bx lr
ENDP
diff --git a/soft/PjtKEIL_DFT_Signal_Reel/Src/principal.c b/soft/PjtKEIL_DFT_Signal_Reel/Src/principal.c
index 86e13f8..e0680f0 100644
--- a/soft/PjtKEIL_DFT_Signal_Reel/Src/principal.c
+++ b/soft/PjtKEIL_DFT_Signal_Reel/Src/principal.c
@@ -13,7 +13,7 @@ void mesure() {
Stop_DMA1;
for (int i = 0; i < 64; i++)
- coeff[i] = DFT_ModuleAuCarre(dma_buf, i);
+ coeff[i] = DFT_ModuleAuCarre(&(dma_buf[0]), i);
}
int main(void)
@@ -26,22 +26,20 @@ int main(void)
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
CLOCK_Configure();
-//Init_TimingADC_ActiveADC_ff(ADC1, 72);
-//Single_Channel_ADC(ADC1, 2);
-//Init_Conversion_On_Trig_Timer_ff(ADC1, TIM2_CC2, 225);
-//Init_ADC1_DMA1(0, dma_buf);
-//
-//Systick_Period_ff(72000000 * 5 / 1000);
-//Systick_Prio_IT(0, mesure);
-//SysTick_On;
-//SysTick_Enable_IT;
+Init_TimingADC_ActiveADC_ff(ADC1, 72);
+Single_Channel_ADC(ADC1, 2);
+Init_Conversion_On_Trig_Timer_ff(ADC1, TIM2_CC2, 225);
+Init_ADC1_DMA1(0, dma_buf);
+
+Systick_Period_ff(72000000 * 5 / 1000);
+Systick_Prio_IT(0, mesure);
+SysTick_On;
+SysTick_Enable_IT;
//============================================================================
while (1)
{
- for (int i = 1; i < 64; i++)
- coeff[i] = DFT_ModuleAuCarre(&LeSignal, i);
+
}
-}
-
+}
\ No newline at end of file
diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s
index f2fce9a..4478323 100644
--- a/soft/PjtKEIL_StepDFT/Src/DFT.s
+++ b/soft/PjtKEIL_StepDFT/Src/DFT.s
@@ -22,17 +22,18 @@
; écrire le code ici
EXPORT DFT_ModuleAuCarre
-
+
DFT_PartieReelle PROC
push {lr, r4, r5, r6}
ldr r3, =TabCos
mov r4, #0
+ mov r6, #0
mov r7, #0
Boucle1
- mul r6, r1, r4
+ add r6, r1
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
- ldrsh r5, [r0, r6, LSL#1]
+ ldrsh r5, [r0, r4, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
@@ -47,18 +48,19 @@ DFT_PartieImaginaire PROC
push {lr, r4, r5, r6}
ldr r3, =TabSin
mov r4, #0
+ mov r6, #0
mov r7, #0
Boucle2
- mul r6, r1, r4
+ add r6, r1
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
- ldrsh r5, [r0, r6, LSL#1]
+ ldrsh r5, [r0, r4, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
cmp r4, #64
blt Boucle2
- mov r0, r7
+ mov r0, r7 ; 10.22
pop {lr, r4, r5, r6}
bx lr
ENDP
diff --git a/soft/PjtKEIL_StepDFT/Src/principal.c b/soft/PjtKEIL_StepDFT/Src/principal.c
index 408708a..7fc51c0 100644
--- a/soft/PjtKEIL_StepDFT/Src/principal.c
+++ b/soft/PjtKEIL_StepDFT/Src/principal.c
@@ -1,6 +1,8 @@
#include "DriverJeuLaser.h"
extern int DFT_ModuleAuCarre(short int* Signal64ech, char k);
+extern int DFT_PartieReelle(short int* Signal64ech, char k);
+extern int DFT_PartieImaginaire(short int* Signal64ech, char k);
extern int16_t LeSignal;
unsigned int test = 0;
@@ -26,8 +28,9 @@ while (1)
{
if (once) {
once = 0;
- //for (int i = 0; i < 64; i++)
- test = DFT_ModuleAuCarre(&LeSignal, 1);
+ for (int i = 0; i < 64; i++)
+ test = DFT_ModuleAuCarre(&LeSignal, i);
+
}
}
}
diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx
index d71a9ab..cfa9b7e 100644
--- a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx
+++ b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx
@@ -153,7 +153,24 @@
-U066CFF574857847167074929 -O2254 -S0 -C0 -A0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103RB$Flash\STM32F10x_128.FLM)
-
+
+
+ 0
+ 0
+ 32
+ 1
+ 134218380
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ .\Src\principal.c
+
+ \\StepDFT\Src/principal.c\32
+
+
0
@@ -185,6 +202,16 @@
1
test
+
+ 6
+ 1
+ i
+
+
+ 7
+ 1
+ test
+
@@ -240,7 +267,7 @@
0
`test
- FF000000000000000000E0C10000C0FFFFFFDF410000000000000000000000000000000074657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F0A000000000000000000000000000000000000007C020008
+ FF00000000000000000000000000809AE8FFCF410000000000000000000000000000000074657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F10000000000000000000000000000000000000007C020008