probleme de code ( mon sous programme pose des problemes a mon programme principale)
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

probleme de code ( mon sous programme pose des problemes a mon programme principale)



  1. #1
    Albert-cosmoff

    probleme de code ( mon sous programme pose des problemes a mon programme principale)


    ------

    bonjour a tous ,

    voila dans mon code l'appuie sur le bouton poussoir RA2 enclenche l'oscillation (i=1) mais quand j’appuie sur un autre bouton RA1 ( i=0 ) il devrait s'arreter hors ca ne le fait pas pourquoi?
    Code:
    long int compteur=0,d=0,chrono=0;
    int i=0;
    void interrupt sous_programm()
    {
        if(T0IF==1)//80 khz
        {
            T0IF=0;
            TMR0=219;// timer reglé a 80kHz
            if(i==1)//appuie bouton poussoir RA2
            {
            d++;
            if(d<=20) SORTIE_ULTRASON=!SORTIE_ULTRASON;//frequence reglé a  40KHZ
            if(d>20) SORTIE_ULTRASON=0;
            if(d>40) d=0;
            compteur++; // compteur=8000 --> 0.1 seconde
    
            }
            chrono++;
            
        }
    }
    
    void main()
    {
    
    init_pic();
    
    while(1)
        {
        if(RA2==1){
                    while(RA2==1);
                    while(chrono<200);// contre le rebond
                    chrono=0;
                    i=1;//on active l'oscillation de l'ultrason
                    
                   }
        if(RA1==1)
            {
                i=0;//on desactive l'oscillation de l'ultrason
                SORTIE_ULTRASON=0;
    
            }
    }
    }
    mon probleme est du dans me sous programme quand je met if a
    Code:
    d++;
    if(d<=20) SORTIE_ULTRASON=!SORTIE_ULTRASON;//frequence reglé a  40KHZ
           if(d>20) SORTIE_ULTRASON=0;
            if(d>40) {d=0;}
    car ca marche si je met pas ca et met directement SORTIE_ULTRASON=!SORTIE_ULTRAS ON; mais je sais pas pourquoi

    merci de votre aide

    -----
    Dernière modification par Albert-cosmoff ; 29/06/2014 à 16h37.

  2. #2
    Jack
    Modérateur

    Re : probleme de code ( mon sous programme pose des problemes a mon programme principale)

    mon probleme est du dans me sous programme quand je met if a
    Tun pourrais faire un minimum d'effort de relecture.
    Code:
    d++;
           if(d<=20) SORTIE_ULTRASON=!SORTIE_ULTRASON;//frequence reglé a  40KHZ
           if(d>20) SORTIE_ULTRASON=0;
           if(d>40) {d=0;}
    Ca manque de commentaires. A quoi sert la variable d? A obtenir la bonne période pour les 40 kHz? Dans ce cas, pourquoi cette ligne:
    Code:
     if(d<=20) SORTIE_ULTRASON=!SORTIE_ULTRASON;

  3. #3
    jiherve

    Re : probleme de code ( mon sous programme pose des problemes a mon programme principale)

    Bonsoir,
    sans savoir pourquoi je m'y attendais, il y a vraiment des constantes dans la nature !
    Donc la même variable "SORTIE_ULTRASON" est utilisée dans le corps principal et dans le programme d'interruption, c'est une hérésie absolue.
    il faut rajouter le test sur i = 0 dans l'interruption et là miracle!!!

    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. probleme pour mon programme en C avec CODE BLOKS
    Par invite686ab133 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 27/09/2012, 16h56
  2. Problèmes programme simple.
    Par Wadad dans le forum Programmation et langages, Algorithmique
    Réponses: 22
    Dernier message: 18/05/2011, 20h57
  3. Problème de programme sous ubuntu
    Par pirator dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 18/06/2010, 23h18
  4. Sous-programme PIC12F629 - problème
    Par michel5002 dans le forum Électronique
    Réponses: 8
    Dernier message: 10/12/2007, 21h12
  5. Problème avec un programme "injecteur de code"
    Par invite87912a33 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 18/04/2006, 10h05
Découvrez nos comparatifs produits sur l'informatique et les technologies.