Bonjour,
Voila j'ai un projet de fin d'année a réaliser et je doit à l'aide d'un timer mesurer le temps entre un front montant et un front descendant et ensuite vérifier que ce temps est compris entre 2 valeurs.
J'ai réussi a faire compter le timer, créer l'interruption sur un front.
Pour le moment j'essaye donc de mesurer ce temps en envoyant un trame de 2hz sur ma carte électronique et d'allumer une led sur un front montant et l'autre sur le front descendant seulement je n'y arrive pas.
J'utilise un PIC18F2321 et le timer 0, je pense que la ou je me trompe c'est dans la configuration des interruption avec ITCON et ITCON2 et ITCON3 ainsi que dans la configuration du timer.
je voudrais donc s'il vous plait que vous regardiez le programme ci-dessous afin de me dire si j'ai fait des erreurs ou si les registres sont bien configuré ou si il en manque?
le programme :
#include<p18f2321.h>
#include<delays.h>
unsigned char FLAG_FRONT_MONTANT_RB0 =0;
unsigned char TOFF_MIN =0xxx;
unsigned char TOFF_MAX=0xxx;
void init(void);
//-- Programme principal
void main (void)
{
TRISA=0x00;
TRISB=0xFF;
PORTA=0x00;
init();
FLAG_FRONT_MONTANT_RB0 =0;//pointeur de flanc à 0
while(1)
{
}
}
void init (void)
{
ADCON1=0x0F;
PIE1bits.CCP1IE=1;
INTCON=0x90;
}
//-- Gestion des IT
//---- Description du prgme de traitement de l'IT
#pragma interrupt bp_it
void bp_it(void)
/****************************** **********
Traitement de l'IT INT0 déclenchée par un front m sur RB0
et de l'IT INT1 déclenchée sur front montant sur RB1 et IT INT2 IDEM
SORTIE : var. glob.
ENTRE : var. glob.
****************************** **********/
{
if (FLAG_FRONT_MONTANT_RB0 == 0)
{ INTCON2 = 0x80; // INT0 active sur front descendant
FLAG_FRONT_MONTANT_RB0 =0xFF;
PORTAbits.RA4=1;
PORTAbits.RA5=0;
}
else
{PORTAbits.RA5=1;
PORTAbits.RA4=0;
INTCON2 = 0xC0 ;
FLAG_FRONT_MONTANT_RB0 = 0;
}
}
//---- Initialisation du vecteur d'IT 08 par l'@ du prgme d'IT (bp_it)
#pragma code hih_vector=0x08
void interrupt_vector_at_high_vecto r(void)
{
_asm goto bp_it _endasm
}
#pragma code
merci d'avance
-----