Outils pour utilisateurs

Outils du site


issue138:greatcowbasic

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue138:greatcowbasic [2018/11/11 09:03] d52frissue138:greatcowbasic [2018/11/12 12:11] (Version actuelle) andre_domenech
Ligne 3: Ligne 3:
 The reception with the standard receiver was bad, so I did some research, and ordered another receiver-module to improve the reception, it is called “RXB8 V2.0” and came at a reasonable price.  In this issue we will enhance the Radio Frequency (RF) device interface to save some power - to do this I will introduce the Watchdog timer.** The reception with the standard receiver was bad, so I did some research, and ordered another receiver-module to improve the reception, it is called “RXB8 V2.0” and came at a reasonable price.  In this issue we will enhance the Radio Frequency (RF) device interface to save some power - to do this I will introduce the Watchdog timer.**
  
-Dans le FCM n° 136, je vous ai montré comment utiliser la conversion analogique-numérique (ADC) avec une photorésistance (LDR) pour obtenir des informations sur la luminosité ambiante et comment la transmettre à un dispositif éloigné.+Dans le FCM n° 136, je vous ai montré comment utiliser la conversion analogique-numérique (ADC) avec une photorésistance (LDR) pour obtenir des informations sur la luminosité ambiante et comment les transmettre à un dispositif éloigné.
  
-La réception était mauvaise avec le récepteur ordinaire ; aussi, j'ai effectué quelques recherches et commandé un autre module de réception pour l'améliorer. Il s'appelle « RXB8 V2.0 » et se trouve à un prix raisonnable. Dans ce numéro, nous allons amélioré l'interface du dispositif de Radio-Fréquence (RF) pour économiser l'énergie pour cela, je présenterai la minuterie du Watchdog (dispositif de surveillance temporelle). +La réception était mauvaise avec le récepteur ordinaire ; aussi, j'ai effectué quelques recherches et commandé un autre module de réception pour l'améliorer. Il s'appelle « RXB8 V2.0 » et se trouve à un prix raisonnable. Dans ce numéro, nous allons améliorer l'interface du dispositif de Radio-Fréquence (RF) pour économiser l'énergie pour cela, je présenterai la minuterie du Watchdog (dispositif de surveillance temporelle). 
  
 **Introducing the Watchdog timer  **Introducing the Watchdog timer 
Ligne 13: Ligne 13:
 Software can always contain bugs, or maybe some environmental conditions arise that you did not think of in the first place. So, it would be important to restart the microcontroller to its initial state if something goes wrong. In such situations you surely will use the watchdog timer, which can restart the microcontroller completely. With respect to low ressources, another use case of the watchdog timer would be to implement a power saving mode to save battery life. The device drains as little battery as possible (whilst sleeping) and can then use the watchdog timer to wake up. So how does the watchdog timer (WDT) work internally?** Software can always contain bugs, or maybe some environmental conditions arise that you did not think of in the first place. So, it would be important to restart the microcontroller to its initial state if something goes wrong. In such situations you surely will use the watchdog timer, which can restart the microcontroller completely. With respect to low ressources, another use case of the watchdog timer would be to implement a power saving mode to save battery life. The device drains as little battery as possible (whilst sleeping) and can then use the watchdog timer to wake up. So how does the watchdog timer (WDT) work internally?**
  
-Présentation du watchdog+Présentation de la minuterie du watchdog
  
-Imaginez une situation où vous programmez un microcontrôleur pour un système critique. vous ne compteriez pas uniquement sur la fiabilité  du logiciel pour éviter les dégats, n'est-ce-pas ?+Imaginez une situation où vous programmez un microcontrôleur pour un système critique. Vous ne compteriez pas uniquement sur la fiabilité  du logiciel pour éviter les dégâts, n'est-ce pas ?
  
-Un logiciel peut toujours contenir des défauts, ou, peut-être, certaines conditions d'environnement peuvent se produire auxquelles vous n'auriez pas penser tout de suite. Aussi, il serait important de redémarrer le microcontrôleur à son état initial si quelque chose se passe mal. Dans de telles situations, vous utiliserez sûrement un watchdog, qui peut redémarrer complètement le microcontrôleur. Dans le cas d'un faible consommation des ressources, un autre cas d'utilisation du watchdog serait d'implémenter un mode d'économie d'énergie pour épargner la durée de vie de la batterie. Le dispositif consomme le moins possible de batterie (tout en dormant) et peut ensuite utiliser le watchdog pour se réveiller. Mais comment le watchdog (WDT) fonctionne-t-il en interne ?+Un logiciel peut toujours contenir des défauts, ou, peut-être, certaines conditions environnementales peuvent se produire auxquelles vous n'auriez pas pensé au départ. Aussi, il serait important de redémarrer le microcontrôleur à son état initial si quelque chose se passait mal. Dans de telles situations, vous utiliserez sûrement la minuterie du watchdog, qui peut redémarrer complètement le microcontrôleur. Dans le cas d'une faible consommation des ressources, un autre moyen d'utilisation de la minuterie du watchdog consisterait à implémenter un mode d'économie d'énergie pour economiser la batterie. Le dispositif consomme le moins possible de batterie (en dormant) et peut ensuite utiliser la minuterie du watchdog pour se réveiller. Mais quel est le fonctionnement interne de la minuterie du watchdog (WDT) ?
  
 **The watchdog timer has a separate on-chip oscillator working at 128 KHz which works as a overflow timer. Thru a prescaler, you can set the time when the overflow occurs. The WDT can operate in three modes: interrupt, system reset or interrupt and system reset: **The watchdog timer has a separate on-chip oscillator working at 128 KHz which works as a overflow timer. Thru a prescaler, you can set the time when the overflow occurs. The WDT can operate in three modes: interrupt, system reset or interrupt and system reset:
Ligne 28: Ligne 28:
 • The WDT can be activated by software: then all three modes can be used. For the ATtiny13a, different timings can be set (to trigger overflow). For this article we need to know only two timing options.** • The WDT can be activated by software: then all three modes can be used. For the ATtiny13a, different timings can be set (to trigger overflow). For this article we need to know only two timing options.**
  
-Le watchdog a un oscillateur séparé, intégré à la puce, tournant à 128 kHz qui fonctionne comme une minuterie de dépassement. Par l'intermédiaire d'un prédiviseur, vous pouvez régler l'instant auquel aura lieu le dépassement. Le WDT peut agir suivant trois modes : l'interruption, la remise à zéro du système ou l'interruption avec remise à zéro du système : +La minuterie du watchdog a un oscillateur séparé, intégré à la puce, tournant à 128 kHzqui fonctionne comme une minuterie de dépassement. Par l'intermédiaire d'un prédiviseur, vous pouvez régler l'instant auquel aura lieu le dépassement. Le WDT peut agir suivant trois modes : l'interruption, la remise à zéro du système ou l'interruption avec remise à zéro du système : 
-• Le mode par interruption peut être utilisé pour réveiller le dispositifou pour arrêter des opérations qui durent trop longtemps. +• Le mode par interruption peut être utilisé pour réveiller le dispositif ou pour arrêter des opérations qui durent trop longtemps. 
-• Le mode par remise à zéro du système se comprend de lui-même ; le dispositif est est redémarré sans autre avertissement et toutes les données volatiles sont perdues. +• Le mode par remise à zéro du système se comprend de lui-même ; le dispositif est redémarré sans autre avertissement et toutes les données volatiles sont perdues. 
-• Le dernier mode combine les deux précédents ; l'interruption a lieu et vous pouvez implémenter une routine pour sauvegarder vos données ou envoyer une quelconque information de débogage (par ex.par l'UART) et, ensuite, le système est remis à zéro.+• Le dernier mode combine les deux précédents ; l'interruption a lieu et vous pouvez implémenter une routine pour sauvegarder vos données ou envoyer une quelconque information de débogage (par ex. par l'UART) et, ensuite, le système est remis à zéro.
  
-Le WDT peut être activé deux manières :+Le WDT peut être activé de deux manières :
 • En installant un fusible matériel (WDTON) : dans ce mode, le WDT est réglé sur « remise à zéro du système » (system reset) et ne peut pas être modifié ou arrêté à la volée par logiciel. Seul le dépassement du WDT peut être empêché en le remettant à zéro. • En installant un fusible matériel (WDTON) : dans ce mode, le WDT est réglé sur « remise à zéro du système » (system reset) et ne peut pas être modifié ou arrêté à la volée par logiciel. Seul le dépassement du WDT peut être empêché en le remettant à zéro.
 • Le WDT peut être activé par un logiciel : dans ce cas, les trois modes sont disponibles. Pour le ATtiny13a, différentes durées peuvent être réglées (pour déclencher le dépassement). Dans cet article, nous n'avons besoin de connaître que deux des options de durée. • Le WDT peut être activé par un logiciel : dans ce cas, les trois modes sont disponibles. Pour le ATtiny13a, différentes durées peuvent être réglées (pour déclencher le dépassement). Dans cet article, nous n'avons besoin de connaître que deux des options de durée.
Ligne 51: Ligne 51:
 The ‘boot time’ by default is about 64 ms according to the factory default. In this setup, the microcontroller is just reset - no power-save mode is used just yet. The LED flashes relatively fast because of the short time the LED is set to on (64 ms). ** The ‘boot time’ by default is about 64 ms according to the factory default. In this setup, the microcontroller is just reset - no power-save mode is used just yet. The LED flashes relatively fast because of the short time the LED is set to on (64 ms). **
  
-Un clignotant à LED avec le watchdog+Un clignotant à LED avec la minuterie du watchdog
  
-Le WDT a besoin d'une séquence minutée, sans interruptions pour être modifié ou arrêté :+Le WDT a besoin d'une séquence minutée, sans interruption, pour être modifié ou arrêté :
 • D'abord, assurez-vous que les interruptions sont désactivées. • D'abord, assurez-vous que les interruptions sont désactivées.
 • Remettez à zéro le WDT. • Remettez à zéro le WDT.
Ligne 59: Ligne 59:
 • Activez le watchdog et réglez le prédiviseur de la minuterie du watchdog. • Activez le watchdog et réglez le prédiviseur de la minuterie du watchdog.
  
-Compilez le code présenté à droite et téléversez-le dans le ATtiny13a, connectez une LED sur PortB.1, et regardez ce qui se passe.+Compilez le code présenté à droite et téléversez-le dans le ATtiny13a, connectez une LED sur le PortB.1, et regardez ce qui se passe.
  
 Le programme démarre, la LED s'allume et active le WDT. Après 64 ms, le microcontrôleur redémarre. Le programme démarre, la LED s'allume et active le WDT. Après 64 ms, le microcontrôleur redémarre.
  
-Le temps de démarrage (boot time) par défaut est d'environ 64 ms d'après la valeur par défaut d'usine. Dans ce réglage, le microcontrôleur est seulement redémarré aucun mode d'économie d'énergie n'est encore utilisé. Le LED clignote relativement vite à cause du temps court pendant lequel celle-ci est allumée (64 ms).+Le temps de démarrage (boot time) par défaut est d'environ 64 ms d'après la valeur par défaut d'usine. Dans ce réglage, le microcontrôleur est seulement redémarréaucun mode d'économie d'énergie n'est encore utilisé. La LED clignote relativement vite à cause du temps court pendant lequel celle-ci est allumée (64 ms).
  
 **Powersave modes **Powersave modes
Ligne 71: Ligne 71:
 Modes d'économie d'énergie Modes d'économie d'énergie
  
-Le ATtiny13a a trois modes différents d'économie d'énergie, chacun d'eux ayant une consommation plus ou moins grande de l'alimentation. Par ordre de consommation de courant (de la plus forte à la plus faible), on trouve : Idle (inactif), ADC Noise Reduction (réduction du bruit de l'ADC) et et Power-down (coupure de l'alimentation). Le choix dépend du cas et de ce que vous voulez réaliser avec votre dispositif. Pour l'instant, nous utiliserons le mode de coupure de l'alimentation. les autres modes de mise en sommeil seront expliqués dans un prochain article, quand nous en aurons besoin. Pour vous donner une idée du bas niveau d'alimentation obtenu, regadez un peu le site de Nick Gammon (Réf. n°5) ; il a fait quelques mesures pour nous.+Le ATtiny13a a trois modes différents d'économie d'énergie, chacun d'eux ayant une consommation plus ou moins grande de l'alimentation. Par ordre de consommation de courant (de la plus forte à la plus faible), on trouve : Idle (inactif), ADC Noise Reduction (réduction du bruit de l'ADC) et Power-down (coupure de l'alimentation). Le choix dépend du cas et de ce que vous voulez réaliser avec votre dispositif. Pour l'instant, nous utiliserons le mode de coupure de l'alimentation. les autres modes de mise en sommeil seront expliqués dans un prochain article, quand nous en aurons besoin. Pour vous donner une idée du plus bas niveau d'alimentation obtenu, regardez un peu le site de Nick Gammon (Réf. n°5) ; il a fait quelques mesures pour nous.
  
 **Energy efficient transmitter **Energy efficient transmitter
Ligne 81: Ligne 81:
 Transmetteur économe en énergie Transmetteur économe en énergie
  
-Complétons le code du dernier numéro et utilisons le mode d'économie d'énergie, ainsi que le watchdog pour faire une pause dans la transmission. Le microcontrôleur demande environ 64 ms pour démarrer, puis nous réglons la minuterie du watchdog. Ensuite, le programme transmet les valeurs de la photorésistance. Le transmission elle-même prend environ 48 ms. La version précédente du programme attend 8 s sans rien faire mais continue à tirer sur l'alimentation !+Complétons le code du dernier numéro et utilisons le mode d'économie d'énergie, ainsi que la minuterie du watchdog pour faire une pause dans la transmission. Le microcontrôleur demande environ 64 ms pour démarrer, puis nous réglons la minuterie du watchdog. Ensuite, le programme transmet les valeurs de la photorésistance. La transmission elle-même prend maintenant environ 48 ms. La version précédente du programme attend 8 s sans rien fairemais continue à tirer sur l'alimentation !
  
 Voici (page suivante, à droite) comment nous optimisons ceci en utilisant le mode de mise en sommeil par coupure de l'alimentation et la minuterie du watchdog. Voici (page suivante, à droite) comment nous optimisons ceci en utilisant le mode de mise en sommeil par coupure de l'alimentation et la minuterie du watchdog.
Ligne 91: Ligne 91:
 Only a minimum of garbage is received, so a data logging program could easily pick up the lines with the wanted data and safely omit the unwanted bytes. ** Only a minimum of garbage is received, so a data logging program could easily pick up the lines with the wanted data and safely omit the unwanted bytes. **
  
-Au premier démarrage après la mise sous tension du microcontrôleur, le microcontrôleur est initialisé. Puis la minuterie du watchdog est positionnée dans le mode de remise à zéro et le programme principale mesure la LDR et envoie les valeurs par l'émetteur. Ensuite, le Timer et L'ADC sont arrêtés, et le mode d'économie d'énergie par mise en sommeil est activé. Après ça, le microcontrôleur est mis en sommeil. Après 8 secondes, il reçoit l'ordre de redémarrer, et cette procédure se répète toutes les 8 secondes.+Au premier démarrage après la mise sous tension du microcontrôleur, le microcontrôleur est initialisé. Puis la minuterie du watchdog est positionnée dans le mode de remise à zéro et le programme principal mesure la LDR et envoie les valeurs par l'émetteur. Ensuite, le Timer et l'ADC sont arrêtés, et le mode d'économie d'énergie par mise en sommeil est activé. Après ça, le microcontrôleur est mis en sommeil. Après 8 secondes, il reçoit l'ordre de redémarrer, et cette procédure se répète toutes les 8 secondes.
  
 Voici un enregistrement des données sur la ligne série, avec le nouveau récepteur en activité, et la nouvelle version du programme dans le microcontrôleur. Le résultat (page suivante, en haut à droite) est bon (voir les instants 00:13:01 pour les premières données et 00:13:09 pour les secondes données, surlignées en noir). Voici un enregistrement des données sur la ligne série, avec le nouveau récepteur en activité, et la nouvelle version du programme dans le microcontrôleur. Le résultat (page suivante, en haut à droite) est bon (voir les instants 00:13:01 pour les premières données et 00:13:09 pour les secondes données, surlignées en noir).
  
-Seulement un minimum de déchet est reçu ; ainsi, un programme d'enregistrement des données peut aisément extraire les lignes avec les données voulues et omettre les lignes non désirées.+Un minimum de déchet est reçu ; ainsi, un programme d'enregistrement des données peut aisément extraire les lignes avec les données voulues et omettre les lignes non désirées.
  
 **Breadboard circuitry **Breadboard circuitry
Ligne 105: Ligne 105:
 Circuit sur la plaque d'essai Circuit sur la plaque d'essai
  
-La partie émetteur est exactement la même que dans le dernier article ; aussi, je me passe de la décrire à nouveau. Deux picots supplémentaires (par rapport au dispositif précédent) dont à connecter sur le récepteur :+La partie émetteur est exactement la même que dans le dernier article ; aussi, je me passe de la décrire à nouveau. Deux picots supplémentaires (par rapport au dispositif précédent) sont à connecter sur le récepteur :
  
-Sur la partie gauche, il y a un connecteur pour l'antenne (un fil d'environ 17 cm suffit) et la masse (GND). Sur le droite, se trouvent GND, DATA (données) et Vcc (+5V). Les deux GND doivent être connectés au même GND avec un fil en Y. La borne DATA va vers le connecteur Rx du convertisseur série-vers-USB. Du fait de la forme du nouveau récepteur, j'ai placé des cavaliers jusqu'aux connecteurs et l'ai mis de côté dans un endroit tranquille de ma zone de travail. Je ne suis peut-être pas un électricien de valeur, mais ça marche bien.+Sur la partie gauche, il y a un connecteur pour l'antenne (un fil d'environ 17 cm suffit) et la masse (GND). Sur la droite, se trouvent GND, DATA (données) et Vcc (+5V). Les deux GND doivent être connectés au même GND avec un fil en Y. La borne DATA va vers le connecteur Rx du convertisseur série-vers-USB. Du fait de la forme du nouveau récepteur, j'ai placé des cavaliers jusqu'aux connecteurs et je l'ai mis de côté dans un endroit tranquille de ma zone de travail. Je ne suis peut-être pas un électricien confirmé, mais ça marche bien.
  
 **Conclusion **Conclusion
Ligne 119: Ligne 119:
 Le module récepteur simple que j'avais trouvé au début (sans grande recherche sur le sujet) avait fait son boulot pendant les premiers essais, mais je trouve que son remplaçant est meilleur. Aussi, si vous vous apprêtez à acheter du matériel, je vous recommande le module émetteur du dernier numéro (FS-1000A) et le module récepteur de celui-ci (RX88, v2). Cependant, je vous recommande vivement de faire vos propres recherches ; il y a peut-être de meilleurs modules pour les deux usages. Le module récepteur simple que j'avais trouvé au début (sans grande recherche sur le sujet) avait fait son boulot pendant les premiers essais, mais je trouve que son remplaçant est meilleur. Aussi, si vous vous apprêtez à acheter du matériel, je vous recommande le module émetteur du dernier numéro (FS-1000A) et le module récepteur de celui-ci (RX88, v2). Cependant, je vous recommande vivement de faire vos propres recherches ; il y a peut-être de meilleurs modules pour les deux usages.
  
-Le nouveau programme économise l'énergie et, parce que certaines lignes de code ont aussi été économisées, il reste un peu de place sur le microcontrôleur pour une optimisation plus poussée et d'autres idées. Dans le prochain article, je prévois de préparer un petit programme enregistreur de données du côté du PC etd'étendre le logiciel de transmission pour envoyer des données dans des intervalles de temps plus longs et de récupérer des valeurs de la « vraie vie ».+Le nouveau programme économise l'énergie et, parce que certaines lignes de code ont aussi été économisées, il reste un peu de place sur le microcontrôleur pour une optimisation plus poussée et d'autres idées. Dans le prochain numéro, je prévois de préparer un petit programme enregistreur de données du côté du PC et d'étendre le logiciel de transmission pour envoyer des données dans des intervalles de temps plus longs et de récupérer des valeurs de la « vraie vie ».
  
 **Sources **Sources
Ligne 149: Ligne 149:
 La minuterie de watchdog AVR expliquée http://microchipdeveloper.com/8avr:avrwdt La minuterie de watchdog AVR expliquée http://microchipdeveloper.com/8avr:avrwdt
  
-Note d'application pour la minuterie de watchdog+Note d'application pour la minuterie du watchdog
 http://ww1.microchip.com/downloads/en/AppNotes/doc2551.pdf http://ww1.microchip.com/downloads/en/AppNotes/doc2551.pdf
  
Ligne 158: Ligne 158:
 https://sourceforge.net/p/gcbasic/discussion/579126/thread/f48c95af/ https://sourceforge.net/p/gcbasic/discussion/579126/thread/f48c95af/
  
-Éléments mathématiques pour l'économie d'énergie+Éléments mathématiques pour économiser l'énergie
 https://www.gammon.com.au/power https://www.gammon.com.au/power
  
issue138/greatcowbasic.1541923423.txt.gz · Dernière modification : 2018/11/11 09:03 de d52fr