Bonjour,
J'ai réalisé un timerA0 pour contrôler le mouvement d'un moteur pas à pas.
J'ai malheureusement, utilisé le timerA0 pour faire une PWM pour contrôler un servomoteur (P1.6 en sortie).
Je voudrais donc le remplacer par le timerA1, mais je n'y arrive pas. Par contre, avec le timerA0, il fonctionne correctement Je ne vois pas où serait mon erreur.
Cette partie ne change pas entre le timerA0 et A1.
Code:P1DIR |= BIT6; // P1.6 en sortie P1SEL |= BIT6; // selection fonction TA1.1 P1SEL2 &= ~BIT6
Est-ce que vous seriez trouver le problème?Code:#include <msp430.h> /** * main.c */ void main(void) { WDTCTL = WDTPW | WDTHOLD; BCSCTL1= CALBC1_1MHZ; //frequence d’horloge 1MHz DCOCTL= CALDCO_1MHZ; // " P1DIR |= BIT6; // P1.6 en sortie P1SEL |= BIT6; // selection fonction TA1.1 P1SEL2 &= ~BIT6; // selection fonction TA1.1// stop watchdog timer P1DIR |=BIT3; P1REN |=BIT3; P1OUT|=BIT3; servomoteur(180); _delay_cycles(2000000); servomoteur(0); } void servomoteur(int angle) { TA1CTL = TASSEL_2 | MC_1; // source SMCLK pour TimerA (no 2), mode comptage Up TA1CCTL1 |= OUTMOD_7; // activation mode de sortie n°7 TA1CCR0 = 20000; // determine la periode du signal TA1CCR1 = (angle*10.556) + 600; // Position haute 180° /* Avec ces réglages, cela fonctionne * TA0CTL = TASSEL_2 | MC_1; // source SMCLK pour TimerA (no 2), mode comptage Up TA0CCTL1 |= OUTMOD_7; // activation mode de sortie n°7 TA0CCR0 = 20000; // determine la periode du signal TA0CCR1 = (angle*10.556) + 600; // Rapport cyclique en fonction de l'angle */ }
Je vous remercie d'avance
-----