Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

pic18f2450



  1. #1
    nirvo

    pic18f2450


    ------

    Bonjour,
    j'utilise un pic18f2450, je veux que chaque fois je click sur un bouton je declenche un buzzer mais par interruption sur RB0
    j'ai un problème dans mon programme car il rentre pas dans l'interruption

    #include <p18f2450.h>

    //routile d'intéruption
    void interrupt_at_high_vector(void)
    {
    if(INTCONbits.RBIF==1) //detection
    { PORTCbits.RC2=1;
    }
    INTCONbits.RBIF=0; }



    #pragma code high_vector=0x08
    void Vers_INT08(void){
    _asm goto interrupt_at_high_vector _endasm
    }
    #pragma code



    void main(void)
    {
    INTCONbits.INT0IF=0;
    INTCONbits.INT0IE = 1;
    INTCONbits.GIEH = 1;
    TRISB=0x01;
    TRISC=0x04; //configure port C2 en sortie
    PORTBbits.INT0=1;

    while(1);
    return ;
    }
    voila alors c juste pour le test d'intérruption sa marche pas
    merci

    -----

  2. Publicité
  3. #2
    RISC

    Re : pic18f2450

    Salut,

    Le cours sur les PIC18 et le C18 ici devrait t'aider ;=)

    a+

  4. #3
    nirvo

    Re : pic18f2450

    bonjour;
    merci pour le lien


    nirvo

  5. #4
    Bastoss

    Re : pic18f2450

    Bonjour Nirvo!

    Je suis pas expert en PIC, mais j'ai travaillé pas mal sur un PIC18F2520 qui a l'air de ressembler beaucoup au tien et notamment sur les interruptions!

    Déjà, sur quel port est câblé ton buzzeur, je voterais pour le port RC2. Tu dois donc le définir en sortie, c'est à dire TRISC en 0x00.

    Si tu veux utiliser les interruptions sur RB0, tu dois alors venir tester le flag de INT0.

    Je verrais ton programme plutôt comme ceci:

    #include <p18f2450.h>

    //routine d'intérruption
    void interrupt_at_high_vector(void)
    {
    if(INTCONbits.INT0IF==1) //detection interruption sur RB0
    {
    PORTCbits.RC2=1; //Mise à 1 sortie RC2
    INTCONbits.INT0IF=0 //Remise à 0 du flag de INT0
    }




    #pragma code high_vector=0x08
    void Vers_INT08(void){
    _asm goto interrupt_at_high_vector _endasm
    }
    #pragma code



    void main(void)
    {

    INTCONbits.INT0IE = 1; //Autorisation des interruptions sur INT0
    INTCONbits.GIE = 1; //Autorisation des interruptions globales
    INTCONbits.PEIE = 1; //Autorisation des interruptions périphériques
    TRISB=0x01; //RB0 en entré
    TRISC=0x00; //configure port C2 en sortie


    while(1);
    return ;
    }
    Voilà je pense qu'on est pas loin de ceci.
    A+

  6. A voir en vidéo sur Futura

Discussions similaires

  1. PIC18F2450 USB Problème d'énumération
    Par kfoxone dans le forum Électronique
    Réponses: 5
    Dernier message: 12/11/2009, 23h45
  2. PIC18F2450 comment tester le fonctionnement
    Par kfoxone dans le forum Électronique
    Réponses: 9
    Dernier message: 08/11/2009, 22h42
  3. Pic18F2450 et winpic800
    Par sergeegres dans le forum Électronique
    Réponses: 0
    Dernier message: 10/08/2009, 14h02
  4. Connexion MAX232 - PIC18F2450
    Par guillaume17 dans le forum Électronique
    Réponses: 5
    Dernier message: 13/07/2009, 09h48
  5. Probleme avec Bootloader HID PIC18F2450
    Par Lahrach dans le forum Électronique
    Réponses: 5
    Dernier message: 04/12/2008, 10h49
Découvrez nos comparatifs produits sur l'informatique et les technologies.