Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0



  1. #1
    invitebca82e41

    Question Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0


    ------

    Bonjour,

    Je souhaite modifier la vitesse de clignotement d'une led en fonction de la valeur lue par mon CAN (potard sur pin AN0) et cela à chaque fois que j'appuie sur un poussoir monté sur RB0 (interruption INT0).

    Je ne comprends pas pourquoi mon programme ne fonctionne pas : j'utilise un pointeur qui me retourne la valeur de ADRESH mais cette valeur n'est pas modifié dans mon "main.c" ...

    Si j'écris la fonction "convertir(&a)" dans mon while alors là oui ça fonctionne à chaque tour sur le potard... mais l'idée justement en utilisant les interruptions est de ne pas faire ce test à chaque fois, sinon j'aurais utilisé un return(ADRESH) dans ma fonction "convertir()" vous comprenez bien...


    Voici les bouts de code :

    //LA FONCTION DE CONVERSION SUR LA PIN AN0

    void convertir(int *valeur_can)
    {
    Delay10TCYx(5);
    ADCON0bits.GO=1;
    while (ADCON0bits.GO);
    *valeur_can=ADRESH;
    }


    //MON INTERRUPTION sur INT0 (RB0)

    void button (void)
    {
    int a=0;
    if (INTCONbits.INT0IF)
    {
    PORTBbits.RB1 = !PORTBbits.RB1;
    INTCONbits.INT0IF = 0; //clear interrupt flag
    convertir(&a);
    }
    }


    //La fonction principale main.c

    void main (void)
    {
    int a=0;
    pic_init();
    init_CAN();
    interruption_sur_RB0_init();
    convertir(&a);

    while (1)
    {
    //si je mets convertir(&a) ici alors ça fonctionne... mais ce n'est pas le but recherché !
    PORTBbits.RB3 = !PORTBbits.RB3;
    // Temporisation
    temporisation (7500+10000*a);


    }
    }




    Merci pour toute l'aide que vous pourrez m'apporter.

    -----

  2. #2
    invitebca82e41

    Re : Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0

    Personne n'a une petite idée ?

    Merci

  3. #3
    RISC

    Re : Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0

    Salut,

    Tu trouveras des exemples pour PIC18 dont certains pour le convertisseur A/N ici :
    * http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm
    * http://www.microchip.com/codeexamples

    a+

  4. #4
    invite89303051

    Re : Problème 18F2550: Transfert de ADRESH à chaque interruption sur INT0

    Juste une question, je sais que passer un pointeur est plus "joli" informatiquement, mais c'est un petit micro que tu utilises. Une simple variable "globale" déclaré volatile pour pouvoir être modifiée par la routine d'interruption et lu par ta boucle principale.
    Cordialement

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Interruption INT0/RB0 sur pic18f2550 compilateur C18 marche pas
    Par invitebca82e41 dans le forum Électronique
    Réponses: 11
    Dernier message: 20/10/2011, 00h48
  2. interruption INT0
    Par invitede857656 dans le forum Électronique
    Réponses: 1
    Dernier message: 30/06/2011, 23h33
  3. Probléme avec interruption INTCON.RBIE sur 16F88...
    Par invite7a49d0d5 dans le forum Électronique
    Réponses: 21
    Dernier message: 27/06/2010, 02h07
  4. Problème interruption sur PIC16F
    Par invitedccdd0e0 dans le forum Électronique
    Réponses: 7
    Dernier message: 21/01/2009, 19h26
  5. Probleme INT0 PIC18f458
    Par invite4109377f dans le forum Électronique
    Réponses: 1
    Dernier message: 11/05/2006, 15h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...