From 9115260fe4b7ecf95f910a172f782d95b67e46e0 Mon Sep 17 00:00:00 2001 From: Theophile Zenou-Truchot Date: Wed, 10 May 2023 16:41:01 +0200 Subject: [PATCH] =?UTF-8?q?Partie=20DFT=20termin=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soft/PjtKEIL_StepDFT/Src/DFT.s | 40 ++++++++++- soft/PjtKEIL_StepDFT/Src/principal.c | 13 ++-- soft/PjtKEIL_StepDFT/StepDFT.uvoptx | 102 +++++++++++++++++++++++++-- soft/PjtKEIL_StepDFT/StepDFT.uvprojx | 30 ++++++++ soft/PjtKEIL_StepSon/StepSon.uvoptx | 13 +++- 5 files changed, 181 insertions(+), 17 deletions(-) diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index 3f6b5d4..46b2164 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -1,7 +1,9 @@ PRESERVE8 THUMB + + export DFT_ModuleAuCarre + extern LeSignal - ; ====================== zone de réservation de données, ====================================== ;Section RAM (read only) : area mesdata,data,readonly @@ -21,9 +23,43 @@ area moncode,code,readonly ; écrire le code ici +DFT_ModuleAuCarre + push {lr,r0} + ldr r2, =TabCos + bl DFT_X ; calcul cos + mov r3,r0 ; met le res dans r3 + pop{r0} + ldr r2, =TabSin + push{r3} + bl DFT_X ; calcul sin + pop{r3} + asr r3,#16; décalage signé pour éviter le débordement du registre + asr r0,#16; décalage signé pour éviter le débordement du registre + mul r3,r3; cos carré dans r3 nouveau format 22.10 + mul r0,r0; sin carré dans r0 nouveau format 22.10 + add r0,r3; somme des carrés dans le registre de retour format 22.10 + pop{pc} - +DFT_X + push {lr, r4, r5, r6} + mov r4, #0 + mov r5, #0 +boucle + cmp r4, #64 + beq fin + ldrsh r3, [r0, r4, lsl#1]; R3 (signal) -> format 4.12 + mul r6, r1, r4 + and r6, #0x3f + ldrsh r6, [r2, r6, lsl#1]; R6 (tabCos)-> format 1.15 + mul r6, r3; r6 format ->5.27 + asr r6, #6 + add r5, r6; r5 (Somme) doit etre au format 5+6(à cause du asr).27-6 = 11.21 + add r4, #1 + b boucle +fin + mov r0, r5 + pop {pc, r4, r5, r6} ;Section ROM code (read only) : AREA Trigo, DATA, READONLY diff --git a/soft/PjtKEIL_StepDFT/Src/principal.c b/soft/PjtKEIL_StepDFT/Src/principal.c index d09be75..468bbf9 100644 --- a/soft/PjtKEIL_StepDFT/Src/principal.c +++ b/soft/PjtKEIL_StepDFT/Src/principal.c @@ -1,12 +1,12 @@ #include "DriverJeuLaser.h" - - - +extern int DFT_ModuleAuCarre(short int * Signal64ech, char k); +extern short int LeSignal; +int tab[64]; int main(void) { - + // =========================================================================== // ============= INIT PERIPH (faites qu'une seule fois) ===================== // =========================================================================== @@ -15,8 +15,9 @@ int main(void) CLOCK_Configure(); - - + for (int i = 0; i<64; i++){ + tab[i] = DFT_ModuleAuCarre( &LeSignal, i); + } //============================================================================ diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx index 0d72cfc..0195312 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx @@ -75,7 +75,7 @@ 1 0 - 0 + 1 18 @@ -153,7 +153,73 @@ -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 + 36 + 1 +
134218430
+ 0 + 0 + 0 + 0 + 0 + 1 + .\Src\DFT.s + + \\StepDFT\Src/DFT.s\36 +
+ + 1 + 0 + 30 + 1 +
134218412
+ 0 + 0 + 0 + 0 + 0 + 1 + .\Src\DFT.s + + \\StepDFT\Src/DFT.s\30 +
+ + 2 + 0 + 38 + 1 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + .\Src\DFT.s + + +
+
+ + + 0 + 1 + emptytab + + + 1 + 1 + r0 + + + 2 + 1 + r3 + + 0 @@ -200,7 +266,7 @@ 0 ((portb & 0x00000002) >> 1 & 0x2) >> 1 - FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008 + FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F100000000000000000000000000000000000000096020008 @@ -267,7 +333,7 @@ 1 0 - 1 + 0 18 @@ -624,6 +690,30 @@ 0 0 + + 1 + 2 + 2 + 0 + 0 + 0 + .\Src\DFT.s + DFT.s + 0 + 0 + + + 1 + 3 + 2 + 0 + 0 + 0 + .\Src\Signal.asm + Signal.asm + 0 + 0 + @@ -634,7 +724,7 @@ 0 2 - 2 + 4 2 0 0 @@ -654,7 +744,7 @@ 0 3 - 3 + 5 4 0 0 diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvprojx b/soft/PjtKEIL_StepDFT/StepDFT.uvprojx index 9031782..63375da 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvprojx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvprojx @@ -388,6 +388,16 @@ 1 .\Src\principal.c + + DFT.s + 2 + .\Src\DFT.s + + + Signal.asm + 2 + .\Src\Signal.asm + @@ -797,6 +807,16 @@ 1 .\Src\principal.c + + DFT.s + 2 + .\Src\DFT.s + + + Signal.asm + 2 + .\Src\Signal.asm + @@ -1275,6 +1295,16 @@ 1 .\Src\principal.c + + DFT.s + 2 + .\Src\DFT.s + + + Signal.asm + 2 + .\Src\Signal.asm + diff --git a/soft/PjtKEIL_StepSon/StepSon.uvoptx b/soft/PjtKEIL_StepSon/StepSon.uvoptx index 30ee7a5..1dddbf5 100644 --- a/soft/PjtKEIL_StepSon/StepSon.uvoptx +++ b/soft/PjtKEIL_StepSon/StepSon.uvoptx @@ -154,11 +154,18 @@ + + + 0 + 1 + button + + 1 266 - 0x200000a0 + button 0 @@ -168,7 +175,7 @@ 0 1 - 0 + 1 0 0 0 @@ -182,7 +189,7 @@ 0 0 0 - 0 + 1 0 0 0