issue138:greatcowbasic
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
issue138:greatcowbasic [2018/11/11 08:48] – d52fr | issue138: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. | 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. | ||
- | 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 | + | 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 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' | + | 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' |
**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 |
- | Imaginez une situation où vous programmez un microcontrôleur pour un système critique. | + | Imaginez une situation où vous programmez un microcontrôleur pour un système critique. |
- | Un logiciel peut toujours contenir des défauts, ou, peut-être, certaines conditions | + | Un logiciel peut toujours contenir des défauts, ou, peut-être, certaines conditions |
**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' | + | La minuterie du watchdog a un oscillateur séparé, intégré à la puce, tournant à 128 kHz, qui fonctionne comme une minuterie de dépassement. Par l' |
- | • 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 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 | + | • 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' | + | • Le dernier mode combine les deux précédents ; l' |
- | Le WDT peut être activé deux manières : | + | Le WDT peut être activé |
• 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' | • 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' | ||
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 | + | Le WDT a besoin d'une séquence minutée, sans interruption, |
• D' | • D' | ||
• 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' | Le programme démarre, la LED s' | ||
- | Le temps de démarrage (boot time) par défaut est d' | + | Le temps de démarrage (boot time) par défaut est d' |
**Powersave modes | **Powersave modes | ||
Ligne 71: | Ligne 71: | ||
Modes d' | Modes d' | ||
- | Le ATtiny13a a trois modes différents d' | + | Le ATtiny13a a trois modes différents d' |
**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' | + | Complétons le code du dernier numéro et utilisons le mode d' |
Voici (page suivante, à droite) comment nous optimisons ceci en utilisant le mode de mise en sommeil par coupure de l' | Voici (page suivante, à droite) comment nous optimisons ceci en utilisant le mode de mise en sommeil par coupure de l' | ||
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, | + | Au premier démarrage après la mise sous tension du microcontrôleur, |
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' | + | Un minimum de déchet est reçu ; ainsi, un programme d' |
**Breadboard circuitry | **Breadboard circuitry | ||
Ligne 105: | Ligne 105: | ||
Circuit sur la plaque d' | Circuit sur la plaque d' | ||
- | 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) | + | 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) |
- | Sur la partie gauche, il y a un connecteur pour l' | + | Sur la partie gauche, il y a un connecteur pour l' |
**Conclusion | **Conclusion | ||
Ligne 117: | Ligne 117: | ||
Conclusion | Conclusion | ||
- | Le module récepteur simple que j' | + | Le module récepteur simple que j' |
+ | |||
+ | Le nouveau programme économise l' | ||
**Sources | **Sources | ||
If you want to download the sources instead of copy-pasting it, you can now check it out with git or an SVN client. Have a look at goo.gl/ | If you want to download the sources instead of copy-pasting it, you can now check it out with git or an SVN client. Have a look at goo.gl/ | ||
+ | |||
+ | Sources | ||
+ | |||
+ | Si vous voulez télécharger les sources au lieu de les copier/ | ||
**References | **References | ||
Ligne 139: | Ligne 145: | ||
https:// | https:// | ||
+ | Références | ||
+ | |||
+ | La minuterie de watchdog AVR expliquée http:// | ||
+ | |||
+ | Note d' | ||
+ | http:// | ||
+ | |||
+ | Calculateur de fusibles avec une information globale sur les valeurs d' | ||
+ | http:// | ||
+ | |||
+ | Inspiration pour un code initial simple | ||
+ | https:// | ||
+ | |||
+ | Éléments mathématiques pour économiser l' | ||
+ | https:// | ||
+ | |||
+ | Notice technique du RXX88 | ||
+ | https:// | ||
**Acknowledgement | **Acknowledgement | ||
I wish to thank Evan Venn (Anobium) from the Great Cow BASIC Team for his insights and valuable hints.** | I wish to thank Evan Venn (Anobium) from the Great Cow BASIC Team for his insights and valuable hints.** | ||
+ | |||
+ | Remerciements | ||
+ | |||
+ | Je souhaite remercier Evan Venn (Anobium) de l' | ||
issue138/greatcowbasic.1541922504.txt.gz · Dernière modification : 2018/11/11 08:48 de d52fr