Skyduino:~#
Articles
Autre, C/C++, programmation

[MSP430] Blink 1 seconde avec le quartz 32KHz d’origine

Bonjour tout le monde !

Aujourd’hui un petit article pour la Launchpad MSP430.

Je viens d’achever un morceau de code permettant de faire clignoter une led à intervalle de 1 seconde en utilisant le quartz 32KHz fourni de base avec la launchpad.
C’est un code très simple, mais très intéressant car la gestion des interruptions est assez spécial avec msp430-gcc.

Bref, pas de quoi casser trois pattes à un canard, voilà le code :

#include <msp430g2553.h>  // Include des registres du MSP430G2553
#include <legacymsp430.h> // Include des vecteurs d'interruption

// Programme principal
void main(void) {
	WDTCTL = WDTPW | WDTHOLD; // Arrêt du watch-dog

	BCSCTL1 |= DIVA_3;        // Horloge = ACLK / 8
	BCSCTL3 |= XCAP_3;        // Condensateur interne de 12.5pF pour le quartz 32KHz

	P1DIR |= BIT0;            // P1.0 en sortie (LED 1) (1 = sortie, 0 = entrée)
	P1OUT |= BIT0;            // P1.0 = LOW (si BIT0 = 1 -> led éteint, si BIT0 = 0 -> led allumée)

	CCTL0 = CCIE;             // Interruption CCR0 activé
	CCR0 = 512;               // 512 tick du quartz 32KHz = 1 seconde
	TACTL = TASSEL_1 | ID_3 | MC_1;  // Horloge du TIMER 1 = ACLK, division par 8, front montant

	_BIS_SR(LPM3_bits | GIE); // Mise en sommeil avec interruptions
}

// Interruption du TimerA
interrupt(TIMER0_A0_VECTOR) tick(void) {
	P1OUT ^= BIT0;		      // Toggle la led
}

Celui ci se compile en utilisant la commande suivante :
msp430-gcc -Os -mmcu=msp430g2553 -o blink_1s.hex blink_1s.c

Vous remarquerez que l’include de legacymsp430.h se trouve APRÈS l’include de msp430g2553.h et que je spécifie
-mmcu=msp430g2553 en plus lors de la compilation.
Sans ces deux points la compilation échouera lamentablement (j’ai perdu un temps fou à cause de ça).

On obtient un programme de 166 octets ce qui est pas mal pour un si petit code m’enfin bon …

En espérant que cela aidera d’autres bidouilleurs travaillant sur MSP430 😉

Ps: On pourrait faire une jolie horloge RTC avec ce principe, et en passant en mode basse conso en plus, … humm

Discussion

8 réflexions sur “[MSP430] Blink 1 seconde avec le quartz 32KHz d’origine

  1. Bonjour,

    Je viens de trouver votre code qui me plaît beaucoup car je me posais un peu la même question.
    Pour développer sur LaunchPad j’utilise Energia (un fork de Arduino).
    J’aimerais bien disposer de l’horloge RTC dans mon code principal mais la librairie de TI est en assembleur pour IAR ou CCV qui ne compile pas avec le GCC. J’ai essayé de porter le code mais je suis trop nul pour ça.
    Je vais essayer de créer une librairie à partir de votre code pour « lire » les ticks. Cela dit je n’ai aucune idée de comment faire pour l’instant…
    Si vous avez des conseils, je suis preneur.
    Merci!

    Yan.

    Publié par XV4Y (@XV4Y) | 15 mai 2012, 4 h 46 min
  2. Chez moi c’est tres lent bien plus que une seconde !! comment cela est il possible?

    Publié par Bruno | 11 mars 2013, 16 h 28 min
  3. Exact c’est bien ca!!
    Mais comment paramétrer en 16MHz avec le RC? Quelle est la bonne doc pour ca?

    Publié par Bruno | 11 mars 2013, 22 h 44 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.