[Programmation] delay ne marche pas dans un programme microcontrôleur pic16f1508
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

delay ne marche pas dans un programme microcontrôleur pic16f1508



  1. #1
    invite907fd2ff

    delay ne marche pas dans un programme microcontrôleur pic16f1508


    ------

    Bonjour , j'ai essayé de faire un programme qui fonctionne avec interruption il marche sans delay lorsque j' ajoute la fonction delay il se bloque meme j'ai essayé de la changer dans le programme principale , elle ne marche pas ,juste je veux la sortie rc6 reste high quelques secondes merci

    Code:
    ,
    void interrupt (void){
      unsigned char dummy;
      bit oldstate;
    
    
    if ((PORTA.F0==1)&& (INTCON.TMR0IF==1))
            { PORTC.F3 = 1;
               PORTC.F4 = 0;
             dummy = PORTA;
             dummy = PORTB;
             INTCON.TMR0IF =0 ;   }
    
    
    else if (     (PORTA.F1==1) &&(INTCON.TMR0IF==1)  )
              {  PORTC.F3 = 0;
               PORTC.F4 = 1;
             dummy = PORTA;
             dummy = PORTB;
             INTCON.TMR0IF =0 ;
            } 
    
    else if  ((INTCON.TMR0IF==1)&&(Button(&PORTA, 2, 1, 1)))
    
             {oldstate = 1;
             INTCON.TMR0IF =0 ;
             }
    else if ((INTCON.TMR0IF==1)&& (Button(&PORTA, 2, 1, 0))&& (oldstate==1))
    
           {
    
    
           PORTC.F6=1;
           dummy = PORTA;
          dummy = PORTB;
             INTCON.TMR0IF =0 ;
              oldstate=0;
            Delay_ms(1000);
            PORTC.F6=0;
    
            }
     }
    
    void main() {
    int cnt ;
    bit oldstate;
    ANSELA = ANSELB = ANSELC= 0;                   //all pins I/o are cofigurred as digital
    C1ON_bit = C2ON_bit = 0;              //Désactivation de deux comparateurs
    INTCON.GIE =1 ;                         // Gener al interrupt enabled
    
    
    
    TMR0 = 0;
    INTCON.TMR0IE=1;
    INTCON.TMR0IF=0;
    OPTION_REG  = 00000100  ;
    //OPTION_REG.TMR0CS=1;
    // OPTION_REG.INTEDG:=1;
    OPTION_REG.TMR0CS=0;
    OPTION_REG.PSA=0;
    
    
    
    TRISA=0b11111111;                              // PortA  input
    TRISB=0b00010000;                     //RB4 input , others output
    TRISC=0b00000111 ;                     //portC RC0,RC1,RC2 input , others output
    
    
    
    
    
    
    PORTC.F7=0;
    PORTC.F4=0;
    PORTC.F3=0;
    PORTC.F6=0;
    
    do {
    
    
    }while (1);
    }

    -----
    Dernière modification par gienas ; 19/05/2016 à 13h27. Motif: Ajouté balises code obligatoires pour les programmes. Préciser le μC

  2. #2
    invitedf7cca36

    Re : delay ne marche pas dans

    Salut,

    Besoin d'éclaircissement sur ton programme déjà.

    Tu veux faire quoi avec tout ça concretement ?

    Pourquoi mettre un delay qui va bloquer la CPU alors que tu arrives à utiliser les interruptions ?

    Qu'est ce que tu veux dire par "le programme se bloque" ?
    As-tu essayé de debugguer ?

    PS : utilise les balises pour mettre du code.

  3. #3
    invite907fd2ff

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    j'utlise pic16f1508,
    je veux aprés l'interruption par le porta_pin2 , pin rc6 reste high un délai de quelques secondes puis s'annule , je simule le programme en dessus sans delai ça fonctionne mais lorsque je mets le delay l'interruption avec ra2 ne marche plus .

  4. #4
    invite63d2c74b

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    Citation Envoyé par maryemjaballah Voir le message
    l'interruption avec ra2 ne marche plus .
    Bonjour,

    Tu ne rentre plus dans l'interruption ou alors la sortie reste à 1 ?

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

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    ne rentre plus dans l'interruption

  7. #6
    invite63d2c74b

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    Pas de message d'erreure quand tu compiles ton programme ?

    Tu utilise quelle logiciel pour programmer ?

  8. #7
    invite907fd2ff

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    oui project linked successfully , micro c

  9. #8
    invite907fd2ff

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    merci , lorsque j'avance le dely avant cette instruction ça marche très bien

    INTCON.TMR0IF =0 ;

    oldstate=0;

    PORTC.F6=0;

  10. #9
    invite63d2c74b

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    impressionnant... Mais bon le principal c'est que ça marche

  11. #10
    inviteeb160de1

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    Quel est le code de ta fonction Delay_ms() ? Utilise-t-elle un timer, un décompte d'instructions, des IT ?

  12. #11
    invite5637435c

    Re : delay ne marche pas dans un programme microcontrôleur à préciser

    Ouyooyou! quel charabia de C...

  13. #12
    invite5637435c

    Re : delay ne marche pas dans un programme microcontrôleur pic16f1508

    Utiliser et déclarer bit oldstate dans le main ET l'interruption faut aimer se faire peur...

    Tu vires tes déclarations de variables de la boucle d'interruption, tu mets tes variables en extérieur (variable globales) et tu les déclares en volatile si elles sont utilisées à la fois en interruption et ailleurs dans ton programme.

  14. #13
    invite5637435c

    Re : delay ne marche pas dans un programme microcontrôleur pic16f1508

    Bien que MikroC accepte et gère la variable bit, ce n'est pas une bonne idée, notamment si un jour tu veux porter ce code sur un autre micro, la variable bit n'est pas une variable naturelle en C.
    Il vaut mieux que tu déclares un char tout simplement.

    volatile unsigned char oldstate = 0;

  15. #14
    inviteeb160de1

    Re : delay ne marche pas dans un programme microcontrôleur pic16f1508

    Citation Envoyé par HULK28 Voir le message
    Utiliser et déclarer bit oldstate dans le main ET l'interruption faut aimer se faire peur...
    Bien vu, j'avais loupé ça !

Discussions similaires

  1. [Programmation] diminue le delay dans un programme arduino
    Par invite6a1b20ed dans le forum Électronique
    Réponses: 2
    Dernier message: 24/03/2016, 18h06
  2. Flowcode et delay
    Par invitea6361e6b dans le forum Électronique
    Réponses: 9
    Dernier message: 08/10/2015, 16h12
  3. delay microsecondes
    Par invitea5967f49 dans le forum Électronique
    Réponses: 22
    Dernier message: 08/05/2013, 01h37
  4. Delay
    Par invite01336075 dans le forum Électronique
    Réponses: 7
    Dernier message: 16/07/2010, 20h42
  5. problème delay us
    Par invitebcc2342c dans le forum Électronique
    Réponses: 5
    Dernier message: 24/12/2008, 19h13
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...