17) Un choix que la morale ne va pas cautionner !

Sachant que l’on va disposer de mémoire à revendre et qu’il y aura largement de la place pour intégrer les routines se sortie des enregistrements sur la ligne série du Moniteur, j’ai décidé d’ajouter à l’actuel logiciel P15 un menu déclenché sur RESET si l’une des touches est cliquée durant le redémarrage du programme. Cette décision semble un peu prématurée, et il serait plus pertinent d’avancer sur des fonctions plus importantes. Elle est toutefois motivée par le fait que je désire dès ce stade incorporer un outil qui permet à tout moment de lister le contenu de l’EEPROM. C’est une facilité qui ne concerne que les programmeurs, mais autant en profiter durant le reste du développement si le besoin s’en fait sentir. C’est une aide incontestable qui permet de voir exactement le contenu de la mémoire non volatile et de tirer des conclusions sur le comportement du programme quand il a été modifié. Le MENU du RESET pourra prévoir des fonctions vraiment secondaires sans pour autant pénaliser la convivialité d’utilisation de l’appareil puisque ces dernières n’encombrent absolument pas le MENU de BASE. Prévoir à ce stade du « luxe » est assez scandaleux, mais comme la morale reste muette et ne peut me raisonner, je vais lâchement en profiter. À nous la débauche de gadgets … tout en optimisant à outrance le code ça va sans dire !

Un Menu du RESET bien nourri.

L’actuelle page écran de la Fig.119 obtenue sur RESET avec l’un des B.P. clavier cliqué est déjà prévu avec quatre fonctions. Toutefois, il n’est pas du tout prouvé qu’il ne soit par la suite complété par de « nouvelles idées futiles ». Aussi, actuellement il ignore clic court ou clic long sauf pour la touche DROITE qui permet de sortir et de faire transiter le programme vers le Menu de BASE. L’ouverture de ce sous-menu allume la LED tricolore en vert. Si on clique sur la touche du BAS durant environ une seconde la LED triple passe en couleur cyan et OLED affiche « Listage EEPROM« . Puis il y a retour au MENU du RESET avec la couleur verte. Pour bénéficier de cette fonction il importe au préalable d’activer le Moniteur de l’IDE avec tout en maintenant actif l’un des boutons poussoir du clavier. Si au préalable la vitesse d’échange des données était bien à 57600baud la fenêtre dédiée affiche les données de la Fig.105 complétée dans la zone violette des nouveaux textes et surtout en 14 d’un octet qui vaut soit 00 pour false, soit 01 pour true. C’est un booléen qui est mis à jour lorsque l’on ouvre le sous-menu de la Fig.120 avec un clic sur GAUCHE. Par défaut lorsque l’on initialise l’EEPROM avec P00 l’octet est forcé à false. Mais par la suite les actions sur 2 et 3 de la Fig.120 modifieront l’état de la cellule d’adresse 0538. À chaque redémarrage, la procédure void setup() se termine par l’examen de ce booléen. S’il est à false le programme enchaîne directement sur void loop(). Si c’est 01 qui est inscrit dans l’EEPROM l’écran OLED affiche la version du logiciel de la Fig.121 et attend que l’on clique sur une touche pour passer la main à la routine void loop(). Pas de quoi bouleverser notre émotionnel ! Toutefois, il est à ce stade du développement assez probable qu’il sera possible d’agrémenter cette page d’un petit LOGO. Ce sera radical pour gloutonner des octets et améliorer la rentabilité … encore qu’avec les « délires » ajoutés au démonstrateur P15 on commence à être pas mal sur ce critère. Dans cette situation la LED triple s’illumine en « orange » incitant l’opérateur à cliquer sur le clavier ce qui ramène à la configuration banale du MENU de BASE. L’information située dans encadré jaune en 1 de la Fig.120 dont la valeur numérique va probablement diminuer pour les programmes futur sera commenté plus avant dans le didacticiel.

Observons au passage que le démonstrateur P16_Avec_Menu_RESET.ino donne un rappel de la vitesse de transmission qui doit être imposée au Moniteur de l‘IDE pour que les affichages de la Fig.105 soient corrects. Normalement il n’y a pas de raison de modifier ce paramètre. Toutefois, si vous observez à l’écran un listage avec des décalages de caractères, il sera alors impératif de diminuer cette cadence. Initialement elle était de 115200baud, mais parfois il y avait des « petits loupés ». Avec 57600baud le rafraichissement écran reste très rapide et le listage est parfait.

Un petit correctif.

C’est avec la touche HAUT durant le MENU du RESET que l’on va remarquer une petite correction qui concerne la fonction invoquée par le B.P. HAUT. Vous ne l’avez peut être pas remarqué, mais avant P16_Avec_Menu_RESET.ino quand on faisait afficher les durées d’échantillonnage, sur la Fig.80 en A de la page 39 les durées indiquées étaient nulles ce qui manifestement n’est pas crédible. Ayant largement de la place disponible pour loger des octets de code, comme le confirme la Fig.122 maintenant ce, petit détail est totalement corrigé.

Conseil d’administration.

Encore un bilan financier en Fig.123 pour évaluer la rentabilité de P16 en termes « d’occupation des sols ». Si utilisant le MENU du RESET avec la commande du B.P. BAS vous provoquez un listage du contenu de l’EEPROM, vous pouvez vérifier qu’il ne reste plus que 41 emplacements de disponibles pour loger du texte. Autant dire que la « rentabilité » d’utilisation de la mémoire non volatile va friser l’idéal. Pour les fonctions futures on risque de rapidement saturer cette ressource de l’ATmega328. Ensuite s’il y a de nouveaux bavardages on sera obligé de loger les textes dans le programme, avec diminution de l’espace dynamique ce qui est moins intéressant. (On augmente le risque de collision de PILE … voir le chapitre suivant.) Donc : Affaire à suivre ! En revanche, la zone occupée par ces changements pourtant boulimiques en octet reste désespérément « faible » et l’augmentation de température en rouge n’est pas démentielle. Nous allons vraiment avoir du mal à saturer la zone dédiée au programme. Il faut trouver des idées …

Paramétrer en tête de programme.

Dans le démonstrateur P16, par exemple dans la procédure Affiche_la_version_du_logiciel() on doit modifier la date de validation du logiciel d’exploitation, ou dans cette même routine modifier l’adresse en EEPROM où commencent les données à lister en hexadécimal. Tout au long du développement il peut s’avérer d’avoir ainsi à modifier parfois des constantes ou de nombreux paramètres et on doit pouvoir facilement repérer les lignes d’instruction concernées. Il suffit de les faire terminer par des remarque de type //@@@@@@@@@@@@@. Toutefois, quand on est amené à corriger des valeurs dans un listage bien plus « étalé » que celui du démonstrateur P16, il est fortement recommandé de définir tous les paramètres d’initialisation en tête de programme et si possible de les regrouper. Ainsi, on a une énumération compacte et l’on ne risque pas d’en oublier, et surtout c’est bien plus rapide que d’avoir à chercher de multiples emplacements dans un long listage. Cette façon de faire concerne directement la « programmation avec méthode ». Aussi, dans le programme de développement P16_Avec_Menu_RESET.ino la date de version est définie en tête de listage par la constantes version et le taux de transfert sur la ligne de dialogue USB est défini par la constante Vitesse_USB. Du reste, comme on

peut l’observer sur la Fig.124 on a regroupé quatre paramètres sous forme de déclarations #define. Dans ces dernière il est possible de définir des chaînes de caractères, des entiers, des réels, des booléens etc. Par exemple la valeur 50 pour Nb_tests_antirebonds a été optimisée expérimentalement en fonction de la qualité des B.P. utilisés.

La suite est ici.