Document fait avec Nvu Document made with Nvu




Pilote du clavier de l'émulateur

Mini système FORTH

Instructions
Utilisation
Exemple

Principe

Si le clavier de l'émulateur est un registre adressable dans la zone des registres d'extension du coeur FORTH décrit comme suit:

278 (0x116) lecture seule:

bits[15..4] = 0xFFF si touche enfoncée
0x000 sinon
bits[3,2] = numéro de la ligne (0 en haut)
bits[1,0] = numéro de la colonne (0 à gauche)

les bits[3..0] sont mémorisés lorsque la touche est relachée


Le pilote va permettre de faciliter l'utilisation de ce registre en se servant du noyau temps réel. Le principe consiste à fournir au développeur le code de la touche activée avec gestion automatique de l'auto répétition.

Pour l'émulateur du mini système FORTH, un composant PCF8574 du port I2C numéro 7 est utilisé avec la configuration suivante:
bit[7] = 1 si la touche est enfoncée
0 sinon
bits[6..4] pilotent 3 DELs blanches allumées à 1
bits[3..0] ont la même fonction
Le schéma électrique est le suivant:


Instructions

- CW_CLAVIER 278

Numéro du registre d'extension du clavier.
Cette instruction n'existe pas dans le mini système FORTH,
l'accès au registre du clavier se fait par l'intermédiaire des instructions
I2C_PCF8574_C@ et I2C_PCF8574_C! numéro 7.

adr_prg SYNC_CLAVIER -

Installation du pilote du clavier.
adr_prg est l'adresse du programme appelé avec le code ASCII de la touche activée.
Si adr_prg ou msq est nul, le pilote est retiré.

n SORT_CLAVIER -

Cette instruction n'esiste pas dans le Coeur FORTH.
Contrôle des DELs blanches, n est compris entre 0 et 7.

Utilisation

Le pilote n'étant pas intégré au noyau, il fau d'abord compiler le fichier source petit_clavier.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 pcf8574.txt puis compiler petit_clavier.txt.

Il faut créer le programme appelé automatiquement par le pilote en utilisant la syntaxe suivante:

: PROGRAMME

 INSTRUCTION1 INSTRUCTION2 ... INSTRUCTIONn
;

ATTENTION: le programme aura le code ASCII de la touche activée 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 SYNC_CLAVIER

Le pilote gère automatiquement l'installation d'une tâche qui balaye le clavier toutes les 20 ms. Dès qu'une touche est activée, le programme es exécuté avec son code ASCII. Si une touche es activée plus de 500 ms, le programme est automatiquemen relancé toutes les 100 ms tant que la touche es activée. Ceci es réalisé avec la priorité 49152.

Exemple

La séquence suivante permet d'afficher les codes ASCII du clavier vers le terminal FORTH:

FIND EMIT SYNC_CLAVIER

Pour retirer cette séquence, il suffit de faire:

0 SYNC_CLAVIER

Voici une vidéo: