Interruptions en C - Avis aux amateurs!!
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Interruptions en C - Avis aux amateurs!!



  1. #1
    jorg1n

    Interruptions en C - Avis aux amateurs!!


    ------

    Bonjour,
    je reviens vers vous une nouvelle fois, car voila, par la suite je souhaiterai utiliser les interruptions pour gérer l'appui sur les boutons poussoirs...mais après un acharnement excessif sur le principe...je n'arrive toujours pas à me servir des interruptions sur un PIC.(Je me perd dans les programme d'interruptions, et tout et tout...)
    J'utilise un 18F4525, je programme en C avec le compilo C18...
    Et tout d'abord je souhaite réaliser un truc tout bète...
    Lorsque j'appui sur le BP cablé en RB0, je veux que ça allume la LED en RA2..et quand je le relache elle s'éteind...
    Pour informations, mon BP est cablé de façon a avoir un front descendant à l'appui..
    Si vous aviez un petit exemple, je serai le plus heureux, ou bien si vous pouvez me donner des petits conseils..
    Je vais déja voir au point de vu de l'initialisation..et je vous transmet ce que je pense faire...
    Encore merci
    Nicolas

    -----

  2. #2
    Seb.26

    Re : Interruptions en C - Avis aux amateurs!!

    Hello...

    Pourquoi veux tu utiliser les IT pour un BP ?
    > Ton uCPU est en Sleep() ?
    > Pour comprendre les IT ?
    > Autre ? ...

    AMA : le signal d'un BP doit être filtré pour éviter les rebonds, hors c'est pas évident à faire sous IT ... ou alors dans l'IT d'un Timer ( un filtrage d'I/O est une action dans le temps, pas dans le nombre d'impulsions ... ) ... Mais metttre trop de code dans les IT n'est pas bon non plus ... et en C, une IT prend vite beaucoup de temps à cause de l'empilement du contexte ...

    << Just my 2 cents ... >>

  3. #3
    jorg1n

    Re : Interruptions en C - Avis aux amateurs!!

    C'est pour comprendre les IT, et je voudrai aussi utiliser le mode sleep par la suite..
    En ce qui concerne les rebonds, sur ma carte j'ai fais un montage avec un condensateur de 100n en parallèle a la masse...ça devrait le faire...
    Merci encore
    Nicolas

  4. #4
    Seb.26

    Re : Interruptions en C - Avis aux amateurs!!

    Ok, il faut donc respecter quelques étapes :

    1) Faire un driver d'IT ( la doc de ton compilo te donneras la forme que ça doit avoir )

    Perso, pour C18 je fais un truc du genre :
    Code:
    #pragma interruptlow server_LowPriority_Interrupt
    void server_LowPriority_Interrupt()
    {
      	// Test if the interrupt source is Timer0
    	if( INTCONbits.TMR0IF )
    	{
    		// Rearm it
    		TMR0H=0x**;
    		TMR0L=0x**;
    		INTCONbits.TMR0IF=0;
    		//
    		[...] Ton code ici ...
    	}
    
      	// Test if the interrupt source is UART send ( TXREG is free )
    	if( PIR1bits.TXIF && PIE1bits.TXIE )
    	{
    		// Send next char from Tx FIFO
    		[...] Ton code ici ...
    	}
    
    }
    
    #pragma interrupt server_HightPriority_Interrupt
    void server_HightPriority_Interrupt()
    {
    	// Test if the interrupt source is Timer1
    	if( PIR1bits.TMR1IF )
    	{
    		//Ack IT
    		TMR1H=0x**;
    		TMR1L=0x**;
    		PIR1bits.TMR1IF=0;
    		//
    		[...] Ton code ici ...
    	}
    
    
    }
    
    //
    //
    //
    
    #pragma code InterruptVector_HightPriority = 0x08
    void InterruptVector_HightPriority (void)
    {
    	_asm
    		goto server_HightPriority_Interrupt
    	_endasm
    }
    #pragma code
    
    #pragma code InterruptVector_LowPriority = 0x18
    void InterruptVector_LowPriority (void)
    {
    	_asm
    		goto server_LowPriority_Interrupt
    	_endasm
    }
    #pragma code
    NB: il faut que tu ajoute la gestion de l'IT du portB ... mais c'est assez simple ...

    2) Ensuite, il faut configurer les IT

    3) Activer les IT

    Et normalement, ça roule ...

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

    Re : Interruptions en C - Avis aux amateurs!!

    Salut,

    l'utilisation des IT est importante dans un programme, tout dépend de l'urgence ou de la priorité des évènements à traiter.
    Mettre une capa pour faire un filtrage de B.P n'est pas très judicieux, un filtrage soft est bien mieux et moins cher.
    Le principe est de détecter un appui et de lancer une petite tempo.
    x(ms) plus tard on pourra considérer qu'un nouvel appui est validable ou non.

    Si l'appui est permanent on décide pour éviter tout contact erratique de déclencher une action après un temps prédéfini (par exemple 50ms), après ce temps on vérifie que l'action est toujours bien présente et on lance alors la routine qui va bien.
    Ce temps prédéfini peut-être un delay(ms) par exemple.

    Si l'appui est fugitif on surveille la détection par une IT (RB0 par exemple) qui va détourner le prog en cours, pour exécuter l'action, et revenir continuer sa tâche principale.
    On peut aussi utiliser un while(appui), tant que l'appui est à 1 (on) on est bloqué, il faut relâcher le BP pour déclencher l'action à exécuter, l'inconvénient est de bloquer le reste du prog, c'est pour ça que les IT sont importantes, car elles ne sont pas bloquantes.
    @+

  7. #6
    jorg1n

    Re : Interruptions en C - Avis aux amateurs!!

    Bonjour,

    et voila mon premier programme d'interruption fonctionne...c'est un truc tout bete, j'appui sur le BP en RB0, la LED s'allume, je rappui dessus, la diode s'éteint..
    Merci Encore pour votre aide

  8. #7
    jorg1n

    Re : Interruptions en C - Avis aux amateurs!!

    Bonjour,
    je voudrais maintenant réaliser la meme chose, mais avec 3 BP sur RB0 RB1 et RB2, et respectivement 3 LED A2 A3 A4...Mais je ne sais pas dans quel registre agir et comment leur attibuer les routine d'IT..
    Je vous remercie d'avance

Discussions similaires

  1. CBPS: Avis aux amateurs de Biologie Chimie...
    Par invite58f780f9 dans le forum Orientation après le BAC
    Réponses: 35
    Dernier message: 09/09/2009, 16h12
  2. [Blanc] Avis aux amateurs! frigo en péril...
    Par invite8ddc5621 dans le forum Dépannage
    Réponses: 5
    Dernier message: 24/01/2007, 17h11
  3. Avis aux amateurs de thermodynamique atmosphérique!
    Par invite51c9e6f8 dans le forum TPE / TIPE et autres travaux
    Réponses: 4
    Dernier message: 24/02/2006, 16h35
Découvrez nos comparatifs produits sur l'informatique et les technologies.