Fin de l'obj2
This commit is contained in:
parent
e77da1ef0e
commit
c451eac6cd
3 changed files with 51 additions and 32 deletions
|
@ -157,22 +157,6 @@
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>31</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134221080</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>.\Src\principal.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\CHTI\Src/principal.c\31</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>0</LineNumber>
|
<LineNumber>0</LineNumber>
|
||||||
<EnabledFlag>0</EnabledFlag>
|
<EnabledFlag>0</EnabledFlag>
|
||||||
<Address>134218136</Address>
|
<Address>134218136</Address>
|
||||||
|
@ -201,7 +185,7 @@
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>2</count>
|
<count>2</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>counters</ItemText>
|
<ItemText>counters,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
<MemoryWindow1>
|
<MemoryWindow1>
|
||||||
|
@ -232,7 +216,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>
|
||||||
|
@ -257,8 +241,33 @@
|
||||||
<LogicAnalyzers>
|
<LogicAnalyzers>
|
||||||
<Wi>
|
<Wi>
|
||||||
<IntNumber>0</IntNumber>
|
<IntNumber>0</IntNumber>
|
||||||
<FirstString>((portb & 0x00000002) >> 1 & 0x2) >> 1</FirstString>
|
<FirstString>`counters[0]</FirstString>
|
||||||
<SecondString>FF000000000000000000000000000000E0FFEF400100000000000000000000000000000028706F7274622026203078303030303030303229203E3E2031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000001000000000000000000F03F0700000000000000000000000000000000000000401E0008</SecondString>
|
<SecondString>008000000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B305D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000001000000555555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
|
</Wi>
|
||||||
|
<Wi>
|
||||||
|
<IntNumber>1</IntNumber>
|
||||||
|
<FirstString>`counters[1]</FirstString>
|
||||||
|
<SecondString>000080000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B315D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000002000000555555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
|
</Wi>
|
||||||
|
<Wi>
|
||||||
|
<IntNumber>2</IntNumber>
|
||||||
|
<FirstString>`counters[2]</FirstString>
|
||||||
|
<SecondString>000000000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B325D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000003000000555555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
|
</Wi>
|
||||||
|
<Wi>
|
||||||
|
<IntNumber>3</IntNumber>
|
||||||
|
<FirstString>`counters[3]</FirstString>
|
||||||
|
<SecondString>FF0000000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B335D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000004000000555555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
|
</Wi>
|
||||||
|
<Wi>
|
||||||
|
<IntNumber>4</IntNumber>
|
||||||
|
<FirstString>`counters[4]</FirstString>
|
||||||
|
<SecondString>008000000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B345D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000005000000555555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
|
</Wi>
|
||||||
|
<Wi>
|
||||||
|
<IntNumber>5</IntNumber>
|
||||||
|
<FirstString>`counters[5]</FirstString>
|
||||||
|
<SecondString>000080000000000000000000000000000000354000000000000000000000000000000000636F756E746572735B355D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000006000000545555555555C53F1800000000000000000000000000000000000000180D0008</SecondString>
|
||||||
</Wi>
|
</Wi>
|
||||||
</LogicAnalyzers>
|
</LogicAnalyzers>
|
||||||
<DebugDescription>
|
<DebugDescription>
|
||||||
|
|
|
@ -16,11 +16,11 @@ dft proc
|
||||||
mov r9, #0 ; r9 = resultat reel
|
mov r9, #0 ; r9 = resultat reel
|
||||||
mov r12, #0 ; r10 = resultat imaginaire
|
mov r12, #0 ; r10 = resultat imaginaire
|
||||||
|
|
||||||
deb_somme ldrh r6, [r0, r4, LSL #1] ; r6 = x[i], LSL #1 pour faire x2 car chaque valeur est sur 2 octets | format 16.0
|
deb_somme ldrh r6, [r0, r4, LSL #1] ; r6 = x[i], LSL #1 pour faire x2 car chaque valeur est sur 2 octets | format 4.12
|
||||||
ldrsh r7, [r2, r5, LSL #1] ; r7 = cos [ik%N] | format 1.15
|
ldrsh r7, [r2, r5, LSL #1] ; r7 = cos [ik%N] | format 1.15
|
||||||
ldrsh r8, [r3, r5, LSL #1] ; r8 = sin [ik%N] | format 1.15
|
ldrsh r8, [r3, r5, LSL #1] ; r8 = sin [ik%N] | format 1.15
|
||||||
mla r9, r6, r7, r9 ; r9 += x[i] * cos[ik%n] | format 17.15
|
mla r9, r6, r7, r9 ; r9 += x[i] * cos[ik%n] | format 5.27
|
||||||
mla r12, r6, r8, r12 ; r10 += x[i] * sin[ik%n] | format 17.15
|
mla r12, r6, r8, r12 ; r10 += x[i] * sin[ik%n] | format 5.27
|
||||||
|
|
||||||
add r5, r1 ; r5 = (i-1)k + k
|
add r5, r1 ; r5 = (i-1)k + k
|
||||||
and r5, #N-1 ; r5 = r5 % 64
|
and r5, #N-1 ; r5 = r5 % 64
|
||||||
|
@ -30,8 +30,8 @@ deb_somme ldrh r6, [r0, r4, LSL #1] ; r6 = x[i], LSL #1 pour faire x2 car chaqu
|
||||||
|
|
||||||
; etat des registres : r0 = x, r1 = k, r9 = Re, r10 = Im, autres libres
|
; etat des registres : r0 = x, r1 = k, r9 = Re, r10 = Im, autres libres
|
||||||
|
|
||||||
smull r2, r0, r9, r9 ; (r2,r0) = Re(k)² | format : 34.30
|
smull r2, r0, r9, r9 ; (r2,r0) = Re(k)² | format : 10.54
|
||||||
smlal r2, r0, r12, r12 ; (r2,r0) = Re(k)² + Im(k)² | format : 34.30
|
smlal r2, r0, r12, r12 ; (r2,r0) = Re(k)² + Im(k)² | format : 10.54 -> r0 est en 10.22
|
||||||
|
|
||||||
pop {r4, r5, r6, r7, r8, r9}
|
pop {r4, r5, r6, r7, r8, r9}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
#include "gassp72.h"
|
#include "gassp72.h"
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
|
|
||||||
|
#define NB_JOUEURS 6
|
||||||
|
#define TYPE_SIGNAL 0x33
|
||||||
const int SYSTICK_PER = 5*72000;
|
const int SYSTICK_PER = 5*72000;
|
||||||
const int N = 64;
|
const int N = 64;
|
||||||
|
const int M2TIR = 985661;
|
||||||
|
|
||||||
|
|
||||||
// Fe = 320 kHz donc pasFreq = 5 kHz
|
// Fe = 320 kHz donc pasFreq = 5 kHz
|
||||||
// F1 = 85 kHz -> k = 17
|
// F1 = 85 kHz -> k = 17
|
||||||
|
@ -12,14 +15,14 @@ const int N = 64;
|
||||||
// F4 = 100 kHz -> k = 20
|
// F4 = 100 kHz -> k = 20
|
||||||
// F5 = 115 kHz -> k = 23
|
// F5 = 115 kHz -> k = 23
|
||||||
// F6 = 120 kHz -> k = 24
|
// F6 = 120 kHz -> k = 24
|
||||||
const int kFreq[6] = {17, 18, 19, 20, 23, 24};
|
const int kFreq[NB_JOUEURS] = {17, 18, 19, 20, 23, 24};
|
||||||
|
|
||||||
int dft(unsigned short *sig, int k);
|
int dft(unsigned short *sig, int k);
|
||||||
|
|
||||||
unsigned short *bufferDMA;
|
unsigned short *bufferDMA;
|
||||||
int counters[6];
|
int counters[NB_JOUEURS];
|
||||||
int debug_result[6];
|
int debug_result[NB_JOUEURS];
|
||||||
const int M2TIR = 10000;
|
int scores[NB_JOUEURS];
|
||||||
|
|
||||||
int time = 0;
|
int time = 0;
|
||||||
|
|
||||||
|
@ -29,11 +32,14 @@ void callbackTimer(void) {
|
||||||
Start_DMA1(64);
|
Start_DMA1(64);
|
||||||
Wait_On_End_Of_DMA1();
|
Wait_On_End_Of_DMA1();
|
||||||
Stop_DMA1;
|
Stop_DMA1;
|
||||||
for (int i = 0; i < 6; ++i) {
|
for (int i = 0; i < NB_JOUEURS; ++i) {
|
||||||
int k = kFreq[i];
|
int k = kFreq[i];
|
||||||
debug_result[i] = dft(bufferDMA, k);
|
debug_result[i] = dft(bufferDMA, k);
|
||||||
if (debug_result[i] > M2TIR) {
|
if (debug_result[i] > M2TIR) {
|
||||||
++counters[i];
|
++counters[i];
|
||||||
|
if (counters[i] == 3) {
|
||||||
|
++scores[i];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
counters[i] = 0;
|
counters[i] = 0;
|
||||||
}
|
}
|
||||||
|
@ -44,6 +50,10 @@ void callbackTimer(void) {
|
||||||
|
|
||||||
int main(void) {
|
int main(void) {
|
||||||
bufferDMA = malloc(N * sizeof(short));
|
bufferDMA = malloc(N * sizeof(short));
|
||||||
|
for (int i = 0; i < NB_JOUEURS; ++i) {
|
||||||
|
counters[i] = 0;
|
||||||
|
scores[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// activation de la PLL qui multiplie la fréquence du quartz par 9
|
// activation de la PLL qui multiplie la fréquence du quartz par 9
|
||||||
CLOCK_Configure();
|
CLOCK_Configure();
|
||||||
|
@ -55,7 +65,7 @@ int main(void) {
|
||||||
GPIO_Configure(GPIOB, 14, OUTPUT, OUTPUT_PPULL);
|
GPIO_Configure(GPIOB, 14, OUTPUT, OUTPUT_PPULL);
|
||||||
|
|
||||||
// activation ADC, sampling time 1us
|
// activation ADC, sampling time 1us
|
||||||
Init_TimingADC_ActiveADC_ff( ADC1, 72 );
|
Init_TimingADC_ActiveADC_ff( ADC1, TYPE_SIGNAL );
|
||||||
Single_Channel_ADC( ADC1, 2 );
|
Single_Channel_ADC( ADC1, 2 );
|
||||||
// Déclenchement ADC par timer2, periode (72MHz/320kHz)ticks
|
// Déclenchement ADC par timer2, periode (72MHz/320kHz)ticks
|
||||||
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
Init_Conversion_On_Trig_Timer_ff( ADC1, TIM2_CC2, 225 );
|
||||||
|
|
Loading…
Reference in a new issue