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

View file

@ -1,9 +1,10 @@
#include "DriverJeuLaser.h" #include "DriverJeuLaser.h"
extern void DFT_ModuleAuCarre(short int* Signal64ech, char k); extern int DFT_ModuleAuCarre(short int* Signal64ech, char k);
extern int16_t* LeSignal; extern int16_t LeSignal;
unsigned int test = 0;
unsigned int test2 = 0;
int main(void) int main(void)
{ {
@ -25,8 +26,9 @@ while (1)
{ {
if (once) { if (once) {
once = 0; 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> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>0</IsCurrentTarget> <IsCurrentTarget>1</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>
@ -154,6 +154,46 @@
</SetRegEntry> </SetRegEntry>
</TargetDriverDllRegistry> </TargetDriverDllRegistry>
<Breakpoint/> <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> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
@ -174,7 +214,7 @@
<AscS3>0</AscS3> <AscS3>0</AscS3>
<aSer3>0</aSer3> <aSer3>0</aSer3>
<eProf>0</eProf> <eProf>0</eProf>
<aLa>0</aLa> <aLa>1</aLa>
<aPa1>0</aPa1> <aPa1>0</aPa1>
<AscS4>0</AscS4> <AscS4>0</AscS4>
<aSer4>0</aSer4> <aSer4>0</aSer4>
@ -199,8 +239,8 @@
<LogicAnalyzers> <LogicAnalyzers>
<Wi> <Wi>
<IntNumber>0</IntNumber> <IntNumber>0</IntNumber>
<FirstString>((portb &amp; 0x00000002) &gt;&gt; 1 &amp; 0x2) &gt;&gt; 1</FirstString> <FirstString>`test</FirstString>
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F160000000000000000000000000000000000000096020008</SecondString> <SecondString>FF000000000000000000E0C10000C0FFFFFFDF410000000000000000000000000000000074657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F0A000000000000000000000000000000000000007C020008</SecondString>
</Wi> </Wi>
</LogicAnalyzers> </LogicAnalyzers>
<DebugDescription> <DebugDescription>
@ -267,7 +307,7 @@
<OPTFL> <OPTFL>
<tvExp>1</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget> <IsCurrentTarget>0</IsCurrentTarget>
</OPTFL> </OPTFL>
<CpuCode>18</CpuCode> <CpuCode>18</CpuCode>
<DebugOpt> <DebugOpt>