Pilote
de l'entrée sortie analogique de l'émulateur
Instructions
Utilisation
Exemple
Principe
Si l'entrée sortie analogique
de l'émulateur sont des registres adressables dans
la zone des registres
d'extension du coeur FORTH décrits comme suit:
274 (0x112) échantillonnage
275 (0x113) entrée/sortie analogique
si écriture échantillonnage = 0
-lecture et écriture analogique directe
-lecture échantillonnage = 1
sinon
-FIFO 2048 échantillons 10 us (1) à 8
échantillons 2,55 ms (255)
-lecture échantillonnage = nombre d'échantillons
disponibles
Les valeurs analogiques doivent être comprises entre -128 e
+127
Le pilote va permettre de faciliter l'utilisation de ces registres en
se
servant du noyau temps réel. Le principe consiste
à
permettre au développeur de concevoir un programme qui es
automatiquement exécuté pendant le flux des
échantillons.
Instructions
- CW_ECHANTILLONNAGE 274
Numéro du
registre d'extension de contrôle de
l'échantillonnage.
- CW_ANALOGIQUE
275
Numéro du
registre d'extension de l'entrée sortie analogique.
adr_prg,periode SYNC_ANALOGIQUE -
Installation du
pilote de l'entrée sortie analogique.
adr_prg est l'adresse du programme appelé avec
l'échantillon d'entrée
et qui doit fournir l'échantillon de sortie correspondant.
periode est la valeur temporelle de l'échantillon en us (10
minimum à 2550 maximum).
Si adr_prg ou periode est nul, le pilote est retiré.
Utilisation
Le
pilote n'étant pas intégré au noyau,
il fau
d'abord compiler le fichier source
analogique.txt avant de pouvoir l'utiliser.
Il faut créer le programme appelé automatiquemen
par le pilote en utilisant la syntaxe suivante:
: PROGRAMME
INSTRUCTION1
INSTRUCTION2 ... INSTRUCTIONn
;
ATTENTION: le programme aura la valeur de l'échantillon
d'entrée sur la pile des
données, il devra fournit un échantillon de
sortie.
Il faut ensuite installer le pilote avec la valeur de la
période désirée:
FIND
PROGRAMME PERIODE SYNC_ANALOGIQUE
La FIFO de réception des échantillons est lue
toutes les
20 ms et le programme est appelé autant de fois qu'il y a
d'échantillons. Avec une période de 100 us par
exemple,
jusqu'à 200 échantillons seron
traités toutes les
20 ms. Chaque échantillon fourni par le programme es
envoyé dans la FIFO de sortie. Ceci es
réalisé avec
la priorité 49152.
Exemple
Le
programme suivant est une PLL logicielle multipliant par deux la
fréquence d'entrée. Le fichier source
ports_A_B.txt
doit aussi être compilé afin que le port A affiche
la
fréquence de sortie en binaire et que le port B affiche la
progression du vérouillage sous forme de chenillard:
DECIMAL
0
VARIABLE PERIODE
0 VARIABLE DIV
0 VARIABLE REF
0 VARIABLE FOSC
:
PROG_ANALOGIQUE
( Detection du front montant de l'entree )
0<
REF DUP >R @ OVER R> ! >R NOT R> AND NEGATE
( Oscillateur 1 Hz a 5
KHz )
PERIODE
DUP >R @ FOSC @ - DUP 0<
IF
( Detection
du front montant de l'oscillateur divise par 2 )
5000+ >R DIV DUP >R @ 1+ DUP R> ! 3 AND 2 = +
R>
THEN
R>
! ?DUP
IF
( Ajustage de la
fréquence pour verouillage )
FOSC DUP >R @ + DUP R> ! DUP >R SORT_PORT_A 1
R> 15 AND LSH SORT_PORT_B
THEN
( Sortie de
l'oscillateur )
DIV
@ 1 AND -200 * 100+
;
0
DUP SYNC_PORT_A 0 DUP SYNC_PORT_B FIND PROG_ANALOGIQUE 100
SYNC_ANALOGIQUE
Pour
retirer ce programme, il suffit de faire:
65535 DUP SORT_PORT_A SORT_PORT_B 0 DUP
SYNC_ANALOGIQUE
Voici une vidéo:
