Bonjour,
Voila depuis 2 semaine que j'ai eu mon HC-SR04, il détermine la distance d un objet se trouvant devant lui, j'ai lus le datasheet, il faut donner une impulsion de 10µs au trig et le module repond en envoyant une impulsion sur la pin echo, et selon la longueur de celle ci on peut determiner la distance,
mon problème réside ici , mon pic18lf4550 ne détecte pas les faible impulsion avec ce programme ci-dessous , mais en utilisant en mode capture c faisable mais cependant le mode capture ne détecte que les fronts montant ou descendant à la fois et ne peut être configurer pour détecter les changement d état d'une des pins CPP.
par exemple détecter le front montant activer un des timer (TMR1 ou TMR3) et puis l arrêter sur le front descendant, pour calculer la durée de l impulsion.
Merci pour votre aide.Code:/** C O N F I G U R A T I O N B I T S ******************************/ #pragma config FOSC = HS // 20 MHz /** I N C L U D E S **************************************************/ #include "p18f4550.h" #include "delays.h" /** D E C L A R A T I O N S ******************************************/ void trig (){ LATBbits.LATB0 = 1 ; Delay10TCYx(10); LATBbits.LATB0 = 0 ; } void main (void) { TRISCbits.TRISC2 = 1; TRISBbits.TRISB0 = 0; TRISD = 0b00000000; PORTD = 0; T0CON = 0b01000111; while(1){ //Start SRF04 measurement trig(); //Advance to next phase if(PORTCbits.RC2 == 1) { TMR0L = 0; T0CONbits.TMR0ON = 1; } if(PORTCbits.RC2 == 0) { //Read out the timer T0CONbits.TMR0ON = 0; PORTD = TMR0L; //distanceH = TMR0H; } Delay10KTCYx(100); } }
-----