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

Interruptions pic 18f2550



  1. #1
    Pierrotengalere

    Interruptions pic 18f2550


    ------

    Bonjour,
    je souhaite effectuer, grace à une interruption lors de l'appui sur un bouton en rbo, un changement de clignotement de led.

    En normal, la led en rb3 clignote, en interruption les leds en rb1 et 2 clignotent.

    Cependant j'ai l'impression que je ne rentre jamais dans l'interruption malgré les appuis sur le bouton.

    Pouvez vous m'aider?

    Pierrot
    #include <P18F2550.inc>
    ; __CONFIG (_INTRC_OSC_CLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _IESO_OFF & _FCMEN_OFF)

    org 0
    ;************** Début du programme *********************

    CBLOCK 0x20
    debordement : 1
    temps :1
    cmpt1 : 1 ; compteur de boucles 1
    cmpt2 : 1 ; compteur de boucles 2
    cmpt3 : 1 ; compteur de boucles 3
    endc

    goto init

    ;****** Le programme d' interruption se déclenche ***
    ;****** lorsque l' entrée RB0 passe de 0 à 1 ***



    ;*********** Programme d 'interruption **********************
    ORG 0x08
    ;btfsc INTCON,INT0IF ; tester si flag INT0IF positionné
    rcall traitint

    RETFIE ; retour d 'interruption

    ;************* Programme d' INIT **************************

    init

    MOVLW B'10010001' ; rb0,rb4 en entrée ( rb0 sera la broche utilisée
    ; pour l ' interruption )

    MOVWF TRISB



    bsf INTCON2,INTEDG0 ; Le passage de 0 à 1 sur RB0 provoque une IT
    ; sur un front montant

    bsf INTCON,INT0IE ; autorise l ' IT sur RB0
    bsf INTCON,TMR0IE ; autoriste l'IT sur Timer
    bsf INTCON,GIE ; autorise les Interruptions

    clrf PORTB
    ;bsf T0CON, PSA ; vire le prescaler/prediviseur




    ;************ Programme principal en rebouclage *********************

    debut

    bsf PORTB,3 ; on allume la led connectée sur rb1
    call tempo
    bcf PORTB,3
    call tempo
    ; sleep ; mise en sommeil du PIC conso : 3.2 mA, attente impulsion sur RB0

    GOTO debut

    ;*********** Fin du programme ***********
    ;********************tempo
    tempo
    movlw 1 ; pour 2 boucles
    movwf cmpt3 ; initialiser compteur3
    boucle3
    clrf cmpt2 ; effacer compteur2
    boucle2
    clrf cmpt1 ; effacer compteur1
    boucle1
    nop ; perdre 1 cycle
    decfsz cmpt1,f ; décrémenter compteur1
    goto boucle1 ; si pas 0, boucler
    decfsz cmpt2,f ; si 0, décrémenter compteur 2
    goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
    decfsz cmpt3,f ; si 0, décrémenter compteur 3
    goto boucle3 ; si cmpt3 pas 0, recommencer boucle2
    return ; retour de la sous-routine



    traitint
    bsf PORTB,2 ; on allume la led connectée sur rb1
    rcall tempo
    bcf PORTB,2
    rcall tempo
    bsf PORTB,1
    rcall tempo
    rcall tempo
    bcf PORTB,1
    bcf INTCON,INT0IF ; put the flag down
    return
    end

    -----

  2. #2
    RISC

    Re : Interruptions pic 18f2550

    Salut,

    Je te conseille de republier ton code avec les balises (code) (/code) en remplaçant mes () par des [].

    Il me semble que tu as oublié la sauvegarde / restauration du contexte dans ton interruption...
    Je te recommande l'excellent cours de bigonoff en français sur les PIC qui explique avec moults détails comment faire cela correctement.

    a+

Discussions similaires

  1. PIC 18F2550 pour l' USB
    Par Shaiton dans le forum Électronique
    Réponses: 7
    Dernier message: 26/05/2011, 22h34
  2. pic 18f2550 et windows mobile
    Par taz6cle dans le forum Électronique
    Réponses: 9
    Dernier message: 25/09/2008, 23h26
  3. pic 18f2550 & usb
    Par RBLODE dans le forum Électronique
    Réponses: 0
    Dernier message: 05/08/2008, 15h29
  4. Code conversion A/N pic 18f2550
    Par Kurosaki dans le forum Électronique
    Réponses: 1
    Dernier message: 21/06/2008, 22h42
  5. Pic 18f2550
    Par mastermix dans le forum Électronique
    Réponses: 1
    Dernier message: 04/04/2007, 13h04
Découvrez nos comparatifs produits sur l'informatique et les technologies.