Étape 3: logiciel
Le lien du logiciel est répertorié ci-dessous. Alors qu’il est visé pour le 12F683, il est facilement porté à d’autres versions de la photo. Vous devrez modifier la ligne qui identifie la version PIC (liste =) et le fichier INCLUDE, mais ceux sont les changements intuitives. La ligne __CONFIG devez également peaufiner tout simplement parce qu’un ou deux des étiquettes utilisées soient orthographiés différemment dans certains des fichiers INCLUDE.
Normalement nous définirait une tige de I/O comme une entrée ou une sortie pour n’importe quelle fonction que nous utilisions. Dans ce cas, toutefois, nous avons l’obligation de charger le condensateur puis demi-tour et simultanément égoutter et surveiller la tension du condensateur. Le registre TRISIO contrôle la direction des broches e/s ce qui doit être modifié à chaque cycle de timeout. Aussi, étant donné que les registres TRISIO et GPIO sont dans différentes banques, nous avons besoin pour s’assurer que nous émettons la commande correcte de BANKSEL chaque fois.
Le temps de chargement nécessaire pour que le condensateur est dicté par la formule suivante: T = R * C où T est en secondes, R est en ohms et C est en farads. Pour les exemples de valeurs dans le diagramme, cela signifie un minimum de 11ms. Le code que j’ai commencé avec eu une routine de 100ms de retard alors je suis parti juste qui, au lieu de tailler il vers le bas de plus près au minimum requis. Si vous cherchez vraiment à réduire globalement la consommation d’énergie, alors vous pourriez facilement réduire ce retard. Franchement, il ne serait pas entraîner beaucoup d’économies parce que la plupart du temps est passé en mode "veille". Ce qui m’aide-t-il à économie d’énergie est pour réduire la vitesse d’horloge, donc dans cet exemple nous régler l’horloge interne à son taux le plus bas (31 kHz) en désactivant les bits de contrôle de fréquence en OSCCON. OSCCON normalement par défaut pour utiliser la fréquence d’horloge interne 4 MHz. Une autre astuce économies de puissance consiste à configurer toutes les broches GPIO inutilisés comme sorties.
Évidemment cet exemple ne sera pas un gain de puissance car nous sommes une des LED éclairage tout le temps, même en mode "veille". Sans les LEDs, j’ai mesuré sleep mode courant de quelques micro ampères. Si nous ne se soucient d’économies d’énergie ou si nous devons faire quelque chose dans le code au cours de la période de délai d’attente, puis nous pouvons supprimer l’instruction SLEEP. Dans les deux cas, le délai d’attente va générer une interruption. Dans notre exemple le gestionnaire d’interruption recharge simplement le condensateur, active/désactive les LEDs et puis efface GPIF (GPIO Interrupt Flag). La sortie du gestionnaire d’interruption réarme automatiquement le drapeau GIE (général Interrupt Enable). Eh bien, c’est tout pour Episode 7 « Fun avec PIC Assemblée ». Restez à l’écoute des autres épisodes.