Interruptions PIC - Page 4
Répondre à la discussion
Page 4 sur 4 PremièrePremière 4
Affichage des résultats 91 à 96 sur 96

Interruptions PIC



  1. #91
    invitead51e543

    Re : Interruptions PIC


    ------

    Sa marche pour la valeur la plus grande ; mais comment fait-on pour récupérer, par exemple la plus petite valeur, la 2ème plus grande,...?

    -----

  2. #92
    invitead51e543

    Re : Interruptions PIC

    Code:
    unsigned int16 time = 0, compte = 0;
    
    #int_EXT                          // correspond à une interruption sur RB0
    void  EXT_isr(void) 
    {   
        disable_interrupts(GLOBAL);
        time = get_timer0();      // on récupère la valeur de Timer0
        compte++;                 // on incrémente la variable compte
        set_timer0(0);            // initialiser timer0 à 0
        enable_interrupts(GLOBAL);
        
    }
    
    void main(void)
    {  
       unsigned int16 tableau[6] = {0, 0, 0, 0, 0, 0};   // on initialise les valeurs du tableau à 0
       unsigned int16 greatest = 0;
       int i ;
       enable_interrupts(GLOBAL);
       enable_interrupts(INT_EXT);       // autorise les interruptions sur RB0
       ext_int_edge(0, L_TO_H);          // déclencher interruption0 sur front montant
       setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64);      // configuration du Timer0
       
       usb_init_cs();
         
       do
       {
          usb_task();
          usb_debug_task();
         
          switch(compte)
          {
          case 1:
             tableau[0]=time ;
             break;
          case 2:
             tableau[1]=time ;
             break;
          case 3:
             tableau[2]=time ;
             break;
          case 4:
             tableau[3]=time ;
             break;
          case 5:
             tableau[4]=time ;
             break;
          case 6:
             tableau[5]=time ;
             for (i = 0 ; i < 6 ; i ++)
             {
                printf(usb_cdc_putc, "%lu \n\r", tableau[i]);
                if (greatest < tableau[i]) 
                {
                    greatest = tableau[i];
                }
             }
             printf(usb_cdc_putc, "periode la plus grande est : %lu\n\r", greatest);
             compte = 0;
             break;
          }             
        }
        while (TRUE);
    }

  3. #93
    sdec25

    Re : Interruptions PIC

    Citation Envoyé par flolarajasse Voir le message
    Sa marche pour la valeur la plus grande ; mais comment fait-on pour récupérer, par exemple la plus petite valeur, la 2ème plus grande,...?
    Tu tries ton tableau.
    Cf google > algorithmes de tri.

  4. #94
    invitead51e543

    Re : Interruptions PIC

    C'est ce que j'ai fait.Si tu veux sur mon signal(qui a 6 périodes différents), les 2 premières périodes sont fixes ; ce sont les plus petites.Ensuite j'ai une période assez grande que j'aurais besoin de reconnaitre (pour mes calculs), ensuite une période qui peut-être soit plus grande, soit plus petite que la 3ème(je peux la faire varier) que j'aurais aussi besoin de reconnaitre.Puis deux autres petites périodes.
    Je ne sais pas si j'ai été clair, c'est pas facile à comprendre.
    Donc le principe du tableau ne fonctionne pas car si je trie les valeurs dans l'ordre croissant, je ne saurais pas quelle est la période qui suit les 2 premières étant doné que la période d'une des plus grande peut changer, tu vois le truc?

  5. #95
    sdec25

    Re : Interruptions PIC

    ok je comprends un peu mieux.

    Les 2 dernières périodes sont les mêmes que les 2 premières ?

    Si c'est le cas ça donne : A, A, B, X, A, A avec :
    A = fixe, connu
    B = fixe, connu, B > A
    X = variable, pas connu

    Tu veux récupérer la position de la période la + grande, celle de la 2ème + grande, ... ?
    Que se passe t-il si X > B ? Et si X < A ?

  6. #96
    invitead51e543

    Re : Interruptions PIC

    Citation Envoyé par sdec25 Voir le message
    Tu veux récupérer la position de la période la + grande, celle de la 2ème + grande, ... ?
    Oui c'est cela.

    Les 2 dernières périodes sont les mêmes que les 2 premières ?
    Non les 2 dernières sont plus grandes que les 2 premières.

    Le seul cas qu'il peut y avoir, c'est d'avoir X<B ou X>B.
    Dans tous les cas, il faut que je récupère la valeur de X.

Page 4 sur 4 PremièrePremière 4

Discussions similaires

  1. Interruptions simultanées PIC 16F877A
    Par invite2de7076a dans le forum Électronique
    Réponses: 10
    Dernier message: 25/07/2009, 19h39
  2. gestion interruptions sur pic
    Par invite3a1051d7 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/12/2008, 16h38
  3. PIC interruptions simultanées
    Par invite85bfc8b3 dans le forum Électronique
    Réponses: 4
    Dernier message: 16/06/2008, 13h45
  4. interruptions PIC 18F452
    Par invite86ad2abe dans le forum Électronique
    Réponses: 3
    Dernier message: 09/03/2005, 20h37
  5. interruptions portB PIC
    Par invitebf62768c dans le forum Électronique
    Réponses: 6
    Dernier message: 02/05/2004, 11h12
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...