[Programmation] MSP430 : Utiliser le TimerA1 à la place du TimerA0
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

MSP430 : Utiliser le TimerA1 à la place du TimerA0



  1. #1
    invite009e8a51

    MSP430 : Utiliser le TimerA1 à la place du TimerA0


    ------

    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
    Nom : Capture.PNG
Affichages : 170
Taille : 85,2 Ko

    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
           */
    }
    Est-ce que vous seriez trouver le problème?

    Je vous remercie d'avance

    -----

  2. #2
    vincent66

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonsoir...

    N'est-il pas question qu'un des deux timers soit 8bits et l'autre 16 bits...?
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    invite009e8a51

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonsoir,

    Merci pour votre aide, mais je ne crois pas que cela soit ça.

    Nom : Capture.PNG
Affichages : 136
Taille : 221,8 Ko

    J'ai fais plusieurs modification et je suis revenu en arrière et là, le servomoteur bouge. Mais je ne contrôle pas son angle, mon rapport cyclique n'est pas pris en compte ..
    Code:
    TA0CCR1 = (angle*10.556) + 600; // Rapport cyclique en fonction de l'angle

  4. #4
    invite009e8a51

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonsoir,

    Quelqu'un aurait une idée? Je ne trouve pas de solution. Est-ce que je peux utiliser le timerA1 sur un port 1.X ?

  5. A voir en vidéo sur Futura
  6. #5
    Vincent PETIT
    Animateur Électronique

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonjour,
    Tu peux nous donner la référence exacte du micro.
    Là où il n'y a pas de solution, il n'y a pas de problème.

  7. #6
    Vincent PETIT
    Animateur Électronique

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Y a t-il une erreur à la compilation ?
    Là où il n'y a pas de solution, il n'y a pas de problème.

  8. #7
    invite009e8a51

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonsoir,

    J'ai le MSP430G2553.
    Non, je n'ai aucune erreur de compilation

  9. #8
    invite009e8a51

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    J'ai fait de nouveaux tests et voici ce que j'ai découvert.

    Pour rappel, ce programme fonctionne avec le timerA0, mais pas avec le timerA1.

    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
    
    
        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;
     */
    
    
    
       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

    Le comportement de mon timerA1 est de faire tourner mon servomoteur, d'une dizaine de degré (non contrôlable). Et si j'enlève TA1CCR0 et TA1CCR1, le comportement reste le même.
    Code:
    /*
     *  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;
     */

  10. #9
    Vincent PETIT
    Animateur Électronique

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonjour,
    Le Timer1 est connecté au port 2 et non au port 1 (c'est le Timer0 qui est dessus)

    P1.6 n'est pas connectable au Timer1, il est connecté au TA0.1


    P2.3 est connectable au Timer1 => TA1.0
    ou encore
    P2.1 est connectable au Timer1 => TA1.1
    etc..

    Les possibilités d'affectation sont à la page 6 et 7 de la datasheet https://www.ti.com/lit/ds/symlink/ms...secase%253DGPN
    Là où il n'y a pas de solution, il n'y a pas de problème.

  11. #10
    invite009e8a51

    Re : MSP430 : Utiliser le TimerA1 à la place du TimerA0

    Bonsoir,

    D'accord. Merci pour l'information. Je vais faire autrement alors

Discussions similaires

  1. [Analogique] Utiliser un potentiomètre à la place d'un capteur à effet hall
    Par inviteab9cd4e2 dans le forum Électronique
    Réponses: 6
    Dernier message: 17/06/2019, 19h04
  2. Groupe électrogène : comment utiliser le courant EDF à la place ? [résolu]
    Par invite0dea81ba dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 16/02/2013, 11h43
  3. Utiliser le bambou en lieux et place du bois
    Par invite78e46e68 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 9
    Dernier message: 27/09/2012, 16h06
  4. Utiliser un Buz20 à la place d'un 2N3055
    Par electron+ dans le forum Électronique
    Réponses: 11
    Dernier message: 25/06/2011, 17h36
  5. Puis je utiliser ce transfo 12v à la place de celui la ?
    Par invite147bfd9f dans le forum Électronique
    Réponses: 2
    Dernier message: 05/10/2008, 22h48
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...