step dft fonctionnel

This commit is contained in:
Remi Pitault 2023-04-19 10:52:37 +02:00
parent a5cd0f0aee
commit 821b08ba0e
3 changed files with 104 additions and 26 deletions

View file

@ -21,25 +21,61 @@
area moncode,code,readonly
; écrire le code ici
EXPORT DFT_ModuleAuCarre
DFT_ModuleAuCarre PROC
push {r4, r5}
DFT_PartieReelle PROC
push {lr, r4, r5, r6}
ldr r3, =TabCos
mov r4, #0
mov r7, #0
mov r5, #0
ldr r3, =TabCos ; r3 = &TabCos[0];
Loop
ldrsh r2, [r3], #2 ; r2 = TabCos[i++]
ldrsh r4, [r0], #2 ; r5 = Signal[i++]
add r5, #1 ; i++;
mul r2, r4 ; r3 = Signal[i] * TabCos[i];
mul r2, r1 ; r3 = Signal[i] * TabCos[i] * k;
add r7, r2
cmp r5, #64
blt Loop
pop {r4, r5}
Boucle1
mul r6, r1, r4
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
ldrsh r5, [r0, r6, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
cmp r4, #64
blt Boucle1
mov r0, r7
pop {lr, r4, r5, r6}
bx lr
ENDP
DFT_PartieImaginaire PROC
push {lr, r4, r5, r6}
ldr r3, =TabSin
mov r4, #0
mov r7, #0
Boucle2
mul r6, r1, r4
and r6, #63
ldrsh r2, [r3, r6, LSL#1]
ldrsh r5, [r0, r6, LSL#1]
mul r5, r2, r5
add r7, r5
add r4, #1
cmp r4, #64
blt Boucle2
mov r0, r7
pop {lr, r4, r5, r6}
bx lr
ENDP
DFT_ModuleAuCarre PROC
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
adc r0, r3, r7
pop {r4, lr}
bx lr
ENDP
;Section ROM code (read only) :
AREA Trigo, DATA, READONLY

View file

@ -1,9 +1,10 @@
#include "DriverJeuLaser.h"
extern void DFT_ModuleAuCarre(short int* Signal64ech, char k);
extern int16_t* LeSignal;
extern int DFT_ModuleAuCarre(short int* Signal64ech, char k);
extern int16_t LeSignal;
unsigned int test = 0;
unsigned int test2 = 0;
int main(void)
{
@ -25,8 +26,9 @@ while (1)
{
if (once) {
once = 0;
DFT_ModuleAuCarre(LeSignal, 1);
//for (int i = 0; i < 64; i++)
test = DFT_ModuleAuCarre(&LeSignal, 1);
}
}
}

View file

@ -75,7 +75,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>
@ -154,6 +154,46 @@
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
<WinNumber>1</WinNumber>
<ItemText>r7</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>r4,0x0A</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>1</WinNumber>
<ItemText>r5</ItemText>
</Ww>
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>r0</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>r3</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>test</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>test</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
@ -174,7 +214,7 @@
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aLa>1</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
@ -199,8 +239,8 @@
<LogicAnalyzers>
<Wi>
<IntNumber>0</IntNumber>
<FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString>
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString>
<FirstString>`test</FirstString>
<SecondString>FF000000000000000000E0C10000C0FFFFFFDF410000000000000000000000000000000074657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F0A000000000000000000000000000000000000007C020008</SecondString>
</Wi>
</LogicAnalyzers>
<DebugDescription>
@ -267,7 +307,7 @@
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
<IsCurrentTarget>0</IsCurrentTarget>
</OPTFL>
<CpuCode>18</CpuCode>
<DebugOpt>