Constitué d’une liste de possibilités qui presque toutes constituent des entités de valeur OUI ou NON qui sont alors actives ou suspendues. Sur un RESET par défaut la combinatoire des options correspond à celle du mode « Aveugle » pour générer l’exécution la plus rapide possible. Toutefois, comme dans cet exercice nous allons activer le Menu des OPTIONS alors qu’un programme a été exécuté, certains de ces choix sont restés mémorisés.
NOTE : Conformément au document papier un grand nombre de commandes sont coloriées en rouge ou en orange. Sur cette version mise en ligne la différence de ces deux couleurs n’est pas très marquée surtout sur des caractères isolés. Donc y faire attention.
MANIPULATIONS :
1) Frapper « o » au clavier pour activer le mode OPTIONS qui commence par afficher son menu.
Plusieurs types d’options sont présents dans cette longue liste de possibilités. Comme c’est le cas pour le Menu de BASE, la directive « ? » (Ou la virgule.) en 1 ont pour effet d’afficher dans la fenêtre du Moniteur le Menu des OPTIONS. La commande « q » fait Quitter ce mode et revenir au Menu de BASE. Toutes les options mises en évidence en rouge pastel en 2 concernent la façon dont on peut gérer le déroulement d’un algorithme. En pastel bleu en 3 sont regroupées trois options très utiles quand on désire Écrire ou déverminer un nouveau programme.
À titre de complément, noter que dans tous les menus, qu’ils soient de simples rappels sur une ligne ou dans des zones encadrées, sont listés par ordre alphabétique des commandes utilisées. Par ailleurs, en standard dans chaque menu la virgule ou le « ? » servent à réafficher le menu du mode en cours. Donc si à un moment quelconque vous êtres perdu, y compris durant l’exécution d’un programme, ayez le réflexe « virgule ». Comme c’est précisé sur la Fig.16 les deux commandes de la zone 5 ne concerne que les habitués du langage binaire. Vous pouvez naturellement les invoquer, elles ne font que lister à l’écran sans rien changer au contexte, par curiosité sans plus.
La commande « c » dans la zone verte 4 permet de charger automatiquement un contexte lors d’un RESET. C’est très commode quand on développe un algorithme et que l’on a modifié trop de lignes avec un doute sur leur pertinence et surtout très avantageux quand on pense travailler plusieurs jours sur un algorithme, ou dans la journée en cours, et avoir à le modifier un grand nombre de fois. Le recharger rapidement avec la configuration BARILLET qui lui convient sur un simple RESET s’avère très convivial.
– Comme tu y vas Nulentout, mais elle s’use l’EEPROM ?
– Oui Dudule, chaque fois que l’on écrit dans une cellule, elle se dégrade un tout petit peu.
– Mais alors, va être rapidos H.S. le Microcontrôleur trucmachin ?
– Rapidement, pas vraiment. L’EEPROM est comme une mémoire S.D. Elle est certifiée pour une infinité de LECTURES mais limitée à environ 100000 écritures. Donc quand tu auras sauvegardé 100000 fois, changé l’option 100000 fois, il est possible que tu devras envisager de changer la petite carte NANO. Ceci dit, 100000 fois des écritures en EEPROM, toi aussi tu commencera à avoisiner sérieusement ta date de péremption !
MANIPULATIONS (Suite) :
2) Dans le Menu des OPTIONS, frapper la commande « r » se contente de lister l’état actuel de toutes les options. Notons au passage que si l’on frappe « ? » il y a listage du Menu des OPTIONS, suivi de l’état de ces dernières comme si l’on avait aussi ajouté l’appel à « r« . Le plus simple consiste à effectuer quelques petits exercices :
3) Proposer « r » puis valider. La liste de la Fig.17 est affichée, dans laquelle on retrouve mis en évidence en rouge pastel les options qui ont été imposées durant le RUN et qui sont restées mémorisées.
En bleu pastel on observe les items qui n’ont pas été encore modifiés. (Des options par défaut.)
4) Commande « q » en 1 de la Fig.16 pour revenir au Menu de BASE.
5) Activer derechef le programme avec « r« . Commande « t » pour revenir à une cadence rapide. Puis frappez « p » pour valider à nouveau le mode PAS à PAS et enfin « q » pour quitter.
6) Consigne « o » suivi de « r » pour faire lister l’état des options.
On peut alors vérifier que l’option PAS à PAS est bien restée à OUI et que le Temps Machine Réel respecté a été mémorisé à NON. Conclusion : Les options imposées durant l’exécution d’un algorithme restent mémorisées. Tout au moins tant que l’on ne coupe pas l’énergie, car au RESET toutes les options relatives au mode RUN sont par défaut initialisées en configuration aveugle :
7) Frappez « a » et valider, puis confirmer par « o » votre intention de passer en mode aveugle. On peut observer sur la Fig.18 que les items surlignés en rouge sont tous forcés à NON, car ce sont ces options qui ont pour effet de ralentir le programme. La commande « r » n’est pas dans la liste des OPTIONS pour simplifier le logiciel et éviter d’encombrer inutilement les menus. Elle agit uniquement durant le mode RUN et est systématiquement forcée à NON au début d’une exécution de programme. En revanche, on constate que l’option de l’affichage graphique n’est pas changée par la commande « a« . C’est normal pour deux raisons : D’une part cette option n’interfère pas sur la rapidité d’exécution. Soit le barillet est en graphique, soit il est en « binaire ». Dans les deux cas sa durée d’affichage sera identique, qu’il soit visualisé ou non. D’autres part on peut désirer rester dans ce mode quelles que soient les autres options, d’où cet invariant.
8) Faire un RESET, puis « o » suivi de « r« . L’initialisation par défaut des OPTIONS est identique à celle de la commande « a » mis à part le fait que « Graphique » est forcé à NON.
9) Commande « p » pour valider le mode PAS à PAS. On constate que pour pouvoir vérifier l’état actuel des OPTIONS, quand on propose une consigne, sa réalisation est suivie de l’affichage de l’état actuel des possibilités. Surtout, on constate que valider le PAS à PAS . impose implicitement la validation de l’affichage Ligne à ligne.
10) Commande « s » et valider pour activer l’option Surveille. Confirmer ce choix avec « o« .
11) Au diable l’avarice. Par exemple proposez 12345. Lister à chaque cycle ainsi que PAS à PAS sont forcés à NON. On va voir ce que ça donne : Commande « q » pour revenir au MENU de BASE.
12) Frappez « c » et activez l’algorithme de l’emplacement n°1. Soumettre « r » pour activer le déroulement du programme. En approximativement deux secondes les 12345 instructions ont été exécutées et une PAUSE visualise l’état de la machine virtuelle. Chaque validation « à vide » réalise 12345 instruction de plus et ainsi de suite.
Rien n’empêche durant le déroulement rapide qui allume la LED bleue, de frapper l’une des options du mode RUN comme l, p, g etc. L et G ne modifient que l’affichage, mais P invalide la Surveillance, car c’est une option avec interaction. Avant d’analyser plus finement cette notion d’interactions, expérimentons une autre possibilité pour sortir d’un programme. Sur un algorithme sans Fin comme celui en cours d’expérimentation, ou un programme qui impose un très grand nombre de cycles d’HORLOGE, on peut décider du nombre de cycles à réaliser, puis de revenir au MENU de BASE. Manipulations pour appréhender cette possibilité :
13) Commande « q » pour sortir de l’exécution, puis « o » pour revenir au Menu des OPTIONS.
– Hé, Nulentout, t’as oublié de préciser que dans le menu c’est par ordre alphabétique !
– Pas la peine Dudule, les lecteurs l’ont tous déjà remarqué. (Mauvaise foi de Nulentout…)
14) Consigne « b » pour imposer une Borne au déroulement de l’algorithme. Avec exagération on impose la valeur de 54321 instructions. (Comme le processeur va être débridé, il ne faudra qu’environ 12 secondes pour les réaliser !) « q » puis « r » pour relancer le programme. Éventuellement « l » pour annuler le Listage qui était resté actif. Et dans un temps nettement inférieur à celui que l’on aurait mis sur la vraie machine, le verdict tombe et l’on retrouve le logiciel en attente après avoir listé l’état du système suite à ces 54321 instructions réalisées. Commande « o« .
15) Frapper « r » et observer que l’écran affiche puis consignez à nouveau « b« . Pour invalider cette option il faut indiquer la valeur « 1 » et non « 0 » qui semblerait plus logique mais qui n’est pas accepté pour des raisons informatique. Maintenant le programme affiche confirmant l’annulation.
Nous en savons assez pour pouvoir faire un bilan relatif aux OPTIONS du mode RUN et surtout analyser plus en détails les interactions qui génèrent des interférences entre ces diverses possibilités. Le tableau proposé en Fig.19 donnée ci-dessous résume les diverses configurations combinatoires envisageables en fonction des actions diverses effectuées par l’opérateur. (Noter que contrairement à l’option « A » qui valide l’initialisation globale en mode Aveugle, la combinatoire créée par le RESET est indépendante ce dernier. C’est une configuration par défaut.)
16) Tableau sous les yeux, proposer à votre guise et dans un ordre quelconque ces diverses options pour vérifier les interactions qui se produisent et vous imprégner de leur logique.
Les OPTIONS spécifiques.
Concrètement ce sont plus des fonctions réalisant un traitement particulier que de simples bascules de type OUI / NON que l’on prépositionne à notre guise. Par exemple nous avons la directive 4 de la Fig.16 qui avec la commande « i » permet de saturer en « un seul clic » la totalité du BARILLET avec des blancs, des « 0 » ou des « 1« . Le mieux est encore de l’expérimenter :
MANIPULATIONS :
1) Faire un RESET pour revenir sur une configuration « standard ». Puis « o » suivi de « i« .
2) Frapper « 1 » et valider. Puis respectivement « q » suivi de « a » pour visualiser le BARILLET. La visualisation de l’état initial du carrousel confirme effectivement l’opération.
3) Pour se convaincre de la pertinence des informations de l’encadré bleu de la Fig.20, nous allons volontairement commettre une erreur. Consignes « o » suivi de « i » mais au lieu de proposer un zéro, incident qui m’arrive assez souvent, on frappe la lettre « o« . Déjà nous n’avons pas la confirmation textuelle. On ne le remarque pas, car avec l’habitude sauf exception on ne regarde plus vraiment l’écran avec attention. Les consignes « q » suivi de « a » montrent clairement que le barillet est resté inchangé. Donc à l’avenir il faudra ce méfier de « o » et de « 0 » qui dans la fenêtre contextuelle du Moniteur de l’IDE ont des apparences très similaires.
4) À titre d’exercice, remplir le BARILLET avec des « 0« , revenir au MENU de BASE, puis faire de même avec des « B« . (Des espaces.)
5) Revenir au MENU de BASE et recharger la configuration du BARILLET avec « t« . Puis en expert de la fonction « i » saturer le plateau avec des « 0« . Enfin « q » suivi de « a » pour voir le résultat.
Le barillet a bien été rempli intégralement par des « 0« , par contre, la tête de L/E et l’Origine ont conservé leurs positions respectives. Du coup, si on rempli avec des « B« , (Manipulation que vous devez faire immédiatement !) on pense retrouver la configuration d’un RESET, saut que les deux éléments cités restent dans leurs positions. Cette fonction étant bien comprise, on passe à une autre :
L’Optionc « c » en 4 de la Fig.16 est bien du type bascule OUI / NON mais n’impose un traitement particulier que lorsque se produit un RESET, qu’il soit issu de l’opérateur ou à la mise sous tension. Pour illustrer son effet, on va supposer que vous désiriez faire des présentations de cette petite machine de Turing à des amis, et que dans ce but vous allez systématiquement commencer par le programme de circularisation des orbites préservé actuellement dans l’emplacement n°5 en mémoire non volatile EEPROM.
6) RESET par habitude, puis passage dans les OPTIONS avec « o« . Appel de la fonction en frappant ‘c‘ et valider. Vous noterez au passage que si vous avez activé cette option par erreur, toute valeur numérique supérieure à 15 engendrera la fuite. Frapper 77 par exemple pour tester. Comme prévu il ne se passe rien, donc la fuite est toujours possible.
7) Invoquer une deuxième fois ‘c‘ et valider. Remarquez au passage que l’Utilisation de l’EEPROM est affichée pour pouvoir vérifier que le programme n°55 dans les petites fiches est bien en emplacement 5. Indiquer cette référence 5. Pour cette manipulation répondez « n » pour le chargement d’une configuration de BARILLET. À partir d’ici, tout listage de l’état des différentes options commencera par « Sur RESET charge le PGM d’emplacement 5.« pour informer l’opérateur de cette action automatique.
8) RESET pour constater que sous le cadre du MENU de BASE est présente une information analogue. Commande « r » pour activer l’exécution.
– GLUPS mais il ne se passe rien !
– Si Dudule, la LED bleue est illuminée, l’ATmega328 tourne à fond de cale !
– Mais normalement l’orbite est circularisée en un rien de temps.
– Ben encore faut-il que la machine soit correctement configurée cher Dudule.
9) Caractère « l » suivi de « v » et enfin de « p » pour voir ce qui se passe.
Quand on laisse la validation activée en répétition sur le clavier, le film se déroule et l’on observe que :
• Le plateau tourne continuellement à gauche,
• La tête de lecture ne lit que des « B« , (C’était un tantinet prévisible !)
• La seule instruction « perforée » indique sur Tr01-B un mouvement à gauche.
Il est donc assez normal que nous soyons dans le cas d’un mouvement perpétuel. En réalité, ce déplacement à gauche est prévu jusqu’à trouver la donnée du petit axe qui devrait commencer par un « 1« . Comme il n’existe pas, le programme va continuer à chercher en vain …
Il faut au préalable imposer au barillet la configuration indiquée dans la mini-fiche.
Comme nous désirons avoir une machine directement utilisable sur RESET ou à la mise sous tension, il est bien plus convivial de charger une configuration de BARILLET associée au transfert d’un programme utilisateur à partir de la mémoire non volatile EEPROM :
10) RESET puis « o » suivi de « c« . Enfin on indique 5 suivi de « o » pour confirmer. L’affichage de l’état des options commence maintenant par :
11) Encore un RESET pour se rendre compte sur la Fig.21 que l’information initiale 1 est complétée par celle en 2, et surtout que l’on retrouve bien en 3 le carrousel tel qu’il avait été « cloné »
dans l’EEPROM lors d’une manipulation précédente. Commande « r« , cette fois le résultat est immédiat.
13) Pour les fanas du binaire, vous pouvez vous amuser avec « w » et comparer les trois dernières cellules de l’EEPROM avec la Fig.6 donnée en page 6 du tutoriel.
14) En vue de ne pas alourdir d’autres exercices qui vont suivre, revenons « à la normalité » en invalidant le chargement de programme sur RESET : « o« , « c« , 77 et éventuellement « q » suivi de « w« .
Lorsque l’on fait dérouler un algorithme, il est totalement normal et pratiquement systématique d’avoir des lignes perforées qui ne seront pas utilisées. C’est particulièrement vrai quand un programme présente deux options. Les instructions du choix non validé seront ignorées. Toutefois, j’ai prévu une analyse durant le RUN pour prévenir si un tel cas se produit. Par défaut cet avertissement est invalidé sur un RESET. Quand on a mis au point un algorithme, il me semble pourtant utile de valider cette option. On peut alors vérifier si c’est normal, ce qui éviterait de perforer pour rien des trous dans la grille de programme.
NOTE : Vous constaterez dans la pratique que passer son temps à faire un RESET n’est pas vraiment pertinent. Si on abuse dans ces exercices de cette facilité, c’est pour qu’à chaque manipulation le lecteur soit dans des conditions identiques à celle initiales lors de la rédaction du tutoriel.
15) RESET suivi de « o » puis de « n« . Suite à cette commande, l’état de l’option est devenu « Ignorer les lignes NON utilisées : NON » et chaque RUN sera analysé pour voir si toutes ses lignes d’instructions sont bien indexées au moins une fois. Pour tester ce type de vérification frapper « c » pour l’emplacement 5 et « t » pour avoir une machine initialisée. Puis « r » pour circulariser l’orbite lunaire. L’opérateur est informé, mais il est bien précisé que ne n’est qu’une REMARQUE. C’est à lui de vérifier si ce constat est normal et qu’il était prévisible. Noter au passage que si plusieurs lignes ne sont pas explorées, seule la première sera signalée.
ATTENTION : L’information « ATTENTION : L’instruction nn NON VIDE n’est pas utilisée. » n’est significative d’un illogisme potentiel dans l’algorithme que si le programme est entièrement exécuté. Si on sort prématurément avec « q » cette information n’est plus pertinente et il ne faut surtout pas en tenir compte et enlever la ligne dans l’algorithme.
16) Expérimentons une fonction qui par défaut est active. Dans le menu des options, proposer « f » en A et observez que maintenant en E l’option est suspendue, donc les programmes sans le « F » seront signalés. Chargez l’emplacement n°1 qui est dans ce cas. Le RUN provoque l’avertissement en C et il faut confirmer par « o » en D si on désire continuer. Quand on met au point un algorithme elle peut parfois s’avérer utile, mais en standard elle reste pénalisante.
Aussi, nous allons terminer cette analyse des possibilités du menu des OPTIONS par la fonction « E » qui change radicalement la morphologie de notre machine de Turing. C’est bien une option de type OUI / NON, mais elle produit un effet très important qui la classe à part des autres possibilités. En effet, si on valide cette option particulière, la Machine de Turing virtuelle passe de 11 TRANSITIONS possibles à 20 transitions. Ajouter 9 transitions de plus semble assez dérisoire. La matrice de 33 lignes devient une grille à 60 lignes. Ce n’est même pas le double. Pourtant ce « petit changement » augmente de façon COLOSSALE la combinatoire explosive du nombre d’algorithmes possibles. Cette fois c’est le nombre de grains de sable de la Terre auquel il faut ajouter tous ceux des autres planètes du système solaire ! C’est surtout pour nous la possibilité d’expérimenter des algorithmes bien plus riches que ceux possibles sur la machine matérielle. Comme il ne s’agit plus du tout d’une fille électronique du prototype, forcément certaines fonctionnalités ne seront plus possibles. Expérimentons le comportement de cette « super machine option plus » :
MANIPULATIONS :
17) Faire un RESET de plus. (Le petit bouton va finir par s’user prématurément !)
18) Lettre « o » pour activer le Menu des OPTIONS, puis « e » et confirmer par « o« . Tant que la configuration restera en mode « Machine Étendue », chaque fois que l’état des options sera affiché avec « r » par exemple, les items seront précédés de l’encadré colorié en rose pastel sur la Fig.23 qui résume les seules commandes « EEPROM » qui restent valides. En effet, il n’est plus question de déplacer des programmes par exemple car la modification du logiciel n’est plus possible à ce stade du développement par manque de place en mémoire dédiée dans l’ATmega328.
REMARQUE : La commande « u » reste utile car il est toujours possible de recharger un algorithme en vue de le compléter, ou d’ajouter un formatage sur un programme qui saturait les 11 transitions …
19) Commande « q » pour revenir au MENU de BASE. Caractère « , » pour un petit rappel des commandes. Aucun signe particulier des nouvelles caractéristiques de la machine.
20) Tentez successivement les commandes « d« , « g » et « p« . À chaque tentative un message d’alerte nous informe de l’impossibilité d’user de la commande et fournit un rappel des possibles.
21) Commande « c » pour charger un programme. Sa position en EEPROM n’est plus demandée et le logiciel prévient qu’il a chargé un programme ÉTENDU. Autre différence : Avec la commande « l » on constate que le Listage est beaucoup plus long puisqu’il comporte 60 lignes en mode étendu. (Nous verrons plus tard que « n » n’affiche plus la feuille perforée virtuelle.)
Les particularités du mode « Machine Étendue.
Mélanger en EEPROM des algorithmes « standards » à maximum 11 TRANSITIONS avec des programmes rédigés en mode Étendu n’est pas possible, car le développement était trop avancé au moment où cette option a été envisagée. Il ne restait absolument pas assez de place pour ajouter le code nécessaire. D’un autre coté, ne pas pouvoir sauvegarder ne serait-ce qu’un algorithme étendu générait une frustration. Aussi, un compromis a été implémenté. Toutefois, pour y arriver il a été obligatoire de « faire de la place ». C’est donc au détriment des affichages que l’espace vital a été dégagé. De ce fait, il est possible que certains affichages dont les copies d’écran figurent en amont dans ce tutoriel ne soient plus tout à fait conformes à ceux de la version actuelle. Surtout ne vous en étonnez pas et n’en tenez aucun compte.
(En particulier plusieurs textes « Configuration » ont été réduits à « Config. par exemple. »)
MANIPULATIONS :
1) Faire un RESET de plus pour « repartir de zéro ». Caractère « c » avec la référence 3 pour charger un programme « standard » initial à 11 transitions. Indiquer « l » pour vérifier que c’est le n°11.
2) « o » pour activer le Menu des OPTIONS, puis « e » que l’on confirme par « o« . La transformation est clairement précisée avec un BIP sonore. Enfin, imposer la directive « q » pour revenir au Menu de BASE.
3) Proposer le caractère « l » pour constater que l’on a bien un algorithme de 20 transitions, avec pour les onze premières celles de l’algorithme qui était déjà présent. La référence est bien le 254 qui est annoncé dans l’encadré précisant cette particularité en mode « Machine Étendue ».
4) Frapper « c » pour transférer un programme depuis l’EEPROM qui implicitement sera celui contenu dans les emplacements 14 et 15 quand on est en mode « Machine Étendue ».
5) Caractère « l« , on observe que les deux algorithmes qui étaient en 14 et 15 remplissent maintenant les 20 transitions, car Tr11 de l’emplacement 15 comportait des instructions sur ses 3 lignes.
6) On teste la commande « x » qui annonce clairement la référence 254 imposée par ce mode.
7) Enchaîner dans ce but « o« , « e« , « e« , « o« , « q« , et « l » pour vérifier la référence.
8) Le marqueur 254 étant effectif, consigne « s » pour sauvegarder en EEPROM. Comme l’opération va écraser les deux emplacements 14 et 15 il y a demande de confirmation. Accepter avec ‘o‘.
Comme on peut le voir sur la Fig.24 le listage du contenu de l’EEPROM précise maintenant que l’emplacement n°14 contient la référence 254 et que le n°15 est PGM Étendu.
9) Revenir dans les options avec « o« , puis frapper « c » pour prendre le gros programme en téléchargement automatique. Préciser l’emplacement 14 : Le logiciel accepte et prévient.
10) Faire un RESET pour le vérifier, puis annuler l’option « c » et annuler Machine ETENDUE. Dans le MENU de BASE on va restituer les deux références : Saisir « c, 14,x,12,s,14,o » pour charger 14, le référencer avec l’ancien 12, le sauvegarder à nouveau en 14. Comme ce n’est plus une référence 254, l’emplacement 15 retrouve immédiatement son ancienne référence.
La suite est ici.