Autres articles / Other articles

Communiquer avec Flash Forth

publication: 22 mai 2019 / mis à jour 11 juin 2019

Read this page in english

 


Le développement d'applications FORTH sur ARDUINO passe par un logiciel de type terminal. Nous avons choisi, pour les premiers pas, un terminal très simple: PuTTY. Mais vous êtes libres d'exploiter n'importe quel terminal de votre choix.

Installation de PuTTY pour Windows

Le programme PuTTY est disponible ici: putty.org.

Dans cette page, suivez le lien: "You can download PuTTY here".

Dans la page suivante, vous aurez le choix entre différentes versions:

choix de la version de PuTTY

Etant sous Windows 10, nous avons téléchargé la version 64 bits (putty-64bit-0.71-installer.msi).

Une fois téléchargé, lancez cette application en toute confiance.

démarrage installtion de PuTTY

Menez l'installation à son terme.

Paramétrage de PuTTY

Une fois installé, lancez PuTTY. Vous devez voir ceci:

configuration puTTY

Nous allons créer une session personnalisée permettant de communiquer avec la carte ARDUINO MEGA 2560 qui utilise maintenant le langage FORTH.

On sélectionne le port COM7 pour notre cas. Cette valeur peut être différente sur votre PC. Vous trouverez le port de communication utilisé par la carte ARDUINO en ouvrant périphériques sous Windows:

recherche du port COM utilisé par la carte ARDUINO

On sélectionne la vitesse de communication à 38400 bps.

Enfin, on sélectionne Default Settings et on clique sur Save. Cette sauvegarde vous permettra de retrouver les paramétrages de PuTTY à la prochaine session terminal.

Utilisation du terminal PuTTY

On lance maintenant le terminal en cliquant sur Open en bas de PuTTY.

Si tout se passe bien, vous devez voir ceci:

écran de démarrage de Flash Forth

FORTH est opérationnel!

Nous allons vérifier que tout fonctionne bien en exécutant notre premier mot: words.

Ceci affiche le contenu du dictionnaire FORTH:

p2+ pc@ @p hi d. ud. d> d< d= d0< d0= dinvert d2* d2/ d- d+ dabs ?dnegate dnegate  
s>d rdrop endit next for in, inline repeat while again until begin then else if  
zfl pfl xa> >xa x>r dump .s words >pr .id ms ticks r0 s0 latest state bl 2- [']  
-@ ; :noname : ] [ does> postpone create cr [char] ihere  char ' lit abort"  
?abort ?abort? abort prompt quit true false .st inlined immediate shb interpret  
'source >in tiu tib ti# number? >number ud/mod ud* sign? digit? find immed? (f)  
c>n n>c @+ c@+ place cmove word parse /string source user base pad hp task  
ulink rsave bin hex decimal . u.r u. sign #> #s # digit <# hold up min max ?negate  
tuck nip / u*/mod u/ * u/mod um/mod um* 'key? 'key 'emit p++ p+ pc! p! p@ r>p  
!p>r !p u> u< > < = 0< 0= <> within +! 2/ 2* >body 2+ 1- 1+ negate invert xor or  
and - m+ + abs dup r@ r> >r rot over swap drop allot ." ," s" type accept 1 umax  
umin spaces space 2swap 2dup 2drop 2! 2@ cf, chars char+ cells cell+ aligned align  
cell c, , here dp ram eeprom flash >< rp@ sp@ 2constant constant 2variable variable  
@ex execute key? key emit Fcy mtst scan skip n= rshift lshift mclr mset ic,  
i, operator iflush cwd wd- wd+ pause turnkey to is defer value fl+ fl- c! c@ @ x!  
x@ a> ! >a literal int! ;i di ei ver warm empty rx1? rx1 tx1 rx0? rx0 tx0 load-  
load+ busy idle exit 

Notre première définition

Si le terminal PuTTY (ou tout terminal de votre choix) communique parfaitement avec votre carte ARDUINO, vous pouvez maintenant créer de nouveaux mots. En FORTH, un mot est l'équivalent en langage C d'une fonction. Notre premier mot bonjour:

: bonjour ( --) 
    ." Bonjour tout le monde" cr 
    ." Bienvenue dans mon application" cr ; 

Vous pouvez taper cet exemple depuis le clavier, ou faire un copié/collé dans le terminal. Sous Windows, c'est l'appui sur le bouton droit de la souris qui va coller le texte dans le terminal.

attention à la casse des caractères

La version FORTH Flash Forth pour ARDUINO est sensible à la casse. En clair, si un mot est disponible ou compilé en caractères minuscules, il devra être utilisé avec ces mêmes caractères minuscules.

Appuyez ensuite une ou deux fois sur Enter au clavier et tapez bonjour pour exécuter le code compilé. Affichage:

compilation et exécution de bonjour

Voilà! Vous venez de compiler votre premier mot en FORTH, puis de l'exécuter!

Le même programme en langage C aurait nécessité une compilation sur PC, puis téléversement vers l'Arduino. Ici, certes, notre premier mot bonjour est très simple.

Mais dès que les programmes deviennent plus complexes, ce sera d'incessantes compilations et téléversements nécessaires pour la phase de mise au point.

Tandis que FORTH embarque l'interpréteur et le compilateur dans la carte ARDUINO. Cette intercativité et cette souplesse seront un atout majour pour mettre au point des mots complexes.

Revenons à notre nouveau mot bonjour. Il fait maintenant partie du dictionnaire FORTH comme tous les autres mots déjà définis. Avec FORTH, il n'y a pas le langage et l'application. Votre application FORTH devient une extension du langage FORTH. Pour bien comprendre ceci, tapons au clavier le mot words qui affiche le contenu du dictionnaire. Ici les 3 dernières lignes qui s'affichent suite à l'exécution de words:

 x! x@ a> ! >a literal int! ;i di ei ver warm empty rx1? rx1 tx1 rx0? rx0 tx0  
 load- load+ busy idle exit 
bonjour marker  ok<#,ram> 

On y voit notre mot bonjour.

Débranchons la carte ARDUINO et fermons le terminal PuTTY.

Rebranchons la carte ARDUINO et relançons le terminal PuTTY. Tapons à nouveau words. Le mot bonjour précédement compilé est toujours dans le dictionnaire!

Et pour l'exécuter, il suffit de taper à nouveau bonjour.

Oui. Mais on veut passer à des applications plus sérieuses et ne pas s'encombrer avec ce mot bonjour. C'est très simple, on tape empty warm et le mot bonjour aura disparu du dictionnaire et l'espace mémoire pris par ce mot récupéré et donc disponible pour d'autres nouveaux mots.