Document fait avec Nvu Document made with Nvu




Pilote des ports de l'émulateur

Mini système FORTH
Micro système FORTH

Instructions
Utilisation
Exemple

Principe

Si les ports A et B de l'émulateur sont des ports d'entrées/sorties adressables dans la zone des registres d'extension du coeur FORTH décrits comme suit:

272 (0x110) PORT_A
273 (0x111) PORT_B

écriture: valeur[15..0]
lecture: (valeur&entrée)[15..0]

voyant allumé si valeur&entrée=1

Le pilote va permettre de faciliter l'utilisation de ces ports en se servant du noyau temps réel. Le principe consiste à permettre au développeur de concevoir un programme qui es automatiquement exécuté lorsqu'une des entrées choisies change d'état.

Pour l'émulateur du mini système FORTH, le port A est câblé sur les composants PCF8574 du port I2C numéros 0 et 1 et le port B sur les composants PCF8574A du port I2C numéros 0 et 1. Les poids forts sont sur le numéro 0 et les poids faibles sur le numéro 1. Le schéma électrique est le suivant:



L'émulateur du micro système FORTH simule 7 ports A,B,C,D,E,F et G correspondant à une configuration maximale possible pouvant être intégrée dans un processeur 16 bits de
MICROCHIP.

Instructions

- CW_PORT_A 272

- CW_PORT_B 273

Numéros des registres d'extension des ports A et B.
Ces
instructions n'existent pas dans le mini système FORTH,
l'accès direct au ports se fait par l'intermédiaire des instructions 
I2C_PCF8574_C@, I2C_PCF8574A_C@, I2C_PCF8574_C! et I2C_PCF8574A_C! numéros 0 et 1.
Ces instructions n'existent pas dans le micro système FORTH,
les registres ne sont pas déclarés pour gagner de la place mémoire.

- TABLE_PORTS adr

Cette instruction est uniquement disponible dans le micro système FORTH et fournit l'adresse du tableau de variables utilisées par les pilotes des différents ports.

adr_prg,msq SYNC_PORT_A -

adr_prg,msq SYNC_PORT_B -

Installation des pilotes des ports A et B.
adr_prg est l'adresse du programme appelé avec la valeur lue sur le port
lors de la détection de la modification d'un des bits choisis.
msq est le masque des bits testés par le pilote (1 pour chaque bit testé, 0 pour les autres).
Si adr_prg ou msq est nul, le pilote est retiré.

Dans le cas du micro sytème FORTH, chaque bit testé est configuré en drain ouvert, les autres sont configurés en sorties,
de plus adr_prg est constitué de 2 mots de 16 bits, adrh et adrl,

adrh,adrl,msq SYNC_PORT_C -

adrh,adrl,msq SYNC_PORT_D -

adrh,adrl,msq SYNC_PORT_E -

adrh,adrl,msq SYNC_PORT_F -

adrh,adrl,msq SYNC_PORT_G -

Installation des pilotes des port C,D,E,F et G uniquement dans le cas du micro système FORTH.
adrh,adrl est l'adresse du programme appelé avec la valeur lue sur le port
lors de la détection de la modification d'un des bits choisis.
msq est le masque des bits testés par le pilote (1 pour chaque bit testé en drain ouvert, 0 pour les autres en sorties).
Si adrh et adrl ou msq est nul, le pilote est retiré.

n SORT_PORT_A -

n SORT_PORT_B -

Ecriture d'une valeur sur les ports A et B.
n est combiné avec le complément du masque du pilote (0 si non installé) et envoyé sur le port.

n SORT_PORT_C -

n SORT_PORT_D -

n SORT_PORT_E -

n SORT_PORT_F -

n SORT_PORT_G -

Ecriture d'une valeur sur les ports C,D,E,F et G uniquement dans le cas du micro système FORTH.
n est combiné avec le complément du masque du pilote (0 si non installé) et envoyé sur le port.


Utilisation

Le pilote n'étant pas intégré au noyau, il faut d'abord compiler le fichier source ports_A_B.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 les fichiers sources pcf8574.txt et pcf8574a.txt puis compiler ports_A_B.txt.

Pour l'émulateur du micro système FORTH, il faut d'abord compiler le fichier source ports_ABCDEFG.txt ou ports_ABCDEFG_ep.txt en fonction du processeur utilisé. Pour optimiser la taille mémoire, retirer les instructions des ports inutilisés avant la compilation.

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 du port sur la pile des données, il ne faut pas oublier de dépiler cette valeur.

Il faut ensuite installer le pilote avec la valeur du masque désiré:

FIND PROGRAMME MASQUE SYNC_PORT_x

Le port x est lu toutes les 20 ms et dès qu'au moins un des bits correspondant au masque a changé de valeur depuis la dernière lecture, le programme es éxécuté avec la valeur lue sur le port x. Ceci es réalisé avec la priorité 49152.

Exemple

Le programme suivant permet de recopier la valeur du port B sur le port A en ayant pris soin de mettre tous les interrupteurs du port A vers le haut:

DECIMAL

: PROG_PORT_B
 ( Le contenu du port B est copie sur le port A avec emission d'un son )
 SORT_PORT_A 10 500 BIP ( remplacer "10 100 BIP" par "7 EMIT"
pour le micro système FORTH )
;

0 DUP ( ajouter "DUP" pour le micro système FORTH ) SYNC_PORT_A FIND PROG_PORT_B 65535 SYNC_PORT_B

Pour retirer ce programme, il suffit de faire:

0 DUP ( ajouter "DUP" pour le micro système FORTH ) SYNC_PORT_B 65535 SORT_PORT_A

Voici une vidéo: