Avec les démonstrateurs précédents nous avons bien préparé le terrain. Les briques logicielles qui vont créer le programme d’utilisation sont en place. On va dans ce chapitre vraiment commencer à émuler les fonctions indispensables à tout oscilloscope. En particulier la première fonction fondamentale consiste à enregistrer une trace pour pouvoir ensuite l’afficher graphiquement. En fonction de la fréquence de variation du signal injecté en entrée de l’appareil on doit pouvoir choisir la rapidité (Ou la lenteur) de l’échantillonnage. C’est le rôle de la BASE de TEMPS. Pour choisir la temporisation entre deux échantillons il existe une infinité de protocoles possibles. Utilisant les particularités et prenant en compte les limites de l’écran graphique, le programmeur a la charge de trouver des affichages et des manipulations simples et conviviales. Dans ce chapitre nous allons développer cette facette de l’utilisation de notre petit appareil. Pour éviter d’avoir à modifier les textes en EEPROM à chaque évolution des démonstrateurs, dans ces derniers les chaînes de caractères seront incluses dans le programme. Ce n’est qu’avec le logiciel final d’utilisation que l’on placera tous les « dialogues » en EEPROM.
La fonction d’initialisation de la BASE de TEMPS.
Invoquée dans un MENU de BASE par l’opérateur quand il désirera sélectionner la rapidité de la BASE de TEMPS elle est émulée comme une fonction indépendante dans le démonstrateur P10_La_BASE_de_TEMPS.ino. Sur RESET ce croquis commence par l’écran de la Fig.54 qui simule un MENU de BASE qui dans la pratique contiendra la liste des fonctions principales de l’oscilloscope. N’importe quelle touche du clavier, avec clic court ou long conduit au sous-menu de la fonction d’initialisation de la base de temps qui à l’ouverture affiche l’écran de la Fig.55 correspondant à la plus grande vitesse d’échantillonnage possible. Pour mémoire la CAN exige précisément cette durée de 100µS. Aussi la plus grande cadence sera obtenue quand les échantillons seront capturés sans générer de délai entre chaque CAN. Cette fonction ignore la durée d’enfoncement des touches, donc l’opérateur peut utiliser le clavier rapidement. C’est le bouton de DROITE qui fait sortir de la fonction en cours et ramène au MENU de BASE. En 1 est précisée la durée de temporisation entre la capture de deux échantillons. En 2 la durée totalisée par les 512 mesures. Enfin 3 représente le temps écoulé pour les 128 échantillons qui seront représentés sur la fenêtre de l’écran graphique. Les trois entités seront
suivies de l’unité temporelle utilisée qui peut être la microseconde, la milliseconde ou la seconde. La touche du HAUT fait augmenter la valeur de la BdT alors que celle du BAS la diminue. Les variations sont en permutations circulaires dans la progression 1, 2, 5. En A de l’écran de la Fig.56 sont obtenues les valeurs les plus grandes qui seront affichées. En B on trouve la lenteur la plus élevée de la base de temps. Avec cinq secondes entre la saisies de deux échantillons on effectue la totalité de l’enregistrement sur un délai de presque 43 minutes. J’ai pensé que ce serait largement assez. Les durées de la BdT possibles sont :
100µS, 200µS, 500µS, 1mS, 2mS, 5mS, 10mS, 20mS, 50mS, 100mS, 200mS, 500mS, 1S, 2S et 5S. On respecte je pense la clause 09) Base de temps avec large plage de vitesses d’échantillonnage du cahier des charges.
Les textes affichés étant supposés rangés en EEPROM cette fonction consomme environ 3300 Octets de programme soit environ 10% de l’espace disponible et environ 25 Octets dans la mémoire dynamique. Cette taille peut effrayer. C’est une facette relativement complexe. Au final, à ce régime on peut en loger dix aussi développées, alors au final on peut rester « zen », pour le moment notre projet n’est pas compromis. Alors passons à la suite logique du développement.
La suite est ici.