forked from acco/chti23
StepSon & StepDFT done
This commit is contained in:
parent
2306ac577e
commit
beb2eb3cdd
4 changed files with 157 additions and 9 deletions
|
@ -1,7 +1,9 @@
|
|||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
|
||||
|
||||
export DFT_ModuleAuCarre
|
||||
export TabCos
|
||||
|
||||
; ====================== zone de réservation de données, ======================================
|
||||
;Section RAM (read only) :
|
||||
area mesdata,data,readonly
|
||||
|
@ -20,10 +22,63 @@
|
|||
;Section ROM code (read only) :
|
||||
area moncode,code,readonly
|
||||
; écrire le code ici
|
||||
;r0 : signal d'entrée
|
||||
;r1 : k
|
||||
;r2 : n (compteur de boucle)
|
||||
;r3 : TabCos ou TabSin selon le moment
|
||||
;r4 : 64 = taille du tableau
|
||||
;r5 : somme incrémentée à chaque itération de la boucle (partie imaginaire ou réelle selon l'itération
|
||||
;r6 : LeSignal(i) = la bonne case du tableau de signal
|
||||
;r7 : cos(2*pi*k*n/M) = la bonne case du tableau de cos ou sin
|
||||
;r8 : signal entrée sécurisé (pour être sur su'il ne soit pas écrasé)
|
||||
;r9 : k sécurisé (pour être sur qu'il ne soit pas écrasé)
|
||||
|
||||
|
||||
DFT_ModuleAuCarre
|
||||
push {LR, r9, r8}
|
||||
;sécuriser r0 r1
|
||||
mov r8, r0 ; stocker l'adresse du signal passée en argument
|
||||
ldr r3, =TabCos
|
||||
bl DFT_PartieRouI ; calcul de la partie réelle
|
||||
mov r9, r0 ; stocker le résultat = partie réelle au format 12.20 dans un registre
|
||||
mov r0, r8 ; renvoyer l'adresse du signal dans r0 pour qu'elle soit passée en argument du calcul de la partie imaginaire
|
||||
ldr r3, =TabSin
|
||||
bl DFT_PartieRouI ; résultat = partie imaginaire au format 12.20
|
||||
;Calcul du module
|
||||
asr r0, r0, #16 ;décalage de 16 vers la droite (on enlève de la précision) pour avoir la place de stocker le résultat du carré - format 12.4
|
||||
lsr r1, r9, #16 ;décalage de 16 vers la droite (on enlève de la précision) pour avoir la place de stocker le résultat du carré - format 12.4
|
||||
mul r0, r0 ; partie imaginaire au carré au format 26.6
|
||||
mul r1, r1 ; partie réelle au carré au format 26.6
|
||||
add r0, r9 ;résultat au format 26.6
|
||||
pop {r8, r9, LR}
|
||||
bx lr
|
||||
|
||||
|
||||
DFT_PartieRouI ;DFT_UnePartie
|
||||
;Etape 1 : partie réelle
|
||||
push {LR, r4, r5, r6, r7}
|
||||
mov r2, #0 ;initialisation de n à 0
|
||||
;ldr r3, =TabCos ;récupération de l'adresse de TabCos -- à enlever pour faire le sinus
|
||||
mov r4, #64
|
||||
mov r5, #0 ; initialisation de la somme à 0
|
||||
|
||||
CalculTerme
|
||||
cmp r4, r2
|
||||
ble fin
|
||||
mul r6, r1, r2 ; k*n stocké dans r7 + modulo
|
||||
and r6, #63 ; modulo 64
|
||||
ldrsh r7, [r3, r6, lsl #1] ; récupération de TabCos(2*pi*k*n/M) au format 1.15
|
||||
ldrsh r6, [r0, r2, lsl #1] ; récupération de LeSignal(n) au format 4.12
|
||||
mul r7, r6 ; multiplication de x(n)*cos(2*pi*k*n/M) au format 5.27
|
||||
asr r7, r7, #7 ;décalage de 7 vers la droite (on enlève de la précision) pour avoir la place de stocker les retenues si besoin (64 retenues max, stockées sur 6 bits, mais 7 pour être sur) ; asr pour conserver le bit de signe
|
||||
add r5, r7 ; ajout de ce terme à la somme totale au format 12.20
|
||||
add r2, #1 ;incrémentation de n
|
||||
b CalculTerme
|
||||
|
||||
fin
|
||||
mov r0, r5
|
||||
pop {r7, r6, r5, r4, LR}
|
||||
bx lr
|
||||
|
||||
;Section ROM code (read only) :
|
||||
AREA Trigo, DATA, READONLY
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
|
||||
|
||||
#include <stdio.h>
|
||||
#include "DriverJeuLaser.h"
|
||||
|
||||
extern short LeSignal ;
|
||||
extern int DFT_ModuleAuCarre(short int * Signal64ech, char k); //à changer quand la fonction moduleaaucarré sera créée
|
||||
|
||||
|
||||
int T[64];
|
||||
int main(void)
|
||||
{
|
||||
|
||||
|
@ -19,6 +21,15 @@ CLOCK_Configure();
|
|||
|
||||
|
||||
//============================================================================
|
||||
|
||||
//int vf = DFT_ModuleAuCarre(&LeSignal,1);
|
||||
|
||||
for (int i=0;i<64;i++){
|
||||
|
||||
T[i]=DFT_ModuleAuCarre(&LeSignal,i);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
while (1)
|
||||
|
|
|
@ -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,34 @@
|
|||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>vf</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>T</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>0x080004D4</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
<MemoryWindow2>
|
||||
<Mm>
|
||||
<WinNumber>2</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>&TabCos</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow2>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
|
@ -267,7 +295,7 @@
|
|||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>18</CpuCode>
|
||||
<DebugOpt>
|
||||
|
@ -624,6 +652,30 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Src\DFT.s</PathWithFileName>
|
||||
<FilenameWithoutPath>DFT.s</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\Src\Signal.asm</PathWithFileName>
|
||||
<FilenameWithoutPath>Signal.asm</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
|
@ -634,7 +686,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -654,7 +706,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>4</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
|
|
@ -388,6 +388,16 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>.\Src\principal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>DFT.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\DFT.s</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Signal.asm</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\Signal.asm</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -797,6 +807,16 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>.\Src\principal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>DFT.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\DFT.s</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Signal.asm</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\Signal.asm</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -1275,6 +1295,16 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>.\Src\principal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>DFT.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\DFT.s</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Signal.asm</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\Src\Signal.asm</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
|
@ -1322,7 +1352,7 @@
|
|||
<LayerInfo>
|
||||
<Layers>
|
||||
<Layer>
|
||||
<LayName><Project Info></LayName>
|
||||
<LayName>StepDFT</LayName>
|
||||
<LayTarg>0</LayTarg>
|
||||
<LayPrjMark>1</LayPrjMark>
|
||||
</Layer>
|
||||
|
|
Loading…
Reference in a new issue