21) Gestion comptable des programmes.

Observant un tant soi peu le démonstrateur qui précède, on remarque que la zone pour loger du programme est déjà consommée à 64% alors que le LASER n’a pas encore émis la moindre lumière et que les moteurs n’ont fait que tourner. On imagine assez facilement que générer des déplacements précis et en « diagonale » va engloutir des octets avec boulimie. Par ailleurs, pour le moment rien n’est vraiment mis en place pour dialoguer avec l’utilisateur. Hors, il faudra inévitablement afficher des textes sur OLED. Tout programmeur qui bénéficie d’un peu d’expérience avec Arduino s’est rendu rapidement compte que les procédures les plus goinfres en ressource de l’ATmega328 sont celles qui affichent du texte. Outre la procédure « bavarde », immédiatement la zone pour loger du programme se voit diminuée d’un nombre d’OCTETs égal au nombre de caractères dans la chaîne à afficher. Et rebelote dans la mémoire dynamique. La façon la plus radicale de faire « un plan social » consiste à virer tout le personnel texte de l’entreprise ! Rassurez-vous, pas un seul caractère ne va perdre sa place, il va simplement changer de résidence. L’EEPROM du microcontrôleur est idéale pour y loger un maximum de textes affichés par le programme d’exploitation. Cette zone de stockage non volatile ne fait que 1024 OCTETs. Il se trouve que le programme de la pyrograveuse ne sauvegarde pas des variables à préserver en cas de coupure inopinée d’alimentation. Aussi, l’intégralité de l’EEPROM est à notre disposition pour y loger tous les textes dont nous aurons besoin pour les divers démonstrateurs et surtout pour la machine future. Avec ce démonstrateur on franchit une étape particulièrement importante, car c’est un « incontournable » pour boucler notre budget. (Le programme d’exploitation actuel ne laisse que 30 OCTETs non utilisés en mémoire de programme, et il n’aurait pas été possible d’émuler toutes les fonctions sans cette économie de place considérable apportée par le transfert de tous les textes en EEPROM.)
– HOUOUOULàlàlala, mais c’est Horib compliqué d’écrire les textes dans la EEtrucPROM !
– Mais non Dudule, il suffit de téléverser P01_Ecrire_les_textes_en_EEPROM.ino dans la carte Arduino NANO, de faire fonctionner une fois le programme, et avec le Moniteur de l’IDE d’aller vérifier le contenu de l’EEPROM.

Relax les amis(es), inscrire et vérifier les textes en EEPROM est vraiment élémentaire. La première étape méga très délicate consiste à ouvrir le programme de servitude nommé P01_Ecrire_les_textes_en_EEPROM.ino dans l’éditeur de l’IDE. Puis, vérifier que la ligne d’instruction Serial.begin(115200) précise bien la valeur sélectionnée sur le Moniteur. Puis, toujours aussi difficile, vous téléversez le programme. Patience, car en apparence il ne se passe rien. Quand en bas de la fenêtre de l’IDE on voit le texte Téléversement terminé, c’est vraiment … terminé ! Les textes sont bien inscrits dans l’EEPROM, mais comment le vérifier ?
– Ben je te l’ai dit Dudule, active le Moniteur.
Donc, en haut à gauche vous cliquez sur Moniteur série et, après une sorte d’hésitation, le contenu de l’EEPROM est entièrement décortiqué « en mode texte » sur l’écran de l’ordinateur.
– Hé, mé ya des mots qui sont pas complets !
– Normal Dudule, certains caractères accentués ne sont pas bien affichés par le Moniteur.

S’imaginer que tous ces textes ont été installés d’un coup serait sacrément illusoire. En ce qui vous concerne, c’est le « produit fini » qui en une seule « passe » loge l’intégralité de ce qu’à produit le développement. Il faut se rendre compte que parfois, des fonctions ont évolué, et des textes sont devenus caduques. Hors, par discipline je déteste laisser des ressources inutilisées, car s’il fallait faire de la place, on ne saurait plus où chercher. Aussi, chaque fois qu’un texte devenait « nuisible », il était remplacé par un plus récent. Il ne faut pas rêver, il faudrait un hasard fabuleux pour qu’une nouvelle chaîne présente exactement la taille du « trou à combler ». Donc, chaque trou résiduel est remplacé par des « xxxx » faciles à repérer et à employer si l’occasion s’en présente. Une cartographie précise de la mémoire non volatile de l’ATmega328 est proposée dans les pages 34 à 37 chapitres Implantation des textes en EEPROM du livret LOGICIEL.pdf. Notez que la fin de l’EEPROM restée vierge n’affiche que des « .. ». Si vous utilisez un microcontrôleur qui a déjà été gavé de données dans une vie précédente, cette zone va afficher du « n’importe quoi ». Aussi, si tel est votre cas, en début de listage transformez la remarque suivante :
// for (int i=0; i < 1024; i++) EEPROM.write(i, 255);
en une instruction avant de compiler. Ainsi l’intégralité de la mémoire sera préalablement « virginisée ».

Lorsque l’intégralité des textes qui seront utilisés est logée en EEPROM, on téléverses le démonstrateurs P11_Passage_textes_en_EEPROM.ino qui fait exactement pareil que son prédécesseur. On constate que malgré le fait qu’il a fallu ajouter les routines pour gérer la mémoire non volatile et afficher les chaînes de caractères, le programme a maigri de 54 OCTETs, et surtout, tout nouveau texte quel qu’il soit ne coutera plus que 10 OCTETS quelle que soit sa longueur.
– C’est magique ne trouvez-vous pas ?

La suite est ici.