Bonjour,
Je suis actuellement dans un cursus de formation continue ingénieur généraliste, j'ai un module d'Electronique Analogique et Numérique à valider.
Pour nous entrainer, nous avons un exercice de programmation a effectuer,dont voici l'énoncé :
J'ai démarré le codage avec l'allumage de la LED verte pour 5s, mais je ne sais pas comment créer le cycle ...A l'aide du LaunchPad, on souhaite réaliser un modulateur de largeur d’impulsion
avec le fonctionnement suivant.
La LED verte clignote et reste allumée pendant 0,5 seconde un rapport cyclique de
20%.
- Chaque appui sur le Bouton Poussoir augmente le rapport cyclique de 10%,
la LED rouge valide l’appui du Bouton Poussoir.
- Lorsque le rapport cyclique est à 80%, l’appui sur le Bouton Poussoir fait
retomber le rapport cyclique à 20%.
- Et le cycle recommence.
Voici mon code :
Si une bonne âme pouvait me mettre sur la piste et aussi vérifier mon démarrageCode:#include <msp430.h> /*------------------------------------------------------------------- Declaration des variables -------------------------------------------------------------------*/ #define LED_VERTE BIT6 // LED2 0x40 #define LED_ROUGE BIT0 // LED1 0x01 #define BP BIT3 // Bouton poussoir 0x08 #define LED_DIR P1DIR #define LED_IN P1IN #define LED_OUT P1OUT #define BUTTON BIT3 int tempo = 0; /*------------------------------------------------------------------- Programme principal -------------------------------------------------------------------*/ void main(void) { WDTCTL = WDTPW + WDTHOLD; // desactivation du watchdog LED_DIR |= (LED_VERTE + LED_ROUGE); // initialisation des sorties LED_OUT &= ~ (LED_ROUGE + LED_VERTE); // LED OFF while (1) // Boucle infinie { if ((LED_IN & BP) == 0) // Si appui sur Bouton poussoir { LED_OUT = LED_VERTE; _delay_cycles(5000000); } else { LED_OUT = 0x00; // Activation des 2 LED } } }
MERCI d'avance
-----