Gamoover

Forums " WORKSHOP" => Jamma, cablages, contrôleurs, interfaces & hacks => Microcontrôleurs et électronique => Discussion démarrée par: KodeIn le Vendredi 27 Mai 2011, 10:09:27 am

Titre: Launchpad tuto 004 : Timers et fréquence du µC.
Posté par: KodeIn le Vendredi 27 Mai 2011, 10:09:27 am
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! :-\
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
|
BitA ~BitA
0
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-srv022.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.  :D

Les MSP 430 possèdent 3 lignes d'horloge :

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-srv022.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 contacter
Au 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 ;) ).
Titre: Launchpad Tuto-004 : Les Timers.
Posté par: Iro le Vendredi 27 Mai 2011, 10:16:18 am
c'est honteux !!!
Titre: Launchpad Tuto-004 : Les Timers.
Posté par: KodeIn le Vendredi 27 Mai 2011, 10:20:45 am
Même pas honte môssieur!
3 tutos et un dossier en un mois, si c'est pas la classe internationale, ça :p
Titre: Launchpad Tuto-004 : Les Timers.
Posté par: Iro le Vendredi 27 Mai 2011, 10:24:11 am
Chapeau et merci :-*
Titre: Launchpad Tuto-004 : Timers et fréquence du µC.
Posté par: KodeIn le Vendredi 03 Juin 2011, 11:38:55 am
Désolé pour l'abandon temporaire de ce tuto, j'ai pas mal de choses qui me bouffent tout mon temps, ces dernières semaines.
Dès que je peux, je m'y remet pour le terminer.

Fin Août, je récupère du matos (fer à souder, multimètre, breadboard, …) donc, je pourrai m'amuser à faire des petits montages sympa et vous faire partager mes "découvertes" ;)


Ayant trouvé une intérim qui me permet de mettre du steak dans l'assiette et plus des pâtes au beurre, je suis un peu pris par le boulot. (j'y ai d'ailleurs retrouvé un membre de ce forum)
De plus, je suis en train de bosser mon permis moto pour être moins dépendant des transports en commun.
Rouler sur mon clone de Dax en 125cc pour aller et revenir du boulot aidera beaucoup à gagner du temps et à m'occuper de finaliser ce tuto et bien d'autres choses.

Veuillez donc me pardonner pour ma disparition subite, mais momentanée.
Titre: Launchpad tuto 004 : Timers et fréquence du µC.
Posté par: KodeIn le Vendredi 24 Février 2012, 00:34:16 am
Salut!

Toujours pas pu récupérer le matos que je devais chopper l'été dernier…
Je n'ai pas abandonné les MSP430, c'est toujours en pause.

Par contre, je suis en train d'approfondir mes compétences en C/C++ via l'apprentissage de la librairie SDL.
Dans le but de réaliser mon rêve : créer un jeu vidéo (platform-rpg 2D à la castlevania SotN).
Ça a l'avantage de ne nécessiter aucun matériel supplémentaire. Matériel qui me manque à l'heure actuelle pour commencer à utiliser ces µC dans des applications plus utiles que les trucs théoriques qui ont été faites jusqu'ici.