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
    flolarajasse

    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,...?

    -----
    Java is the best!

  2. #92
    flolarajasse

    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);
    }
    Java is the best!

  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
    flolarajasse

    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?
    Java is the best!

  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
    flolarajasse

    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.
    Java is the best!

Page 4 sur 4 PremièrePremière 4

Discussions similaires

  1. Interruptions simultanées PIC 16F877A
    Par maximilien dans le forum Électronique
    Réponses: 10
    Dernier message: 25/07/2009, 18h39
  2. gestion interruptions sur pic
    Par alainav1 dans le forum Électronique
    Réponses: 4
    Dernier message: 27/12/2008, 15h38
  3. PIC interruptions simultanées
    Par invite85bfc8b3 dans le forum Électronique
    Réponses: 4
    Dernier message: 16/06/2008, 12h45
  4. interruptions PIC 18F452
    Par invite86ad2abe dans le forum Électronique
    Réponses: 3
    Dernier message: 09/03/2005, 19h37
  5. interruptions portB PIC
    Par romelec dans le forum Électronique
    Réponses: 6
    Dernier message: 02/05/2004, 10h12
Découvrez nos comparatifs produits sur l'informatique et les technologies.