commentaires + ajustements
This commit is contained in:
parent
332abb1cf0
commit
d83c9d32ce
4 changed files with 168 additions and 59 deletions
|
@ -8,21 +8,20 @@
|
||||||
|
|
||||||
calcul_carre proc
|
calcul_carre proc
|
||||||
|
|
||||||
push {r4}
|
push {r4,r5}
|
||||||
push {r5}
|
|
||||||
|
|
||||||
ldr r4, =TabSin ;on charge les tables sin et cos
|
|
||||||
ldr r5, =TabCos
|
|
||||||
ldrh r2, [r4, r0, LSL #1] ;on récupère la i-ème valeur de chacune des tables
|
|
||||||
ldrh r0, [r5, r0, LSL #1]
|
|
||||||
|
|
||||||
mul r0, r0 ;on effectue le calcul cos²+sin²
|
ldr r4, =TabCos ;on charge les tables sin et cos
|
||||||
mul r2, r2
|
ldr r5, =TabSin
|
||||||
|
ldrh r1, [r4, r0, LSL #1] ;on récupère la i-ème valeur de chacune des tables
|
||||||
|
ldrh r2, [r5, r0, LSL #1]
|
||||||
|
|
||||||
add r0, r2
|
|
||||||
|
|
||||||
pop {r5}
|
mul r1, r1, r1 ;on calcule cos²
|
||||||
pop {r4}
|
mla r0, r2, r2, r1 ;puis on calcule sin*sin + cos² dans r0
|
||||||
|
|
||||||
|
pop {r4,r5}
|
||||||
|
|
||||||
|
|
||||||
bx lr
|
bx lr
|
||||||
endp
|
endp
|
||||||
|
|
|
@ -14,16 +14,16 @@ timer_callback proc
|
||||||
; mise a 1 de PB1
|
; mise a 1 de PB1
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|
||||||
ldr r1, =etat ;chargement de la variable etat
|
ldr r1, =etat ;chargement de la variable etat
|
||||||
ldr r1, [r1]
|
ldr r1, [r1]
|
||||||
ldr r3, =GPIOB_BSRR
|
ldr r3, =GPIOB_BSRR
|
||||||
cmp r1, #0x00020000 ;if(etat == 0){etat =1}else{etat=0}
|
cmp r1, #0x00020000 ;if(etat == 0){etat =1}else{etat=0}
|
||||||
beq eq
|
beq eq
|
||||||
bne noteq
|
bne noteq
|
||||||
|
|
||||||
gdc ldr r0, =etat
|
gdc ldr r0, =etat
|
||||||
str r1, [r0] ;on met à jour etat
|
str r1, [r0] ;on met à jour etat
|
||||||
str r1, [r3] ;et GPIOB_BSRR
|
str r1, [r3] ;et GPIOB_BSRR
|
||||||
|
|
||||||
; N.B. le registre BSRR est write-only, on ne peut pas le relire
|
; N.B. le registre BSRR est write-only, on ne peut pas le relire
|
||||||
|
|
||||||
|
|
|
@ -157,6 +157,86 @@
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
|
<LineNumber>56</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134225642</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\CHTI\Src/calcul_dft.s\56</Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>1</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>28</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134225588</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\CHTI\Src/calcul_dft.s\28</Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>2</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>27</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134225586</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\CHTI\Src/calcul_dft.s\27</Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>3</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>23</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134225578</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\CHTI\Src/calcul_dft.s\23</Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>4</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>18</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134225570</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\CHTI\Src/calcul_dft.s\18</Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>5</Number>
|
||||||
|
<Type>0</Type>
|
||||||
<LineNumber>18</LineNumber>
|
<LineNumber>18</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>134225484</Address>
|
<Address>134225484</Address>
|
||||||
|
@ -171,25 +251,9 @@
|
||||||
<Expression>\\CHTI\Src/principal.c\18</Expression>
|
<Expression>\\CHTI\Src/principal.c\18</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>1</Number>
|
<Number>6</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>31</LineNumber>
|
<LineNumber>30</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134225568</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>.\Src\calcul_dft.s</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\CHTI\Src/calcul_dft.s\31</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>2</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>19</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>0</Address>
|
<Address>0</Address>
|
||||||
<ByteObject>0</ByteObject>
|
<ByteObject>0</ByteObject>
|
||||||
|
@ -198,7 +262,55 @@
|
||||||
<SizeOfObject>0</SizeOfObject>
|
<SizeOfObject>0</SizeOfObject>
|
||||||
<BreakByAccess>0</BreakByAccess>
|
<BreakByAccess>0</BreakByAccess>
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
<BreakIfRCount>0</BreakIfRCount>
|
||||||
<Filename>.\Src\principal.c</Filename>
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression></Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>7</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>57</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>0</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>0</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression></Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>8</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>58</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>0</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>0</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression></Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>9</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>60</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>0</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>0</BreakIfRCount>
|
||||||
|
<Filename>.\Src\calcul_dft.s</Filename>
|
||||||
<ExecCommand></ExecCommand>
|
<ExecCommand></ExecCommand>
|
||||||
<Expression></Expression>
|
<Expression></Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
|
@ -219,7 +331,7 @@
|
||||||
<Mm>
|
<Mm>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<SubType>10</SubType>
|
<SubType>10</SubType>
|
||||||
<ItemText>0x08001F28</ItemText>
|
<ItemText>0x08001F30</ItemText>
|
||||||
<AccSizeX>0</AccSizeX>
|
<AccSizeX>0</AccSizeX>
|
||||||
</Mm>
|
</Mm>
|
||||||
</MemoryWindow1>
|
</MemoryWindow1>
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
; ce programme est pour l'assembleur RealView (Keil)
|
; ce programme est pour l'assembleur RealView (Keil)
|
||||||
thumb
|
thumb
|
||||||
area moncode, code, readonly
|
area moncode, code, readonly
|
||||||
export calcul_dft_moitie
|
|
||||||
export calcul_dft
|
export calcul_dft
|
||||||
import TabCos
|
import TabCos
|
||||||
import TabSin
|
import TabSin
|
||||||
|
@ -11,45 +10,44 @@
|
||||||
calcul_dft proc
|
calcul_dft proc
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|
||||||
;push {r1}
|
push {r0,r1,r4,r5}
|
||||||
|
|
||||||
ldr r2, =TabCos
|
ldr r2, =TabCos
|
||||||
bl calcul_dft_moitie ;recuperation Re(k) dans r0
|
bl calcul_partie_dft ;recuperation Re(k) dans r0
|
||||||
|
|
||||||
;pop {r1}
|
smull r4, r5, r0, r0 ;Re(k)² dans r4, r5
|
||||||
|
pop {r0,r1} ;recupereration de TabSig et k dans r0,r1
|
||||||
|
|
||||||
;push {r0} ;mise de Re(k) dans la pile
|
|
||||||
|
|
||||||
;ldr r2, =TabSin
|
ldr r2, =TabSin
|
||||||
;bl calcul_dft_moitie ;mise de -Im(k) dans r0
|
bl calcul_partie_dft ;mise de -Im(k) dans r0
|
||||||
|
|
||||||
;mul r0, r0, r0 ;(-Im(k))²
|
smlal r4, r5, r0, r0 ;Re²+(-Im(k))²
|
||||||
|
|
||||||
;pop {r1} ;mise de Re(k) dans r1
|
mov r0, r5 ;recuperation des bits de poids fort de M2(k)
|
||||||
;mul r1, r1, r1 ;Re(k)²
|
pop {lr, r4,r5}
|
||||||
;add r0, r0, r1 ;addition de Re(k)² + Im(k)²
|
|
||||||
pop {lr}
|
|
||||||
bx lr
|
bx lr
|
||||||
endp
|
endp
|
||||||
|
|
||||||
calcul_dft_moitie proc
|
calcul_partie_dft proc
|
||||||
push {lr,r4-r6}
|
push {lr,r4-r7}
|
||||||
|
|
||||||
|
|
||||||
mov r4, r0
|
mov r4, r0 ;chargement de TabSig dans r4
|
||||||
mov r5, r2
|
mov r5, r2 ;chargement de TabCos/TabSin dans r5
|
||||||
mov r6, r1
|
mov r6, r1 ;chargement de k dans r6
|
||||||
|
mov r7, #0 ;ik dans r7
|
||||||
|
|
||||||
mov r3, #0 ;i=0 dans r3
|
mov r3, #0 ;i=0 dans r3
|
||||||
mov r0, #0 ;resultat de la somme dans r0
|
mov r0, #0 ;resultat de la somme dans r0
|
||||||
boucle ldrh r2, [r4, r3, LSL #1] ;chargement de x(i)
|
boucle ldrh r1, [r4, r3, LSL #1] ;chargement de x(i)
|
||||||
|
ldrsh r2, [r5, r7, LSL #1] ;chargement de cos(ik..), ldrs(!)h tres important, ne fonctionne pas sinon
|
||||||
|
|
||||||
mul r1, r3, r6 ;multiplication ik dans r1
|
mla r0, r1, r2, r0 ;multiplication + ajout au resultat de x(i)cos(ik..)
|
||||||
and r1, r1, #63 ;modulo de ik par 64
|
|
||||||
|
add r7, r7, r6 ;mise a jour de ik
|
||||||
|
and r7, r7, #63 ;modulo de ik par 64
|
||||||
|
|
||||||
ldrh r1, [r5, r1, LSL #1] ;chargement de cos(ik..)
|
|
||||||
mul r12, r1, r2 ;multiplication x(i)cos(ik..)
|
|
||||||
add r0, r0, r12 ;ajout dans la somme
|
|
||||||
add r3, #1 ;incrementation de i
|
add r3, #1 ;incrementation de i
|
||||||
cmp r3, #64 ;test de i
|
cmp r3, #64 ;test de i
|
||||||
bne boucle
|
bne boucle
|
||||||
|
@ -57,7 +55,7 @@ boucle ldrh r2, [r4, r3, LSL #1] ;chargement de x(i)
|
||||||
|
|
||||||
sortie
|
sortie
|
||||||
|
|
||||||
pop {lr,r4-r6}
|
pop {lr,r4-r7}
|
||||||
bx lr
|
bx lr
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue