Liste des Routines ****************** -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine InitVar ------------------------------------------------------------------------------- Cette routine crée et initialise toutes les variables du programme Variables d'entrées : Aucune Variables de sortie : Toutes (Voir la liste des variables) Variables de travail : Toutes Routines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine IntBouton ------------------------------------------------------------------------------- Cette routine fonctionne par intérruptions. Lors d'une rotation de la molette, ou lors de l'appuis sur le bouton, Une intéruption du microcontrôleur est générée et le processeur est arrêté, puis dirigé vers cette routine. Elle met alors le compteur MoletteCompteur à jour, ainsi que la variable Bouton. Pendant l'exécution de cette routine, les intéruptions sont inhibées. Variables d'entrées : Aucune Variables de sortie : MoletteCompteur, MoletteComptOld, MoletteDelta Bouton, BoutonOld Variables de travail : Aucune Routines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine IntTempo ------------------------------------------------------------------------------ Cette routine fonctionne par intérruptions. Un compteur tourne en permanence dans le processeur. A chaque fois qu'il atteint une valeur prédéfinie, des compteurs sont incrémentés. Ces compteurs servent au "timeout" du menu par exemple, et à mesurer le temps d'appuis sur les boutons. Pendant l'exécution de cette routine, les intéruptions sont inhibées. Variables d'entrées : Aucune Variables de sortie : CompteurBtn, CompteurTps Variables de travail : Routines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine LitEncodeur ------------------------------------------------------------------------------- Cette routine permet de lire l'encodeur rotatif, et permet les changements de température de consigne, les changements de modes, la gestion des dérogations et éventuellement l'entrée dans le menu Variables d'entrées : MoletteDelta, Bouton, Mode, Plage, TpsDemiSeconde Variables de sortie : Mode, Indice(16), Indice(15), Derogabit Variables de travail : AffiFormat, AffiNombre, AffiDiviseur, Ligne1$, Ligne 2$, TConsNuitOld, TConsJourOld, CompteurTps, CompteurBtn, NbAsc$, Oldmode Routines appellées : ConvNumAsc, AffiLcd, Menu, ChgtMode -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine ConvNumAsc ------------------------------------------------------------------------------- Cette routine exécute la conversion d'un nombre AffiNombre, divisé par AffiDiviseur, en une chaine de charactère NbAsc$. Le Format est donné par la variable AffiFormat Variables d'entrées : AffiFormat, AffiNombre, AffiDiviseur Variables de sortie : NbAsc$, Quart Variables de travail : Nombre, Digit$(5), NbChar, I Routines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine Menu ------------------------------------------------------------------------------- Le fonctionnement du menu est articulé autour de trois éléments : 1 - Un tableau stocké en EEprom contenant les éléments suivants : - Le contenu d'affichage de la ligne 1 (16 octets) - Le contenu d'affichage de la ligne 2 (16 octets) - La position du curseur sur l'écran de 1 à 32 (1 octet) - Action si molette --> (1 octet) - Action si molette <-- (1 octet) - Action si bouton appuyé (1 octet) (élément 2) - Indice de variable (1 octet) (élément 3) Ce tableau reprend 59 "lignes" reprenant les 59 "écrans" du menu. 2 - Des codes actions qui déterminent l'action à réaliser dans le menu. Les actions sur molette sont de deux types. Soit la valeur est inférieure à 128, et dans ce cas, le nombre indique la "ligne" à laquelle le menu vas se connecter suite à l'action de la molette. La valeur 128 correspond à l'incrémentation de la variable en cours, et le code 129 à la diminution. Pour l'appuis sur la molette, les codes sont compris entre 130 et 144 et déterminent des actions "spéciales" : sortie du menu, choix du cycle, choix du jour, suppression de plage ou choix du type de vanne de régulation. 3 - Des variables indicées Indice(18), LimitBas(18), LimitHaut(18), Divise(18) et Format(18). Ces variables indicées reprennent en fait les différentes variables que le menu est capable de modifier. Pour chacune des 18 variables, nous avons Indice(n) qui reprend la variable en elle-même. Pour des raisons de facilité et d'économie de mémoire, ces variables sont exprimées en "Unité", donc toujours des nombres entiers. Pour contourner cet obstacle, la variable Divise(n) contient le diviseur de la variable Indice(n). Par exemple, si l'on veux stocker une température exprimée avec une précision d'un dixième de degré, le contenu de la variable Indice(n) contiendra T°*10, et Divise(n) sera égal à 10. Les variables LimitBas(n) et LimitHaut(n) contiennent les limites haute et basse entre lesquelles la variable Indice(n) doit se trouver. Enfin, l'élément Format(n) contient le "format d'affichage" de la variable Indice(n). Les dizaines de cette variable indiquent le nombre de chiffre avant la virgule, tandis que les unités indiquent le nombre de chiffre après la virgule. Dans notre programme, seuls les formats 10, 11, 20 & 21 seront utilisés. Une exeption pour le format "99" qui lui renvoie vers un format horaire "hh:mm". Un autre avantage de l'utilisation de variables "unité" est que chaque "clic" de la molette correspondra toujours à une différence égale à la précision de la variable en cours de modification. Si par exemple, la modification concerne une T° au dixième de degré, chaque clic de la molette provoquera une modification de 1/10 de °C. Dans son fonctionnement, la routine "Menu" vas reprendre le contenu de l'EEprom pour la ligne en cours (pour cela, il démarre sur la première zone mémoire de l'EEprom), puis, en fonctions de l'action sur la molette, exécutera soit une action, soit un passage à une autre ligne du menu. Et l'action à réaliser est définie par les différentes variables mises à jour par le contenu correspondant de l'EEprom Variables d'entrées : Aucune Variables de sortie : Aucune Variables de travail : BoucleMenu, MnuNum, MnuAdres, BaseAdres, Ligne1$, Ligne2$, MnuPosCur, MnuActHorlo, MnuActAntiH, MnuActRet, MnuIndiVar, RetroLcd, MoletteDelta, CompteurTps Indice(),Divise(),Format(),LimitBas(),LimitHaut() AffiFormat, AffiNombre, AffiDiviseur, Tmp$, NbAsc$ NbChar, NumCycle, Jour, TypeVanne, TpsDemiSeconde Routines appellées : AffiLcd, ConvNumAsc, SupprimePlage -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine AffiLCD ------------------------------------------------------------------------------- Affichage des chaînes Ligne1$ et Ligne2$ sur l'écran LCD Variables d'entrées : Ligne1$, Ligne2$ Variables de sorties : Aucune Variables de travail : Aucune Sousroutines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine ModifPlage ------------------------------------------------------------------------------- Active ou Supprime la Plage en cours Variables d'entrées : BaseAdresPlage, NumCycle, Jour, PlDe(NumCycle) PlDu(NumCycle), BitAction Variables de sorties : Aucune Variables de travail : PlI, PlOctCal, PlBitCal, PlPosCyc, PlPosJou, PlPosMem PlValMem, PlPosBit, PlValBit Sousroutines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Routine CreaVarPlag ------------------------------------------------------------------------------- Création des variables nécessaires aux manipulation sur les plages horaires Variables d'entrées : BaseAdresPlage, NumCycle, Jour Variables de sorties : PlDe(4), PlDu(4) Variables de travail : PlI, PlPosCyc, PlPosJou, PlPlage, PlAdrOct, PlValOct, PlAdrBit, PlBitAnt, PlDuree, PlOctet Sousroutines appellées : Aucune -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-