13) L’usure de la mémoire non volatile EEPROM.

Dernière minute pourrait s’intituler ce chapitre qui ne concerne véritablement que les programmeurs sur Arduino. Il ne faut pas confondre mémoire vive, (RAM) et mémoire EEPROM. La mémoire vive peut être écrite et lue à l’infini sans subir de dégradation. Ce n’est pas tout à fait le cas avec la mémoire non volatile EEPROM. On peut la lire à l’infini, comme pour la RAM, mais par contre le nombre de cycles d’écriture est limité. Les concepteurs de circuit intégrés garantissent environ 100000 écritures. Ensuite la mémoire ne sera plus consédérée comme fiable. Une valeur aussi élevée peut sembler colossale, alors pourquoi aborder ce chapitre ?
Dès que notre Cyclotron collisionneur est sous tension, notamment en attente d’une commande de l’opérateur, toutes les trois secondes l’énergie électrique consommée est mise à jour et sa valeur est inscrite dans quatre octets EEPROM. Donc, un simple calcul montre que l’on aura atteint le seuil critique de 100000 écritures en 300000 secondes soit environ 83 heures. Ce n’est pas une valeur aussi gigantesque que ça, surtout si l’on laisse la machine en attente sur de longues périodes.

Le compteur kilométrique.

C’est bien parce qu’il reste beaucoup de place en mémoire de programme que je me suis amusé à ajouter la fonction de surveillance de l’usure de l’EEPROM. N’oublions pas que le but de ce projet est purement ludique, la programmation d’Arduino participant au charme. Profitant de cette abondance, chaque échantillonnage toutes les trois secondes mettant à jour la quantité d’énergie absorbée sur le secteur alternatif donne lieu à une écriture en EEPROM. Non précisé en Page 28 la consommation de 0.0011 Wh toutes les trois secondes est ajoutée durant tous les écrans en attente d’une commande opérateur y compris en MANUEL. Toutes ces écritures ainsi que celles durant l’activation des cycles d’accélération sont comptabilisés. L’écran de la Fig.69 indique le nombre total de fois que sont mises à jours les données logées en EEPROM. Comme l’énergie consommée est recalculée et sauvegardée en permanence, le nombre indiqué sur la Fig.69 s’incrémente toutes les trois secondes. L’organigramme de la Fig.47 en Page 24 n’est plus complet et il faut consulter celui de la Fig.70 qui précise le nouveau comportement du programme. L’usage des deux boutons poussoir Dem. et TIR est indépendant. Toutefois, si sur RESET on active Dem. on va pouvoir lister les commandes. Si en sortie de ce menu quand on clique sur le BPC on maintien TIR activé, au lieu de passer dans le Menu de BASE par 1 « test suivant négatif » on transitera en 2 dans l’affichage « kilométrique ». L’aiguillage en 3 du Menu de BASE branche en EXPLOITATION fonction qui nous le savons boucle indéfiniment sur elle-même en circuit fermé.

Quelle sera la conduite à tenir si laissant trop souvent notre machine en attente, la valeur fatidique atteint les 100000 considérés comme critiques ? La réponse à cette question existentielle est facile : Il suffit de déplacer la zone des données en EEPROM pour pointer des cellules inutilisées qui de ce fait conservent intégralement leur potentiel. Dans ce but on passera en revue toutes les instructions de type eeprom_read_word(…), eeprom_read_float(…), eeprom_read_dword(…), eeprom_write_float(…) etc en changeant les valeurs des pointeurs comme proposé en exemple ci-dessous :

La suite est ici.