PIC18F: Generation d'interruption à l'aide des broches KBI
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

PIC18F: Generation d'interruption à l'aide des broches KBI



  1. #1
    bonhommr

    PIC18F: Generation d'interruption à l'aide des broches KBI


    ------

    Bonjour,

    j'utilise un PIC18F que je programme en C à l'aide du compilateur MCC18.

    Mon objectif est de detecter l'appui d'un bouton via les broches KBI (->Interrupt on Change).

    Je les programme en pull-up et j'ai bien un pulse à 0 qui indique l'appui bouton (voir image jointe).

    J'ai un autre bouton sur une entrée interruptive "normale" (INT3) et celle-ci est bien detectée. Je vous copie ci-dessous mon code est espère que vous pourrez m'aider.

    Code:
    #include <p18f2523.h>
    #include <xlcd.h>
    #include <delays.h>
    #include "lcd.h"
    
    unsigned int cpt=0;
    // sous programme d'interruption 
    #pragma interrupt it_sur_rb0   
    void it_sur_rb0(void)  
    {
     	if (INTCON3bits.INT2IF) // vérifie que l'IT INT0, origine PB0=0 (bouton S3) 
    	{   
        	cpt++;  //utiliser un WATCH pour visualiser cpt
        	INTCON3bits.INT2IF=0; //efface le drapeau d'IT 
     	}  
    	cpt++;
    }
    #pragma code vecteur_d_IT=0x08 // vecteur d'IT 
    void une_fonction(void) 
     {
    _asm goto it_sur_rb0 _endasm 
     }
    #pragma code 
    void main (void) 
     {
     // configure les IOs en digital
     ADCON1bits.PCFG0 = 1;
     ADCON1bits.PCFG1 = 1;
     ADCON1bits.PCFG2 = 1;
     ADCON1bits.PCFG3 = 1;
     INTCON2bits.RBPU = 0;
    
     TRISBbits.TRISB2=0;  // RB2 en entrée 
     TRISBbits.TRISB4=0;  // RB4 en entrée	
     TRISBbits.TRISB5=0;  // RB5 en entrée 
    
     INTCONbits.GIE=1;  // Toutes les IT démasquées autorisées 
    
     INTCONbits.RBIF = 0; // disable RB on change Interrupt flag
    
    INTCONbits.INT0IF=0; // disable INT0 Interrupt flag
    INTCONbits.INT0IE=0; // disable INT0
    INTCONbits.TMR0IF=0; // disable Timer0 Interrupt flag
    INTCONbits.TMR0IE=0; // disable Timer0 Interrupt
    
     INTCON2bits.RBIP=1; //priorite d'interruption
     INTCON2bits.INTEDG2=0; //INT2 on falling edge
    
     INTCON3bits.INT2IP=1; //priorite d'interruption
     INTCON3bits.INT2IF=0; // disable INT2 Interrupt flag
     INTCON3bits.INT2IE=1; // Enable INT2
    INTCON3bits.INT1IF=0;   // disable INT1 Interrupt flag
    INTCON3bits.INT1IE=0;  // disable INT1
     INTCONbits.RBIE = 1;// Enable interrupt on RB change
    
    while(1){
    	if(PORTBbits.RB2 == 1)
    	{
    		cpt++;
    	} else {
    		cpt = 0;
    	}
    };
    }
    Merci beaucoup de votre aide,

    Antoine

    -----
    Images attachées Images attachées  

  2. #2
    sdec25

    Re : PIC18F: Generation d'interruption à l'aide des broches KBI

    Bonsoir,
    TRISBbits.TRISB2=0; // RB2 en entrée
    C'est le contraire (0 pour sortie, 1 pour entrée).

    A part ça ton programme a l'air correct.

Discussions similaires

  1. [Blanc] Plaque induction Ariston KBI 6003 : se met en sécurité !
    Par invite0c6b8b65 dans le forum Dépannage
    Réponses: 0
    Dernier message: 03/10/2010, 13h05
  2. Problème d'interruption avec Pic18f
    Par kronanberg dans le forum Électronique
    Réponses: 3
    Dernier message: 19/03/2010, 09h37
  3. Placer des broches dans les tibias, fémurs?
    Par _Ulysse_ dans le forum Santé et médecine générale
    Réponses: 6
    Dernier message: 18/09/2008, 14h56
  4. generation d'un signsal carré à l'aide de 16F877
    Par invitef2e31089 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/05/2008, 17h09
  5. programmation des pic18F
    Par inviteb6d84301 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/05/2006, 17h42
Découvrez nos comparatifs produits sur l'informatique et les technologies.