From 3307d476793c6b01b743ff7f9bdf580b217a1968 Mon Sep 17 00:00:00 2001 From: Firmin Rousseau Date: Mon, 5 Jun 2023 10:07:14 +0200 Subject: [PATCH] version finale --- soft/PjtKEIL_StepDFT/Src/DFT.s | 67 +++++++++++++--------------- soft/PjtKEIL_StepDFT/Src/principal.c | 12 ++++- soft/PjtKEIL_StepDFT/StepDFT.uvoptx | 52 +++++++++++++++++++-- soft/PjtKEIL_StepDFT/StepDFT.uvprojx | 32 ++++++++++++- soft/PjtKEIL_StepSon/StepSon.uvoptx | 9 +++- 5 files changed, 128 insertions(+), 44 deletions(-) diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index d89973d..0eb0778 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -5,27 +5,15 @@ ; ====================== zone de réservation de données, ====================================== ;Section RAM (read only) : area mesdata,data,readonly - + import LeSignal + ;Section RAM (read write): area maram,data,readwrite -ModuleAuCarre dcd 0 -PartieReelle dcd 0 -PartieIm dcd 0 - ; =============================================================================================== - - - - -;Section ROM code (read only) : - area moncode,code,readonly -; écrire le code ici - - - + export DFT_ModuleAuCarre ;Section ROM code (read only) : @@ -163,35 +151,39 @@ TabSin DCW -6393 ; 62 0xe707 -0.19510 DCW -3212 ; 63 0xf374 -0.09802 -DFT_ModuleAuCarre proc +;Section ROM code (read only) : + area moncode,code,readonly +; écrire le code ici + + +DFT_ModuleAuCarre proc - push {r4, r5, r6, r7, r8} + ; r0 occupé par k + ; r1 occupé par l'adresse du signal - ldr r0, =TabCos + ; ModuleAuCarre + ; r6 occupé par PartieReelle + ; r7 occupé par PartieIm + + push {r4, r5, r6, r7, r8, r9, r10} + + ldr r9, =TabCos ldr r8, =TabSin - ldr r1, =LeSignal - ldr r6, =PartieReelle - ldr r7, =PartieIm + ;ldr r1, =LeSignal mov r3, #0 debut_boucle ldrsh r4, [r1,r3, lsl #1];lecture de la valeur du signal à l'adresse r1 décalé de l'index r3 - ldrsh r2, [r0,r3, lsl #1];lecture de la valeur du cos à l'adresse r0 décalé de l'index r3 + mul r10, r3, r0 + and r10, #63 - - ;attention format à prendre en compte............................. - + ldrsh r2, [r9,r10, lsl #1];lecture de la valeur du cos à l'adresse r0 décalé de l'index r3 mul r5, r2, r4 ;calcul - ldr r2, [r6] ;lecture de la valeur de la partie réelle - add r2, r5 ; on y ajoute la valeur calculée - strh r2, [r6] ; on store la valeur à l'adresse + add r6, r5 ; on y ajoute la valeur calculée - ldrsh r2, [r8,r3, lsl #1];lecture de la valeur du sin + ldrsh r2, [r8,r10, lsl #1];lecture de la valeur du sin mul r5, r2, r4 ; calcul en reprenant la valeur du signal qui ne change pas dans r4 - ldr r2, [r7];lecture de la valeur de la partie imaginaire - add r2, r5 - strh r2, [r7] - + add r7, r5 add r3, #1 ;incrémentation de l'index @@ -199,9 +191,12 @@ debut_boucle bne debut_boucle fin_boucle - - - pop {r4, r5, r6, r7, r8} + smull r5, r4, r6, r6 + smull r10, r2, r7, r7 + add r4, r2 + mov r0,r4 + + pop {r4, r5, r6, r7, r8, r9, r10} bx lr endp diff --git a/soft/PjtKEIL_StepDFT/Src/principal.c b/soft/PjtKEIL_StepDFT/Src/principal.c index d09be75..c3c1f1b 100644 --- a/soft/PjtKEIL_StepDFT/Src/principal.c +++ b/soft/PjtKEIL_StepDFT/Src/principal.c @@ -1,10 +1,14 @@ - +#include #include "DriverJeuLaser.h" +extern short int LeSignal; + +extern int DFT_ModuleAuCarre(int k, short int * Signal64ech); int main(void) + { // =========================================================================== @@ -19,10 +23,16 @@ CLOCK_Configure(); //============================================================================ + + +DFT_ModuleAuCarre(0, &LeSignal); + + while (1) { } + } diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx index 0d72cfc..44b2265 100644 --- a/soft/PjtKEIL_StepDFT/StepDFT.uvoptx +++ b/soft/PjtKEIL_StepDFT/StepDFT.uvoptx @@ -75,7 +75,7 @@ 1 0 - 0 + 1 18 @@ -154,6 +154,26 @@ + + + 0 + 1 + r3,0x0A + + + 1 + 1 + r10 + + + + + 1 + 256 + R0 + 0 + + 0 @@ -267,7 +287,7 @@ 1 0 - 1 + 0 18 @@ -624,6 +644,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 +678,7 @@ 0 2 - 2 + 4 2 0 0 @@ -654,7 +698,7 @@ 0 3 - 3 + 5 4 0 0 diff --git a/soft/PjtKEIL_StepDFT/StepDFT.uvprojx b/soft/PjtKEIL_StepDFT/StepDFT.uvprojx index 9031782..cec1044 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 + @@ -1322,7 +1352,7 @@ - <Project Info> + StepDFT 0 1 diff --git a/soft/PjtKEIL_StepSon/StepSon.uvoptx b/soft/PjtKEIL_StepSon/StepSon.uvoptx index e66ed7a..7430955 100644 --- a/soft/PjtKEIL_StepSon/StepSon.uvoptx +++ b/soft/PjtKEIL_StepSon/StepSon.uvoptx @@ -75,7 +75,7 @@ 1 0 - 0 + 1 18 @@ -160,6 +160,11 @@ 1 SortieSon + + 1 + 1 + bouton + @@ -287,7 +292,7 @@ 1 0 - 1 + 0 18