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:
