Largement défriché avec le démonstrateur P09_Tester_EEPROM.ino on va de façon totalement analogue commencer par inscrire les textes en EEPROM car maintenant ces derniers commencent à se stabiliser et les divers menus y compris le MENU de BASE sont définis. Du coup on va se servir du programme P00_Textes_en_EEPROM.ino qui de plus comme son prédécesseur place en haut de mémoire une TRACE cohérente à utiliser pour tester les routines de récupération. Cette fois comme exemple on reprend la sinusoïde amortie de P12. Vous avez parfaitement compris qu’avant de tester P15_SAV_en_EEPROM.ino il faudra téléverser P00 et l’activer avec le Moniteur de l’IDE, la vitesse sur ce dernier étant initialisée en 57600 baud.
Quand P12. a été développé, dans un premier temps la seule modification apportée au code a consisté à ajouter les routines d’exploitation de l’EEPROM et d’utiliser les textes inscrits par P00 dans cette dernière. Comme précisé en tête de listage le programme qui « pesait » 14304 octets soit 46% de l’espace dédié à diminué de 278 octets passant de 46% à 45% sur le thermomètre. Les données dynamiques quand à elles chutent de 234 octets. Ne consommant que 37% de la place prévue autant dire que coté collision de PILE il n’y a rien à craindre. (Le problème de la « collision de PILE est abordé plus avant dans le tutoriel.)
Lorsque dans le MENU de BASE on clique sur la touche de GAUCHE clic court ou clic long on ouvre le MENU EEPROM de la Fig.104, la LED triple passant alors du bleu au vert pour mettre en évidence ce changement de page de commande et inciter l’opérateur à utiliser le clavier. Un changement important a été porté à l’utilisation de la mémoire non volatile dont la Fig.105 décrit la nouvelle organisation. Noter que cette copie de la fenêtre d’écran du Moniteur de l’IDE a été effectuée lors de l’utilisation de P00 du 27 Novembre 2023 en 1. La suite du développement engendrant de nouveaux textes à afficher, dans la dernière version la zone de texte 4 sera plus étendue, alors que celle qui reste libre en 7 sera réduite d’autant. Lorsque P00 est activé avec il commence par « effacer » toute l’EEPROM avec des $FF et le signale en 2. Il se trouve que les accentués ne sont pas affichés dans la fenêtre du Moniteur. Assi ils ont été surchargés manuellement dans les zones 3 et 6 pour que vous puissiez en déterminer leur position. La zone 4 liste les
textes inscrits en EEPROM alors que la zone rose 5 en situe les adresses dans la mémoire non volatile. En 8 on trouve huit emplacements qui préserveront les attributs des traces sauvegardées. (Amplitude verticale et Base de Temps.) L’emplacement d’adresse 547 en 9 précisera si l’EEPROM est vide, si elle contient une trace Longue ou Quatre TRACES individuelles, on va détailler cet aspect dans un chapitre qui suit. Si c’est une trace Longue qui est stockée en mémoire, les 476 emplacements allants de la cellule 548 à la cellule 1023 contiennent cette dernière. Au contraire, si l’on a opté à la sauvegarde pour Quatre TRACES le haut de la mémoire est alors divisé en quatre zones indépendantes de 119 emplacements 10, 11 12 et 13.
La sauvegarde de plusieurs fenêtres.
Généralement, le signal que l’on a échantillonné est périodique, et l’intégralité de l’enregistrement est une suite continue de « motifs » qui se répètent. Dans ce cas, déplacer le curseur de fenêtre en fenêtre ne fait que montrer des traces qui sont analogues, la manipulation n’apportant pas d’information supplémentaire. La Fig.106
résume ce cas très fréquent. Sauvegarder l’intégralité des 476 échantillons n’est alors plus pertinent, on « gaspille » la place disponible dans les partitions 10, 11 12 et 13. Il est dans ce cas bien plus utile, comme représenté sur la Fig.107 de ne sauvegarder que l’une des fenêtres dont on précisera l’ordre. Dans ce cas elle ne prend que 119 cellules et l’on peut organiser la partition mise en évidence par les limites de zones marrons de la Fig.105 réservant les quatre zones ordonnées 10, 11 12 et 13
pour des fenêtres indépendantes. Ce n’est que pour un échantillonnage dont la forme d’onde varie sur l’intégralité de « la largeur » de l’enregistrement qu’il est intéressant de ne sauvegarder qu’une seule trace étendue. Par exemple pour la sinusoïde amortie ou un train d’onde carrées relatives à un signal binaire du genre CII ou RS232. (Signaux binaires échangés sur des lignes de type série.) Sauvegarder une trace, pour comparaison ultérieure avec de nouvelles mesures, doit préserver la forme d’onde, ainsi que ses attributs dont l’information reste vitale. Les attributs sauvegardés sont le Calibre vertical et la Base de Temps qui étaient sélectionnés lors de la saisie des échantillons. Ces paramètres sont systématiquement enregistrés en EEPROM que ce soit pour une trace Longue pour Quatre TRACES. Dans ce deuxième cas c’est la fenêtre présente sur la page écran OLED qui est sauvegardée, c’est à dire avec son décalage potentiométrique. C’est un point important, car ainsi on conserve le cadrage latéral que l’on a initié en vue de faire correspondre des transitions avec les graduations du graticule.
Nouvelle organisation de l’espace EEPROM.
Outre la ou les traces qui vont des adresses de 0548 à 1023, on sauvegarde le Type de l’enregistrement ainsi que quatre couples d’octets représentant les attributs des sauvegardes en EEPROM. Ces données directement liées aux échantillons préservés dans le « haut » de la mémoire non volatile, sont placées juste avant la
grande zone marron. Le reste partant de 0000 jusqu’à 0538 sera réservé aux textes du dialogue Homme/Machine ou éventuellement à d’autres données spécifiques. Cette organisation qui à ce stade devrait rester pérenne est proposée en Fig.108 avec précision des adresses relatives en mémoire EEPROM. On notera que les deux octets d’adresses 0545 et 0546 contiendront en fonction de l’information Type d’Echantillonnage soit les attributs de la fenêtre n°4 soit ceux de la Longue TRACE. L’octet du Type d’Echantillonnage sera codé comme indiqué dans l’encadré de la Fig.109.
Menu EEPROM et comportement de P15.
Déjà présenté sur la Fig.104 en page 45, le MENU EEPROM propose trois actions de base. La Fig.110 montre une variante car la mémoire EEPROM est dans cet exemple occupée par Quatre TRACES. Enfin, ce sous-menu peut nous informer comme sur la Fig.112 que ce n’est pas la peine d’insister avec les commandes possibles car la zone des échantillons est actuellement entièrement effacée et ne contient pas d’échantillons. Si on désire effacer entièrement la zone réservée en EEPROM en la remplaçant par des valeurs zéro, on clique sur le bouton HAUT qui en Fig.111 montre la page-écran qui demande confirmation. En effet, on pourrait avoir cliqué sur la touche par mégarde et vouloir ne pas engager l’effacement. Cette demande de confirmation engendre également l’allumage en rouge de la LED tricolore. Les touches BAS ou DROITE ramènent directement au MENU de BASE avec retour au bleu de la LED triple. Même effet si on accepte l’effacement avec toutefois un délai d’environ deux secondes correspondant à l’écriture des 476 cellules EEPROM. Étant dans le MENU EEPROM, cliquer sur GAUCHE fait passer la LED triple en cyan, génère un BIP sonore d’erreur et affiche l’écran de la Fig.113 avec attente d’une touche au clavier. N’importe lequel des quatre boutons poussoir fait revenir au MENU de BASE LED triple en bleu. Si l’EEPROM contient une trace Longue ou de type Fenêtre, cliquer sur GAUCHE allume la LED triple en cyan et affiche la page écran de la Fig.114 avec attente d’une confirmation. La touche de GAUCHE est sans effet mis à part qu’elle déclenche un BIP d’erreur. Les trois boutons poussoir en clic court ou clic long font revenir au MENU de BASE. Seul celui
du HAUT recharge l’intégralité de la zone d’échantillons en « écrasant » ce qui était présent en mémoire vive. Étant en MENU EEPROM, quand on clique sur la touche de DROITE la LED triple passe en rouge avertissant que les commandes de la Fig.115 peuvent faire perdre des données. (Si cette page écran s’affiche, c’est qu’il y a bien présence d’une TRACE en EEPROM.) Si on clique sur HAUT et que la mémoire contient actuellement des traces individuelles, la page écran de la Fig.116 s’ouvre et le logiciel attend confirmation. Le refus ramène au MENU de BASE. Si l’on persiste, un texte précise « Sauvegarde la Longue. » durant environ deux seconde puis il y a retour au MENU de BASE. Si l’on désire sauvegarder une Fenêtre, c’est dans ce cas qu’au préalable il devient pertinent d’effacer l’EEPROM. Avec la touche de GAUCHE on peut changer à convenance le numéro de la fenêtre qui pourra être sauvegardée. Chaque clic sur GAUCHE change l’ordre en permutation circulaire et le précise dans le petit encadré situé à hauteur de la ligne de texte BAS :
Fenêtre. On se doute que cliquer sur cette touche GAUCHE aura pour effet de sauvegarder les 119 valeurs des échantil
lons relatifs à la Fenêtre concernée par l’index de sélection du bas de la page écran d’affichage des traces. C’est la zone affichée de la courbe qui est mémorisée, c’est à dire que le décalage latéral de la visualisation avec le potentiomètre est pris en compte. Seule l’une des zone 10, 11 12 et 13 de la Fig.105 désignée par la touche GAUCHE sera écrasée par les nouvelles données.
Affichage des Fenêtres individuelles.
Visualiser une Fenêtre élémentaire ou une Longue TRACE, la Fig.117 en donne des exemples, ne modifie en rien l’aspect de l’affichage, et il n’est pas évident pour l’opérateur de s’en rendre compte au premier coup d’Å“il surtout si la dernière trace a été sauvegardée il y a longtemps. Aussi, pour attirer son attention le numéro de la fenêtre est ajouté dans l’encadré rouge sur les quatre photographies. Cet avertissement prévient l’opérateur qu’il s’agit bien d’une fenêtre élémentaire, et que par conséquent ses attributs situés dans l’encadré jaune ne sont relatifs que pour la page écran affichée. Quand on change de fenêtre les valeurs sont mises à jour. Par exemple en A le calibre était de 5V et la base de temps de 5mS par graduation horizontale. Le cas en B est celui qui conduit à l’affichage des données le plus large. C’est pour ne pas que le texte de sorte de son encadrement que le vEff de la Fig.94 est devenu Vef comptant un caractère de moins. (Et changement de Majuscule et Minuscule.) En C le calibre est toujours de 5v alors qu’en B le calibre est de 1.25v pour la pleine hauteur et la BdT n’est que de 1.35mS par graduation. Noter que pour chaque fenêtre la valeur de la tension efficace est recalculée. Bien entendu, à tout moment on peut choisir le mode surface comme en A, B et D ou le mode ligne comme en C. Dès que l’on procède à un nouvel échantillonnage, l’intégralité de la « largeur » lui est attribuée et automatiquement le logiciel revient au mode Longue TRACE.
Un nouveau « bilan financier ».
Avouons que représenté sur le graphe de la Fig.118 il est assez préoccupant et alerte les actionnaires de l’entreprise. Ce dessin fait apparaitre en bleu l’occupation mémoire du programme lorsque tous les textes ont été logés en EEPROM. L’occupation est alors passé de 46% à 53%. Puis les fonctions EEPROM on été ajoutées. Elles contiennent pas mal de « bavardages » et des séquences de programme complexes. En dépit des ces particularités, le programme n’a augmenté que de 1760 octets soit à peine 5% de la zone programme. Cette augmentation est montrée en rouge sur le thermomètre virtuel. Hors les actionnaires ne pensent qu’à la rentabilité. (En réalité, « les actionnaires » c’est ma pomme ! Personnellement je suis ultra radin. Du coup, quand je m’amuse à développer un petit projet, j’ai à cÅ“ur d’utiliser au maximum les ressources du microcontrôleur. C’est à dire que je ne suis satisfait que si j’arrive à saturer la zone programme et à rempli l’EEPROM. Et ici on est loin du compte … Hiiiippppssssss !) Pour rentabiliser l’entreprise, il va falloir trouver des idées grosses consommatrices d’octets. Et dire qu’il reste assez de place pour loger neuf fonctions aussi complexes que celles de l’exploitation de l’EEPROM. On n’y arrivera jamais, c’est désespérant …
Quoi qu’il en coute, on va continuer à optimiser le code car il n’est pas question de gaspiller. N’oublions pas que le but de l’entreprise consiste à s’amuser en programmant, et avec méthode. Donc, sachant dès maintenant que la place disponible ne sera pas toute consommée, et de loin, on va continuer à soigner à l’octet prêt le code C++ … notre réputation en dépend !
La suite est ici.