Commit dbfe8774059c89bc7ba79137975e9e8abf0e018e

Authored by thubert
1 parent 464d57a0

Fin des TODO

Showing 1 changed file with 6 additions and 8 deletions   Show diff stats
@@ -103,7 +103,7 @@ Pour éviter des scrutations, nos boutons sont branchés sur les ports d'interru @@ -103,7 +103,7 @@ Pour éviter des scrutations, nos boutons sont branchés sur les ports d'interru
103 103
104 ## Ports parallèles 104 ## Ports parallèles
105 105
106 -Nos afficheurs 7 segments se contrôlent par 12 pins. 8 servent à choisir les segments à afficher, qui seront branchées en PortA (0:8), et 4 pins commandés en logique inversée servent à choisir l'afficheur à utiliser. Nous brancherons ces derniers en PortC(0:4). Ce système implique de mettre au point un sytème d'affichage qui alterne entre les afficheurs, nous verrons cela juste après. 106 +Nos afficheurs 7 segments se contrôlent par 12 pins. 8 servent à choisir les segments à afficher, qui seront branchées en PortA (0:7), et 4 pins commandés en logique inversée servent à choisir l'afficheur à utiliser. Nous brancherons ces derniers en PortC(0:3). Ce système implique de mettre au point un sytème d'affichage qui alterne entre les afficheurs, nous verrons cela juste après.
107 107
108 Enfin, le signal de contrôle de la chaudière est branchée sur un port parallèle, un non utilisé par l'afficheur 7 segments pour simplifier éviter de faire des opérations d'entrée/sortie avec des masques. Pour la simulation, nous avons utilisé une LED branchée sur le port G (`PG0`). 108 Enfin, le signal de contrôle de la chaudière est branchée sur un port parallèle, un non utilisé par l'afficheur 7 segments pour simplifier éviter de faire des opérations d'entrée/sortie avec des masques. Pour la simulation, nous avons utilisé une LED branchée sur le port G (`PG0`).
109 109
@@ -117,15 +117,13 @@ Il sera configuré pour s'activer sur demande, ici toutes les dix secondes. En e @@ -117,15 +117,13 @@ Il sera configuré pour s'activer sur demande, ici toutes les dix secondes. En e
117 117
118 ## Watchdog 118 ## Watchdog
119 119
120 -TODO toutes les deux secondes, déclenche une interruption, nécessite d'être un multiple de 10 secondes, au final il marche pas parce qu'on sait pas du coup on utilise le timer (pas trop étaler là dessus, c'est expliqué plus en détails dans algorithme)  
121 -  
122 -↓↓ à réintégrer  
123 -  
124 -On s'est rendu compte que la fréquence d'appel était ~100× plus élevé que ce qui devrait être. N'ayant pas réussi à corriger ce comportement (que l'on a pu aussi constater en TP), nous avons dû trouver un autre moyen de procéder. 120 +Le Watchdog doit être appellé toutes les secondes dans l'idéal. On l'a donc configuré pour avoir un tel résultat. Mais on s'est rendu compte que la fréquence d'appel était ~100× plus élevé que ce qui devrait être. N'ayant pas réussi à corriger ce comportement (que l'on a pu aussi constater en TP), nous avons dû trouver un autre moyen de procéder.
125 121
126 ## Timer 122 ## Timer
127 123
128 -TODO 4 ms (détailler le calcul, copier ce qu'il y a dans la partie algo), pas trop long pour que l'oeil puisse distinguer (persistence rétinienne, tout ça) ni trop court pour pas consommer d'énergie. 124 +
  125 +Pour le timer, nous avons fait le choix de l'utiliser en overflow, ce qui simplifie l'initialisation. Nous avons utilisé un prescaler à 256, ce qui nous permet d'avoir une fréquence égale à $\frac{16 MHz}{256^2}=244.140625Hz$, ce qui correspond à 4.1 ms. Cela nous permet d'avoir un affichage complet tous les 16ms, ce qui est le minimum pour un affichage correct, ce qui permet de faire la plus grande économie d'énergie pour un affichage correct.
  126 +A chaque cycle, on va décaler l'octet envoyé au portC, qui sert à sélectionner l'afficheur, et on enverra en PortA la valeur correspondante.
129 127
130 # Algorithme 128 # Algorithme
131 129
@@ -169,7 +167,7 @@ timer: @@ -169,7 +167,7 @@ timer:
169 167
170 ### Watchdog 168 ### Watchdog
171 169
172 -Le watchdog ne fonctionnant pas, nous avons donc étendu l'interruption du timer pour pouvoir compter les secondes. Pour cela, un utilise un registre supplémentaire, `tt`, qui est incrémenté à chacune des interruptions du timer. Sa fréquence exacte étant de de $\frac{16 MHz}{256^2}=244.140625 Hz$, dès que `tt` a depassé `244` on appelle donc la fonction qui était censée être appelée par le watchdog, `agir1s` qui gère les éxecute les fonctions dépendant du temps. 170 +Le watchdog ne fonctionnant pas, nous avons donc étendu l'interruption du timer pour pouvoir compter les secondes. Pour cela, un utilise un registre supplémentaire, `tt`, qui est incrémenté à chacune des interruptions du timer. Sa fréquence exacte étant de de $244.140625 Hz$, dès que `tt` a depassé `244` on appelle donc la fonction qui était censée être appelée par le watchdog, `agir1s` qui gère les éxecute les fonctions dépendant du temps.
173 171
174 D'un point de vue énergétique, cette approche est beacoup moins efficace car elle rajoute des instructions supplémentaires à l'interruption du timer, qui est la fonction « critique » du système car appelée 244 fois par seconde. 172 D'un point de vue énergétique, cette approche est beacoup moins efficace car elle rajoute des instructions supplémentaires à l'interruption du timer, qui est la fonction « critique » du système car appelée 244 fois par seconde.
175 173