Priorité d'interruption
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Priorité d'interruption



  1. #1
    jerepout

    Priorité d'interruption


    ------

    Bonjour à tous,
    je cherche à créer un programme pour passer de "mode en mode". (Un mode constituant une couleur de LED , un moteur allumé pendant un temps propre au mode choisit).
    Maintenant,je souhaite intégré un second bouton qui "force l'arrêt" de ces modes. Seulement, je n'arrive pas à établir de priorité.
    GPIOD7-> bouton 1
    GPIOD6-> bouton 2
    Il s'avère que lors des appuis sur le bouton 1, je passe bien de mode en mode. En revanche lors de l'appui sur le deuxième bouton, je n'arrive pas à tout éteindre. L'idéal, le top du top, serait de tout arrêter lors d'un appui d'au moins 3 secondes sur le bouton1, afin de me passer d'un deuxième bouton.

    Voici le code que j'ai écris:
    Code:
    void main (void) {	
    	int d=0;
    	bool i = FALSE;
    	int mode;
    	static int StatoIn;
      int choix=0;
     
      CLK_Config();   
    	GPIO_Config();
    	TIM1_Config(); 
    	TIM4_Config();  
    	enableInterrupts();
    		
     
    
    while(1){
    	
    
    if(GPIO_ReadInputPin(GPIOD, GPIO_PIN_7) == FALSE){
    	 choix++;                        
     
     
      if(choix>4)choix=0;
    		switch(choix)
    		{
    		case 1:	 
    		for (d=0;d<20000;d++){
    			    GPIO_WriteHigh(GPIOB,GPIO_PIN_1);
    			  	GPIO_WriteHigh(GPIOC,GPIO_PIN_1);
    					GPIO_WriteLow(GPIOB,GPIO_PIN_2);
    					GPIO_WriteLow(GPIOB,GPIO_PIN_3);
    					}break; 
    						
    		case 2:
    		for (d=0;d<20000;d++){
    			  GPIO_WriteHigh(GPIOC,GPIO_PIN_1);
    	      GPIO_WriteHigh(GPIOB,GPIO_PIN_2);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_1);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_3);
    	      }break;
    		case 3:
    		for (d=0;d<20000;d++){
    			  GPIO_WriteHigh(GPIOC,GPIO_PIN_1);
    	      GPIO_WriteHigh(GPIOB,GPIO_PIN_3);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_1);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_2);
    	      }break;
    		case 4:
    		for (d=0;d<20000;d++){
    			  GPIO_WriteHigh(GPIOC,GPIO_PIN_1);
    	      GPIO_WriteHigh(GPIOB,GPIO_PIN_3);
    	      GPIO_WriteHigh(GPIOB,GPIO_PIN_1);
    	      GPIO_WriteHigh(GPIOB,GPIO_PIN_2);
    	      }break;
    	}
    }
    
    if(GPIO_ReadInputPin(GPIOD, GPIO_PIN_6) == FALSE){
    	
    	      GPIO_WriteLow(GPIOC,GPIO_PIN_1);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_1);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_2);
    	      GPIO_WriteLow(GPIOB,GPIO_PIN_3);	
    }   
    
    }
    
    }

    -----
    Dernière modification par JPL ; 03/07/2018 à 23h34. Motif: Remplacement dela balise Quote par Code

Discussions similaires

  1. priorité condition if
    Par harominc dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 12/06/2017, 07h01
  2. PIC : interruption externe et interruption on change ?
    Par jlg_47 dans le forum Électronique
    Réponses: 10
    Dernier message: 09/04/2012, 12h41
  3. interruption basse priorité pour le module CCP1 capture
    Par invited08e1382 dans le forum Électronique
    Réponses: 3
    Dernier message: 19/05/2011, 11h17
  4. interruption haute priorite sur 18F452
    Par invite4828afd1 dans le forum Électronique
    Réponses: 2
    Dernier message: 21/02/2009, 14h51
  5. M2 : Priorité aux M1 de la fac?
    Par invite9adfd927 dans le forum Orientation après le BAC
    Réponses: 4
    Dernier message: 24/05/2006, 08h23