int ViderBufferLecture1,ViderBufferLecture2,ViderBufferLecture3,ViderBufferLecture4; void init() { AD1PCFG = 0xFFFF; // Utilisation des entrées en numériques TRISB = 0x0000; // Les broches du PORTB sont configurées en sorties LATB = 0x0000; // Initialise toutes les sorties du PORTB à l’état logique BAS PORTB = 0x0000; // ON fixe les sorties à l’état zéro TRISD8_bit = 1; // La broche du PORTD.8 est configurée en entrée LATD = 0; // Initialise toutes les sorties du PORTD à l’état logique BAS EnableInterrupts(); // Activations des interruptions IVT ON__IC1CON_bit = 1; // On active le module de Capture 1 SIDL_IC1CON_bit = 0; // Mode continu FEDGE_bit = 1; // Capture sur front montant C32_bit = 0; // mode 16 bits Timer 2 uniquement ICTMR_bit = 1; // Timer 2 ICI0_bit = 1; // | Déclenchement de l’interruption ICI1_bit = 1; // | sur le 4ème événements ICM0_bit = 0; // | ICM1_bit = 0; // | ICM réglé sur 4 fronts montant ICM2_bit = 1; // | IC1IE_bit = 1; // On active les interruptions sur les captures IC1IP0_bit = 1; // | IC1IP1_bit = 1 ; // | Capture 1 sur le niveau 7 } void Capture_1() iv IVT_INPUT_CAPTURE_1 // entrée RD8 pour la capture 1 ilevel 7 { LATB.RB1 = 1; // Une interruption survient delay_ms(1000); // On attend un peu avant de lire le buffer // Lecture du Buffer pour effacer l’interruption ViderBufferLecture1 = IC1BUF; // 1ère lecture pour effacer la 1er évenement de capture ViderBufferLecture2 = IC1BUF; // 2ème lecture pour effacer la 2ème évenements de capture ViderBufferLecture3 = IC1BUF; // 3ème lecture pour effacer la 3ème évenements de capture ViderBufferLecture4 = IC1BUF; // 4ème lecture pour effacer la 4ème évenement de capture delay_ms(1000); // On attend un peu avant la fin de la lecture LATB.RB1 = 0; // La capture et la lectrue est fini if (ICBNE_bit == 1)//ICBNE reste à 1 temps que le buffer n’a pas été lu { LATB.RB4 = 1; } if (ICBNE_bit == 0) // buffer (FIFO) vidé { LATB.RB4 = 0; } IFS0 = 0; // La remise à zéro du drapeau permet de sortir de l’interruption } void main() { init(); // Initialisation du Mini-32 while (1) { // On ne fait rien dans le programme principal } }