Carrefour des nombreuses commandes de la machine, il peut à tout moment être réaffiché par la commande « ? ». Notez que toutes les commandes du MENU de base se font avec une seule touche. Toute saisie de longueur supérieure sera sanctionnée par un BIP sonore et affichera le texte « LGR > 1« . Dans la pratique un analyseur syntaxique surveille toutes vos saisies et détecte pratiquement toutes les erreurs que l’on peut commettre. J’imagine que vous avez fort envie de faire fonctionner un algorithme. Aussi on va commencer par passer en revue les commandes EEPROM.
Exploitation de la mémoire non volatile EEPROM.
Ordonnées par ordre alphabétique, la première que nous allons utiliser est « u » qui affiche comme en Fig.4 le contenu actuel de cette mémoire EEPROM. Les 1024 OCTETS de cette dernière autorisent le stockage de 15 programmes. Chaque emplacement peut contenir au choix un programme ou une Configuration de BARILLET. Une seule de ces configurations sera possible, et uniquement s’il reste un emplacement libre comme ici le numéro 10 par exemple lorsque l’on utilise la commande de sauvegarde « B« . Les trois symboles « ### » précisent la disponibilité de l’emplacement. Si la ligne contient un programme, le nombre à trois chiffre constitue une simple Référence pour l’opérateur, qui en toute logique doit indiquer le n° de l’algorithme porté sur les petites fiches de programme. Par exemple l’emplacement n°4 contient le programme n°54 sur nos fiches, c’est à dire le petit programme personnel qui maximise le nombre de cycles d’HORLOGE, sorte de « Castor Affairé ». Pour sauvegarder un programme que nous avons saisi avec les commandes de la zone 4 en Fig.3 il faudra utiliser la commande « s » de la zone 8 qui nous demandera dans quel emplacement on désire stocker cet algorithme. Si on tente de sauvegarder un programme et qu’il n’y en a pas eu de rédigé ou de transféré depuis l’EEPROM, un message d’erreur sera généré assorti d’un BIP sonore. Quand on validera la commande « s« , la première action du programme consiste à lister le contenu de l’EEPROM comme si nous avions au préalable frappé « u« . Ainsi on peut voir dans l’espace mémoire l’occupation actuelle et éventuellement choisir « d’écraser » un emplacement déjà occupé. Toutefois, nous ne pourrons pas provoquer une perte du contenu de cet emplacement par erreur, car le logiciel nous informe que l’emplacement n’est pas vide et demande confirmation. Réciproquement, la commande « c » permet de recharger le programme contenu dans un emplacement. ATTENTION, si on valide après avoir indiqué un emplacement entre 1 et 15 il y a transfert inconditionnel et si un programme était présent en mémoire vive, il sera définitivement perdu. Comme précisé sur le texte d’invite, si on indique un emplacement > 15 c’est l’équivalent du classique Esc annulant l’ordre. Si vous tentez de charger comme programme un emplacement qui contient une configuration de BARILLET, un message d’erreur sera généré et la commande ignorée.
MANIPULATIONS :
1) Faire un RESET pour débuter sur une configuration « vierge de toute action préalable ».
Pour faire un RESET on peut cliquer sur le petit bouton de la carte Arduino, ou fermer la fenêtre de dialogue et la rouvrir en cliquant en 6 de la Fig.2 donnée en page 2. .
2) Frapper la commande « L » pour lister le programme actuellement en mémoire. La commande se solde par un message d’erreur car il n’y a actuellement rien à lister en mémoire dédiée.
3) Commande « c » suivie de 7 : Message d’erreur car c’est une configuration de BARILLET.
4) Consigne « c » suivie de 10 : Message d’erreur car l’emplacement est vide.
(Décidément, vous faites erreur sur erreur ! faites un effort nom d’une pipe !)
5) Encore l’ordre « c » suivie de 12 par exemple.
Il y a retour au menu de base sans autre forme de procès. Si la frappe d’une commande ne fait que retourner le texte d’invite Retour au MENU de BASE suivi de Commande -> c’est que la commande a été correctement exécutée.
MANIPULATIONS (Suite) :
6) Pour vérifier que le programme souhaité à bien été transféré de l’EEPROM vers la mémoire vive du microcontrôleur, frappons « l » (Lettre minuscule de L) pour s’assurer que le programme actuel est bien celui que l’on désirait. On obtient le résultat de la Fig.24 commentée en page 19 qui prouve dans le titre encadré et colorié en rose que c’est bien celui que nous avions désigné comme étant le n°52.
7) Maintenant que l’on a un programme en mémoire dédiée, on peut le sauvegarder en 10 avec « s« . Comme l’emplacement est libre, pas de compte rendu mis à part le listage de type « u ».
8) Avec « c » transférer l’emplacement n°8. Calme absolu, donc l’opération a été correctement exécutée. Du reste avec « l » on vérifie que c’est bien le programme n°52 qui a remplacé le 28 et sans préavis. (Si on avait frappé un algorithme au clavier il serait définitivement perdu !)
9) Avec « s » sauvegarder en 10. Comme l’emplacement n’est pas libre il faut confirmer … et le listage montre qu’il n’y a plus d’emplacement libre et que le PGM n°52 est en doublon.
10) Donc avec la commande « g » on libère cet emplacement. (Sans demande de confirmation.)
11) Toujours avec « g » proposez l’emplacement 7. Persistez. (Rassurez-vous, c’est une configuration neutre que l’on pourra très facilement retrouver par un RESET.)
12) Avec « b » sauvegarder la configuration actuelle. Il faut confirmer. Le listage de type « U » nous montre que c’est le premier emplacement libre qui a été utilisé.
13) Combler le dernier emplacement vide avec « s » suivi de 10.
14) Avec « b » sauvegarder à nouveau « le barillet ». Pas de BIP sonore et l’affichage précise les cellules utilisées en EEPROM. Quand on sauvegarde « un BARILLET », le programme se contente de remplacer celui qui éventuellement serait déjà présent en mémoire non volatile EEPROM.
15) « g » avec 7, persister, puis « s » associé à 7, il n’y a plus de place disponible. Frapper « b« . Après confirmation, comme il n’y a plus de place le programme nous le fait clairement savoir.
16) Retrouver l’occupation EEPROM du début avec en 7 la configuration du BARILLET et en 10 un emplacement libre. Cette fois c’est à vous de trouver comme des grands les bonnes commandes et retrouver l’occupation EEPROM montrée sur la Fig.4 de la page 4. Et pour finir « c » avec l’emplacement n°8.
Nous allons maintenant utiliser la commande « d » qui présente un risque potentiel de perte de l’un des algorithmes préservé en EEPROM. Pour éviter ce risque, on va commencer par créer en B un « doublon » du programme A que l’on pourra se permettre de « détruire » sans regret. Donc on commence par « s » suivi de 10, et l’EEPROM est de nouveau saturée. Puis on va utiliser la commande « d » qui permet de déplacer un algorithme, mais qui « écrase » celui qui pourrait se trouver dans l’emplacement cible.
17) Commencer par « d » avec 13 comme algorithme à déplacer, et indiquer 10 comme emplacement d’arrivée en B. La commande est réalisée et le résultat listé montre que 028 a été perdu et que l’emplacement de l’original C est maintenant effacé et redevient libre. (Si par une fausse manipulation vous écrasez un programme, ce n’est pas la peine de vous rouler par terre. Enregistrer un algorithme prend environ cinq minutes, ce n’est pas si tragique que ça …)
18) La commande « p » constitue une armes de destruction massive. Elle a pour effet d’effacer entièrement le contenu de l’EEPROM. C’est la raison pour laquelle il faut confirmer la confirmation. Allez, on va titiller le destin : Commande « p » suivie de « o » pour oui. OUFFFFfffffffff, le programme insiste et redemande confirmation. Je suggère à ce stade de frapper n’importe quelle touche du clavier SAUF LE « o » ! (Si vraiment vous insistez, ce n’est pas mortel, mais il faut alors téléverser le programme d’initialisation de l’EEPROM suivi du logiciel d’émulation de la machine de Turing. Autant éviter toutes ces manipulations à cause d’un petit clic qui fait un grand choc !)
Listage du contenu de l’EEPROM. (Si vous n’avez pas le temps : Sautez ce chapitre.)
C’est bien parce qu’il y avait largement assez de place dans la mémoire de programme, que je me suis autorisé à laisser « trainer » dans le logiciel cet outil qui n’est vraiment utile que pour les « affolés de la programmation ». Du reste dans le menu de base il est bien stipulé que c’est un outil qui ne concerne vraiment que les programmeurs. Autant, maintenant que le programme fonctionne correctement, et tout particulièrement avec les fonctions relatives à l’EEPROM il est devenu un luxe non indispensable, autant lors du développement il a dévoilé bien des erreurs de logique. Ceci étant précisé, comme il ne fait que lister le contenu de l’EEPROM en HEXADÉCIMAL, autant jeter un petit regard en passant et scruter l’intimité de la mémoire non volatile.
MANIPULATIONS :
1) Étant dans le Menu de base, proposez la commande « y » pour compléter de cet exercice de base. (Bande de Dudules, ce caractère n’est pas dans la liste ! Un chtit effort siouplé …)
2) Commande « w« . OUPS … mais ça défile à donf le binaire ! Les 1024 octets préservés en EEPROM sont listés par ce que les programmeurs en « Assembleur » nommaient une page mémoire, c’est à dire un regroupement de 256 Octets. Sur une ligne sont listés 16 Octets en HEXADÉCIMAL. Comme la mémoire non volatile fait 1024 cellules, il y a donc quatre pages mémoire.
Lorsque la mémoire EEPROM est vierge et n’a jamais été modifiée, elle ne contient que des « 1 » binaires, c’est à dire que les Octets en décimal font 255 qui en Hexadécimal se représente avec FF. Chaque enregistrement de programme consomme 67 octets et commence par son numéro représentatif. Les 15 emplacements consomment donc 1005 Octets et sont logés à partir de l’adresse 0000. C’est dans les 19 octets qui restent que sont inscrites les informations qui permettent de charger une configuration du Barillet ou (ET) un programme lors du RESET du microcontrôleur. Ces possibilités se programment dans le menu des OPTIONS dont il sera question plus avant. Enfin, dans le cadre violet je n’ai pas résisté à la tentation d’inscrire manuellement ma signature, c’est à dire l’indicatif qui m’était attribué quand j’étais radioamateur. (D’où l’algorithme n°15.)
La suite est ici.