forked from acco/chti23
fin de la DFT / pb de format
This commit is contained in:
parent
b6baee8edc
commit
99785ea3ac
6 changed files with 2359 additions and 2034 deletions
173
signal/matlab/ScriptDFT.m
Normal file
173
signal/matlab/ScriptDFT.m
Normal file
|
@ -0,0 +1,173 @@
|
|||
%%
|
||||
%TUTO BAC A SABLE
|
||||
figure(1);
|
||||
plot(Res.Sinus_Continu);
|
||||
hold on;
|
||||
plot(Res.Sinus_Echanti,'o');
|
||||
grid;
|
||||
title('Courbe temporelle du Sinus');
|
||||
|
||||
tab = linspace(0,M-1,M);
|
||||
tab = tab*(Fe/M);
|
||||
r = fft(Res.Sinus_Echanti.data);
|
||||
|
||||
figure(2);
|
||||
stem(tab,abs(r/M));
|
||||
grid;
|
||||
title('Module de la TFD en fonction de la fréquence');
|
||||
|
||||
|
||||
%%
|
||||
%QUESTION 1 ET 2
|
||||
clear all;
|
||||
close all;
|
||||
clc;
|
||||
|
||||
Fe = 320000;
|
||||
Te = 1/Fe;
|
||||
T = 1/5000;
|
||||
M = T/Te;
|
||||
Tsim = T-Te;
|
||||
|
||||
F1 = 85000;
|
||||
F2 = 90000;
|
||||
F3 = 95000;
|
||||
F4 = 100000;
|
||||
F5 = 115000;
|
||||
F6 = 120000;
|
||||
|
||||
Res = sim('SimuGuns');
|
||||
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||
r = fft(Res.Echanti.data);
|
||||
|
||||
figure(1);
|
||||
plot(Res.Continu);
|
||||
grid;
|
||||
|
||||
figure(2);
|
||||
plot(echelle_freq,abs(r/M),'o');
|
||||
grid;
|
||||
%%
|
||||
%QUESTION 3
|
||||
clear all;
|
||||
close all;
|
||||
clc;
|
||||
|
||||
Fe = 320000;
|
||||
Te = 1/Fe;
|
||||
T = 1/5000;
|
||||
M = T/Te;
|
||||
Tsim = T-Te;
|
||||
|
||||
F1 = 85005.9;
|
||||
F2 = 90000;
|
||||
F3 = 94846.8;
|
||||
F4 = 100000;
|
||||
F5 = 115015.9;
|
||||
F6 = 120000;
|
||||
|
||||
Res = sim('SimuGuns');
|
||||
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||
r = fft(Res.Echanti.data);
|
||||
|
||||
figure(1);
|
||||
plot(Res.Continu);
|
||||
grid;
|
||||
|
||||
hold on;
|
||||
figure(2);
|
||||
|
||||
semilogy(echelle_freq,abs(r/M));
|
||||
grid;
|
||||
|
||||
%%
|
||||
%Question 4
|
||||
clear all;
|
||||
close all;
|
||||
clc;
|
||||
|
||||
Fe = 320000;
|
||||
Te = 1/Fe;
|
||||
T = 1/5000;
|
||||
M = T/Te;
|
||||
Tsim = T-Te;
|
||||
|
||||
F1 = 85005.9;
|
||||
F2 = 90000;
|
||||
F3 = 94846.8;
|
||||
F4 = 100000;
|
||||
F5 = 115015.9;
|
||||
F6 = 120000;
|
||||
|
||||
Res = sim('SimuGuns');
|
||||
for i = 1:32
|
||||
Res.Echanti.data(i) = 0;
|
||||
end
|
||||
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||
r = fft(Res.Echanti.data);
|
||||
|
||||
figure(1);
|
||||
plot(Res.Continu);
|
||||
grid;
|
||||
|
||||
hold on;
|
||||
figure(2);
|
||||
semilogy(echelle_freq,abs(r/M));
|
||||
grid;
|
||||
|
||||
%%
|
||||
%Question 6
|
||||
clear all;
|
||||
close all;
|
||||
clc;
|
||||
F1 = 85000;
|
||||
Fe = 320000;
|
||||
Te = 1/Fe;
|
||||
%T = 1/F1;
|
||||
%M = T/Te;
|
||||
T = 2*10^(-4);
|
||||
M=2^6;
|
||||
Tsim = T-Te;
|
||||
|
||||
Res = sim('SimuGuns');
|
||||
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||
r = fft(Res.carre1.data);
|
||||
|
||||
figure(1);
|
||||
plot(Res.carre1);
|
||||
grid;
|
||||
|
||||
hold on;
|
||||
figure(2);
|
||||
plot(echelle_freq,log10(abs(r/M)),'o');
|
||||
grid;
|
||||
%%
|
||||
% Question 8
|
||||
clear all;
|
||||
close all;
|
||||
clc;
|
||||
F1 = 85000;
|
||||
Fe = 320000;
|
||||
Te = 1/Fe;
|
||||
%T = 1/F1;
|
||||
%M = T/Te;
|
||||
T = 2*10^(-4);
|
||||
M=2^6;
|
||||
Tsim = T-Te;
|
||||
p = tf('p');
|
||||
Fp = 1/(1.7483e-23*p^4 + 7.6663e-18*p^3 + 1.162e-11*p^2 + 3.0332e-6*p+1);
|
||||
|
||||
Res = sim('SimuGuns');
|
||||
echelle_freq = linspace(0,M-1,M)*(Fe/M);
|
||||
r = fft(Res.carre.data);
|
||||
|
||||
figure(1);
|
||||
plot(Res.carre);
|
||||
grid;
|
||||
|
||||
hold on;
|
||||
figure(2);
|
||||
bode(Fp);
|
||||
plot(bode(Fp));
|
||||
%plot(echelle_freq,log10(abs(r/M)),'o');
|
||||
grid;
|
|
@ -1,5 +1,7 @@
|
|||
PRESERVE8
|
||||
THUMB
|
||||
;;IMPORT LeSignal
|
||||
EXPORT DFT_ModuleAuCaree
|
||||
|
||||
|
||||
; ====================== zone de réservation de données, ======================================
|
||||
|
@ -22,6 +24,45 @@ Index DCD 0
|
|||
area moncode,code,readonly
|
||||
; écrire le code ici
|
||||
|
||||
DFT_ModuleAuCaree
|
||||
;;R0 et R1 sont utilises pour les arg
|
||||
push{r4,r5,r6,r7,r8,r9}
|
||||
mov r5,#0 ;;registre qui va contenir la somme des cos
|
||||
mov r8,#0 ;;registre qui va contenir la somme des sin
|
||||
mov r9,#0 ;;index pour signal64echanti et les tabs
|
||||
mov r2,#0
|
||||
reel
|
||||
cmp r9,#63
|
||||
bgt DFT_ModuleAuCarreFin
|
||||
;;On lit la valeur de l'argument signal64ech
|
||||
;;et on le multiplie à chaque valeur du tabCos
|
||||
ldrsh r3,[r0,r9,lsl #1] ;;on recup le signal64echanti
|
||||
|
||||
|
||||
ldr r4, =TabCos ;;on recup la neme valeur du tableau de cos
|
||||
ldrsh r6, [r4,r2,lsl #1] ;;on stocke la valeur cos a la neme position
|
||||
mul r4,r6,r3 ;; on fait xn*cos
|
||||
|
||||
add r5,r5,r4 ;;et on l'ajoute à la somme des cosinus
|
||||
|
||||
imag
|
||||
ldr r7, =TabSin
|
||||
ldrsh r8,[r7,r2,lsl #1]
|
||||
mul r7,r8,r3
|
||||
add r8,r8,r7 ;;sommre des sin
|
||||
|
||||
add r9,#1
|
||||
add r2,r1
|
||||
b reel
|
||||
|
||||
DFT_ModuleAuCarreFin
|
||||
|
||||
mul r5,r5
|
||||
mul r8,r8
|
||||
add r0,r5,r8
|
||||
pop{r4,r5,r6,r7,r8,r9}
|
||||
bx lr
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -30,17 +71,7 @@ Index DCD 0
|
|||
AREA Trigo, DATA, READONLY
|
||||
; codage fractionnaire 1.15
|
||||
|
||||
DFT_ModuleAuCaree proc
|
||||
push{r2,r3,r4,r5,r6,r7,r8,r9}
|
||||
ldr r3,=TabCos
|
||||
ldr r2,=M
|
||||
ldr r2,[r2]
|
||||
ldr r7,=Index
|
||||
ldr r4,[r7]
|
||||
|
||||
etape1
|
||||
ldrsh r5 ,[r3
|
||||
|
||||
|
||||
|
||||
|
||||
TabCos
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
|
||||
|
||||
#include <stdio.h>
|
||||
#include "DriverJeuLaser.h"
|
||||
|
||||
|
||||
extern int DFT_ModuleAuCaree(short int * signal , char k );
|
||||
extern short int LeSignal;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
@ -13,21 +13,23 @@ int main(void)
|
|||
|
||||
// Après exécution : le coeur CPU est clocké à 72MHz ainsi que tous les timers
|
||||
CLOCK_Configure();
|
||||
|
||||
// K1 (85) = 34
|
||||
// K2 (90) = 36
|
||||
// K3 (95) = 38
|
||||
// K4 (100) = 40
|
||||
// K5 (115) = 46
|
||||
// K6 (120) = 48
|
||||
int Res_DFT[32];
|
||||
char K1 = 17;
|
||||
// K2 (90) = 18
|
||||
// K3 (95) = 19
|
||||
// K4 (100) = 20
|
||||
// K5 (115) = 23
|
||||
// K6 (120) = 24
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//============================================================================
|
||||
|
||||
|
||||
|
||||
for (int k = 0; k<32;k++){
|
||||
Res_DFT[k] = DFT_ModuleAuCaree(&LeSignal,k);
|
||||
}
|
||||
while (1)
|
||||
{
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -75,7 +75,7 @@
|
|||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>18</CpuCode>
|
||||
<DebugOpt>
|
||||
|
@ -331,7 +331,7 @@
|
|||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>18</CpuCode>
|
||||
<DebugOpt>
|
||||
|
|
Loading…
Reference in a new issue