Now loading… Please wait.Timer et signal d'horloge.Grâce au timer, nous allons, dans un premier temps, faire clignoter nos leds (on y revient toujours, quand on débute, c'est la solution la plus simple).
Ensuite j'espère arriver à générer un signal PWM - toujours grâce au timer - pour modifier l'intensité lumineuse de notre led.
Tout d'abord, un rappel des opérateurs bitwise.Parce que moi, je ne m'en lasse pas!
![Undecided :-\](http://www.gamoover.net/Forums/Smileys/guntar/undecided.gif)
AND : & | | | OR : | | | | XOR : ^ | | | NOT : ~ |
BitA | BitB | BitA&BitB | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 |
| | | BitA | BitB | BitA|BitB | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| | | BitA | BitB | BitA^BitB | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
| | | |
Et n'oubliez pas que ces opérations s'effectuent bit à bit!
Les éléments du MSP430G2231 que nous utiliserons lors de ce tuto.![](http://hico-srv004.pixhotel.fr/sites/default/files/gamoovernet/20110528125756-KodeIn-tuto4.png)
Pourquoi modifier la fréquence du signal d'horloge?Les MSP430 sont équipés d'un oscillateur interne, que Ti nomme le Digitally Controlled Oscillator - ou DCO -.
Cet oscillateur est calibré de manière logicielle à 1MHz avec ±3% d'erreur (le réglage est disponible via CALDCO_1MHz). A partir des MSP430G2232, le calibrage est fait pour 8, 12 et 16MHz.
La précision du DCO est largement suffisante pour les applications où la précision n'est pas essentielle. Si une grande précision est nécessaire, il sera indispensable d'équiper son µC avec un cristal externe de 32KHz - LFXT1CLK, Low Frequency eXTernal CLocK 1 -.
(certains MSP430 peuvent avoir jusqu'à 2 sources d'horloge externes)
La fréquence de 1MHz du DCO est le signal d'horloge utilisé par défaut - si rien n'est définit dans le code - par le MSP430 pour le CPU.
Cette fréquence est économe en énergie tout en conservant une vélocité tout à fait acceptable pour la plupart des utilisations "normales".
(Les MSP430 possèdent de nombreux modes de fonctionnement différents permettant de minimiser la consommation du µC, ça fera l'objet d'un autre tuto)
Mais parfois, il est nécessaire d'avoir un peu plus de "punch" et comme pour nos ordinateurs, des Hz en plus permettront une amélioration des performances du processeur.
Sachant que les MSP430 de la value line peuvent tous grimper jusqu'à 16MHz, on a de la marge à disposition.
![Cheesy :D](http://www.gamoover.net/Forums/Smileys/guntar/cheesy.gif)
Les MSP 430 possèdent 3 lignes d'horloge :
- MCLK - Master CLocK, pour le CPU.
La source de ce signal peut être le DCO ou des sources externes.
C'est le signal d'horloge ayant le plus de sources possibles. - SMCLK - SubMaster CLocK, utilisé pour la majorité des périphériques.
Sa source peut être - ACLK - Auxiliary CLocK, c'est un signal d'horloge optionnel.
Sa source est un cristal basse fréquence externe au µC ou, si ce cristal n'est pas présent, l'oscillateur basse fréquence - LF - interne au µC.
Cette ligne est utilisée pour les modes de fonctionnement basse consommation.
Comment modifier la fréquence du signal d'horloge?Il y a plusieurs éléments qui vont intervenir, peu importe l'oscillateur utilisé, comme les registres BCSCTL1 et BCSCTL2 (Basic Clock System ConTroL).
Pour le DCO, le registre permettant de modifier la fréquence est DCOCTL - DCO ConTroL -, celui-ci est divisé en deux parties.
![](http://hico-srv004.pixhotel.fr/sites/default/files/gamoovernet/20110529060553-KodeIn-DCOCTL.png)
Les 3 bits de DCOx nous permettent de choisir la fréquence.
Les 5 bits de MODx contrôlent la modulation entre la fréquence sélectionnée par DCOx et celle directement supérieure. De manière à obtenir une plage de fréquence plus diversifiée.
Pourquoi utiliser un timer?Un timer a de nombreuses fonctionnalités, il permet :
- de "compter" le temps jusqu'à une valeur donnée, et déclencher une interruption.
- de générer un signal PWM -pulse width modulation -.
- de comparer des intervalles de temps - et donc de capturer ceux-ci - par le biais de ses registres.
Si on repart sur nos leds qu'on souhaite faire clignoter, qu'est-ce que l'utilisation du timer va nous apporter?
Le "compteur à interruption" permet de se passer de cette boucle for infinie, mais surtout du __delay_cycles(), qui va occuper le µC pour… ne rien faire, juste perdre du temps.
La génération de signal PWM nous permet d'envisager des transitions progressives entre led allumée et led éteinte.
La comparaison d'intervalle nous permettrait de définir la rapidité de clignotement des leds par le biais du bouton.
Ce sont juste des exemples simples, mais il y a bien d'autres applications possibles.
Méthodes pour me contacterAu cas où vous rencontriez une embûche, si vous voulez discuter ou approfondir les explications ou les explorations à propos de ces tutos, voici quelques méthodes pour me contacter :
- par ce sujet
- par MP
- par mail
- par jabber
- par msn
J'utilise la même adresse mail pour msn et jabber: kodein AT reflexd.com (j'essaye d'éviter les moissonneurs automatiques d'adresse
![Wink ;)](http://www.gamoover.net/Forums/Smileys/guntar/wink.gif)
).