Pilote
des moteurs pas à pas de l'émulateur
Mini système FORTH
Instructions
Utilisation
Exemple
Principe
Si les moteurs pas à pas
de l'émulateur sont accessibles par un registre adressable dans
la zone des registres
d'extension du coeur FORTH décrit comme suit:
276 (0x114):
bits[15..7] = 0xFF8 si angle 0 (en haut)
0x000 sinon (lecture seule)
bit[6] = 1 pour piloter l'index
(lecture/écriture)
bit[5] = 1 pour piloter la grande aiguille
(lecture/écriture)
bit[4] = 1 pour piloter la petite aiguille
(lecture/écriture)
bits[3..0] = phase4,phase3,phase2,phase1
(lecture/écriture)
1 tour = 120 pas (3°/pas)
Le pilote va permettre de faciliter l'utilisation de ce registre en
se
servant du noyau temps réel. Le principe consiste
à
permettre au développeur d'indiquer la position
désirée sans avoir à gérer
le déplacement des moteurs.
Pour
l'émulateur du mini système FORTH, les bits 0 à 7 sont
câblés sur un composant PCF8574A du port I2C numéro 7. Le schéma électrique est le suivant:
Instructions
- CW_MOTEUR
276
Numéro du
registre d'extension de contrôle du moteur.
Cette instruction n'existe pas dans le mini système FORTH,
l'accès direct aux moteurs se fait par l'intermédiaire des instructions I2C_PCF8574A_C@ et I2C_PCF8574A_C! numéro 7.
consigne MOTEUR -
Affichage de la
position désirée du moteur de la petite aiguille.
consigne est la valeur de la position désirée (0
minimum à 119 maximum).
consigne MOTEUR_G -
Affichage de la
position désirée du moteur de la grande aiguille.
consigne est la valeur de la position désirée (0
minimum à 119 maximum).
consigne MOTEUR_I -
Affichage de la
position désirée du moteur de l'index.
consigne est la valeur de la position désirée (0
minimum à 119 maximum).
Utilisation
Le
pilote n'étant pas intégré au noyau,
il fau
d'abord compiler le fichier source
moteur_pap.txt avant de pouvoir l'utiliser.
Pour
l'émulateur du mini système FORTH, il faut d'abord compiler les pilotes I2C décrits dans le fichier source pcf8574a.txt puis compiler moteur_pap.txt.
La séquence suivante correspond à l'affichage de
3 heures:
30 MOTEUR
Le pilote gère automatiquement l'installation d'une
tâche qui calcul le déplacement le plus court e
génère chaque pas toutes les 5 ms. Au premier
appel (juste après l'initialisation du système),
une recherche de la position "0" est effectuée avant d'aller
à la position désirée. Ceci es
réalisé avec
la priorité 49152.
Exemple
Le programme du fichier test_moteurs.txt
commence par un tour dans le sens horaire de la petite aiguille, puis
la grande aiguille, puis l'index et termine par un tour dans les sens
inverse des 3 moteurs à la fois:
DECIMAL
0 VARIABLE ETAPE
TACHE: T_MOTEURS_PAS_A_PAS
ETAPE DUP >R @ 1 R> +! 120 /MOD DUP 3 >
IF
DROP DUP XOR DUP MOTEUR DUP MOTEUR_G MOTEUR_I T_MOTEURS_PAS_A_PAS T_RETIRE
ELSE
?DUP
IF
1- ?DUP
IF
1-
IF
>R 120 R> - DUP MOTEUR DUP MOTEUR_G MOTEUR_I
ELSE
DUP 0=
IF
0 MOTEUR_G
THEN
MOTEUR_I
THEN
ELSE
DUP 0=
IF
0 MOTEUR
THEN
MOTEUR_G
THEN
ELSE
MOTEUR
THEN
THEN
;
0 DUP MOTEUR DUP MOTEUR_G MOTEUR_I 1000 TEMPO
50 T_MOTEURS_PAS_A_PAS 32768 OVER T_AJOUTE T_PERIODE
Voici une vidéo:
