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