La logique du programme est assez simple... Voici un tableau des flux brut (voir ci-dessus), suivi d’un texte descriptif
Le code que vous avez téléchargé est écrit en C, et le projet est destiné à être ouvert par Atmel Studio 6, qui est également fortement recommandé par moi. Atmel Studio 6 utilise AVR GCC comme son compilateur donc même si vous n’êtes pas en mesure d’utiliser Atmel Studio 6 (si vous n’utilisiez pas Windows), vous pouvez toujours compiler le code en utilisant GCC AVR.
L’horloge RTC matérielle (minuterie 2 en mode asynchrone) déclenche une interruption de dépassement de capacité pour toutes les graduations 256 * 128 du cristal 32,768 KHz. Cela signifie que l’interruption se déclenche par une seconde. Il est utilisé pour suivre les temps. N’oubliez pas que les interruptions peuvent réveiller le processeur du mode veille.
Il y a un P.C.int (broche changement interrupt) associé aux cases. La boucle principale du programme garde toujours le processeur en mode "veille" à moins que l’utilisateur appuie sur un bouton pour réveiller. Il va rester là jusqu'à ce qu’il a fini d’affichage LED.
Les voyants sont allumés par la conduite logique 0 sur la broche reliée à l’anneau de la cathode désirée et conduite logique 1 à la conencted de pin à l’anode désirée. C’est comment LED travaux de matrices, une technique vraiment fondamentale. Cela s’allume seulement une LED à un moment, mais nous voulons à la lumière de trois à la fois, donc ce qui arrive dans une boucle qui parcourt les trois LEDs vraiment rapide, assez rapide telle que le spectateur ne sait pas que les voyants DEL s’éteignent en fait.
Il y a quelques animations sympa, une présentation logique et logique d’interface utilisateur, comme illustré dans la vidéo.
L’avertisseur doit être conduit à une fréquence constante de 4,1 KHz pour produire la sortie le plus élevée possible. Cela se fait à l’aide de deux interruptions de minuterie qui est configuré pour coups de feu à 2,05 KHz pour basculer l’axe de la sonnerie. Le même événement d’interruption est responsable de cyclisme entre l’heure, minute et le second « main » LEDs, pour qu’ils aient un même cycle.
Le deuxième « main » et le moteur ne fonctionnent pas si la tension de la batterie est trop faible, que c’est pour économiser l’énergie (overdrained au lithium-ion batteries peuvent être endommagées de façon permanente) et à indiquer à l’utilisateur que la batterie est faible.
Les réglages d’alarme sont stockés en EEPROM, ce qui signifie que même si la batterie meurt complètement, les réglages seront enregistrés. L’heure actuelle est en fait également stockées en EEPROM quand la montre se met en veille, mais c’est parce que pendant le développement, je veux le temps d’être "intéressant" (pas toujours à partir de 0) entre les réinitialisations.