Problème de signal carré avec un timer
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Problème de signal carré avec un timer



  1. #1
    invite99a31ef7

    Problème de signal carré avec un timer


    ------

    Bonjour à tous !

    Je suis en traind e concevoir un quadritotor, et j'ai un gros problème pour générer un signal carré à l'aide du TMR0 d'un pic 16F877.
    Mon compilateur est MikroC.

    J'ai configuré le registre INTCON comme ceci : 10100000
    J'ai mis le bit 7 à 1 pour valider toutes les interruptions.
    J'ai mis le bit 5 à 1 pour valider les interruptions lors débordement du tmr0.

    J'ai configuré le registre OPTION comme ceci : 10010000

    Voici mon r=programme en C :

    Code:
    void main ()
    {
    
    PORTC=0;
    TRISC=0; //En sortie
    
      PORTA = 0;
      TRISA = 1;                 //PORTA en entrée
    
    
      OPTION_REG=0b10010000; // Timer
      INTCON=0b10100000;
    
    
    
    
    
                while (1)
                
                {
    
    
                 
                ////////////////impulsion/////////////////////////////////////////
                
                  if (compteur1 == 117 && impulsionC1 == 1) //Compteur1 = PWM1 est augmenté
    
                 {
                 
                  PORTC.F1=0;
    
                  compteur1=0;
                  impulsionC1=0;
    
                 }
                 
                  if (compteur2 == 112 && impulsionC2 == 1) //Compteur2 = PWM2 est réduit
    
                 {
    
                  PORTC.F2=0;
    
                  compteur2=0;
                  impulsionC2=0;
    
                 }
                 
                 //////////////////////////////////////////////////////////////////
                 
                 ///////////////temps de latence///////////////////////////////////
                 
                 if (compteur1 == 1445 && impulsionC1 == 0)
                 
                 {
                 
                  PORTC.F1=1;
    
                  compteur1=0;
                  impulsionC1=1;
                 
                 }
                 
                 if (compteur2 == 1451 && impulsionC2 == 0)
    
                 {
    
                  PORTC.F2=1;
    
                  compteur2=0;
                  impulsionC2=1;
    
                 }
                 
                 //////////////////////////////////////////////////////////////////
    
             
                 
    
    
           }
    
    
    
    
    
    }
    Le problème, c'est que j'ai 0.1 V qui sort alors que je devrai avoir 0.40V. En et + à l'oscilloscope mon signal b'est pas carré (c'est un signal de "crotte").

    Suis-je assez clair ? Merci d'avance pour vos réponses !

    -----

  2. #2
    invitee5da1686

    Re : Problème de signal carré avec un timer

    salut je connais pas beaucoup le C mais je vois plusieur truc

    as-tu mit a 1 le bit PEIE a 1 pour autoriser les interruption peripheriques ?

    if (compteur1 == 1445 && impulsionC1 == 0)
    ta varible compteur1 ne serait pas de 8 bit ?

    ta solution est pas bonne du tout ,et je voi pas comment tu increment t'es compteurC1 et C2 ,de plus tu oubli d'effacer le flag T0IF ...

    apparament tu veut avoir 2 signal carre de frequence differente ?

    je connais pas le C donc je te donne une idee et je ne dit pas que c'est la meilleure...



    Code:
    interruptions timer0
    
    j'efface le FLAG T0IF (Timer 0 Interrupt Flag )
    T0IF = 0
    
    je test si mon compteur1 est arriver a la valeur voulue
    if compteur1 => 100 then
    
    j'efface mon compteur1
    clear compteur1
    
    j'inverse ma pin 
    toggle portc.0
    
    fin de condition
    end if
    
    
    
    je test si mon compteur2 est arriver a la valeur voulue
    if compteur2 => 100 then
    
    j'efface mon compteur2
    clear compteur2
    
    j'inverse ma pin 
    toggle portc.1
    
    fin de condition
    end if
    
    j'incremente mes compteurs
    inc compteur1
    inc compteur2
    
    fin d'interruption timer0

  3. #3
    invite99a31ef7

    Re : Problème de signal carré avec un timer

    Salut morpheus, merci de ton aide.

    J'ai oublié de préciser le programme des interruptions :

    {
    compteur1 = compteur1 + 10;
    compteur2 = compteur2 + 10;
    }

    apparament tu veut avoir 2 signal carre de frequence differente ?
    C'est exact
    Pour ma variable, il n'ya pas de problèmes.

    Je pense que le problème vient du flag toif qui n'ets pas effacé
    Merci beaucoup pour ces infos a+ J'attends bien sur d'autres avis ^^

  4. #4
    invitee5da1686

    Re : Problème de signal carré avec un timer

    il y a encor un probleme ...
    if (compteur1 == 117 && impulsionC1 == 1) //Compteur1 = PWM1 est augmenté
    alor... premier passage
    compteur1 = compteur1 + 10;
    donc compteur1 = 10 ok ?

    eu bout de 11 passage
    compteur1 = compteur1 + 10;
    donc compteur1 = 110 + 10
    donc compteur = 120

    la il y a un probleme .. tu passe de 110 a 120 direct, donc il est impossible que ton compteur 1 puisse avoir la valeur 117 ^^

    tu peut pas faire compteur1 = compteur1 + 1 plutot ?

    quand tu programme met toi a la place du pic tu execute le programme ligne par ligne

    a+

  5. A voir en vidéo sur Futura
  6. #5
    invite99a31ef7

    Re : Problème de signal carré avec un timer

    Ouahaou ^^ j'y avais pas pensé merci bveaucoup je vais essayé ça demain je vous dirais les résultats

    Encore merci !

  7. #6
    invite99a31ef7

    Re : Problème de signal carré avec un timer

    Ok c'est bon ça marche du tonnerre !
    En fait j'avai oublié d'effacer le flag toif...
    Merci morpheus ! a+

Discussions similaires

  1. signal carré avec 68hc08
    Par invite4e85cfdb dans le forum Électronique
    Réponses: 1
    Dernier message: 28/02/2008, 23h22
  2. Générer un signal carré 500hz avec flowcode sur pic 16f84
    Par invitef27eb29a dans le forum Électronique
    Réponses: 2
    Dernier message: 09/02/2007, 21h25
  3. Création d'un signal carré avec rapport cyclique réglable
    Par invite74b73858 dans le forum Électronique
    Réponses: 6
    Dernier message: 22/09/2006, 22h05
  4. Obtenir une tension avec un signal carré?
    Par invite3ce154e9 dans le forum Électronique
    Réponses: 3
    Dernier message: 06/04/2005, 17h01
  5. Comment faire un Signal Carré avec un NE555 ?
    Par inviteeddea82a dans le forum Électronique
    Réponses: 3
    Dernier message: 15/08/2003, 21h44
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...