bonjour
je cherche à realiser une interruption haute (pour inverser l'etat d'une led) et une basse (utilisation du timmer 0 pour une autre led)
Lorsque que j'appuis sur un bouton poussoir reliée à la patte RB4 de mon pic ( mise à l'etat bas) je voudrais couper le timmer 0 et inverser letat de la led broche RB1.Si par contre je n'appuis pas..une fois que le timmer deborde inverse l'etat de la led port RB2 et tout cela de maniere "non stop"
malheuresement celane fonctionne pas..je ne comprend pas pourquoi
voila mon code
#include <p18F452.h>
#include <delays.h>
#include <string.h>
#include <portb.h>
void tempo3(void);
#pragma config WDT = OFF
void configuration1(void);
void configuration2(void);
void InterruptHandlerHigh (void);
void inter(void);
--------------------------------------------------------------------------
#pragma code InterruptVectorHigh = 0x08
void
InterruptVectorHigh (void)
{
_asm
goto InterruptHandlerHigh //jump to interrupt routine
_endasm
}
#pragma code
#pragma interrupt InterruptHandlerHigh
void
InterruptHandlerHigh ()
{
INTCONbits.RBIF = 0;
PORTBbits.RB1 = !PORTBbits.RB1;
T0CON=0b1000111;
TMR0H=0xB3;
TMR0L=0xB4;
}
---------------------------------------------------------------------------
#pragma code LowVector=0x18
void atInterruptlow(void)
{
_asm GOTO inter _endasm
}
#pragma code
#pragma interlow vect18
void inter()
{
INTCONbits.TMR0IF=0;
PORTBbits.RB2 = !PORTBbits.RB2;
}
---------------------------------------------------------------------------
void tempo3(void)
{
T0CON=0b0000111;
TMR0H=0xB3;
TMR0L=0xB4;
INTCONbits.TMR0IE=1;// autorise IT débordement
RCONbits.IPEN=1;// Interruption prioritaires
INTCONbits.GIE=1;
}
////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{
TRISBbits.TRISB4=1;
TRISBbits.TRISB2=0;
TRISBbits.TRISB3=0;
PORTBbits.RB4=1;
PORTBbits.RB2=0;
PORTBbits.RB3=0;
tempo3();
RCONbits.IPEN=1;// Interruption prioritaires
INTCONbits.GIE=1;
INTCON2bits.RBIP=1;
INTCONbits.PEIE = 1;
INTCONbits.RBIE = 1;
INTCONbits.RBIF = 0;
while(1)
{
T0CON=0b10000111;
PORTBbits.RB3 = 1;
}
}
AVEZ vous une idee?
Merci
-----