Calcule la longeure d'une impultion avec un pic18LF4550
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Calcule la longeure d'une impultion avec un pic18LF4550



  1. #1
    invitea0a062f4

    Unhappy Calcule la longeure d'une impultion avec un pic18LF4550


    ------

    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.

    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);
              
             }
    }
    Merci pour votre aide.

    -----
    Dernière modification par Jack ; 17/05/2011 à 00h20. Motif: ajout balises code

  2. #2
    RISC

    Re : Calcule la longeure d'une impultion avec un pic18LF4550

    Salut,

    Il existe une astuce très simple pour mesurer une impulsion :
    tu programmes le CCP en mode capture sur front montant
    A la 1ere interruption de l'unité CCP tu changes le mode en front descendant SANS arrêter le timer et tu lis la valeur dans CCP, à la 2e INT tu pourras lire la valeur du front descendant.

    Si ton impulsion est courte, je te recommande de faire tourner le PIC au maximum de sa vitesse pour que ton code d'interruption soit le plus rapide possible. Surtout fait un traitement très court dans l'interruption
    Tu utilises apparemment un quartz 20MHz. Je te recommande de prendre un 10 MHz et tu actives la PLL par 4, cela te donnera 40MHz ( HSPLL )

    a+

  3. #3
    invitea0a062f4

    Re : Calcule la longeure d'une impultion avec un pic18LF4550

    Bonjour,

    Merci pour ta réponse RISC,

    Oui effectivement j y est penser , mais quand le timer sera activé au front montant , en reconfigurant le module , est ce qu'il ne vas pas me remettre le timer à 0 quand il va detecter le front descendant ??

  4. #4
    invite0c083bae

    Re : Calcule la longeure d'une impultion avec un pic18LF4550

    Si tu ne le remets pas à 0 toi même, non il ne le fera pas. Par contre effectivement CCP permet de récupérer les fronts montants OU descendants pas les deux. Par contre les interruptions RB, elles le permettent puisqu'elles s'activent sur un changement d'état des entrées.

    Jetes un petit coup d'oeil ici ( http://forums.futura-sciences.com/el...pture-pic.html ) tu as la solutions pour le CCP

  5. A voir en vidéo sur Futura
  6. #5
    invitea0a062f4

    Re : Calcule la longeure d'une impultion avec un pic18LF4550

    Salut,

    Julien21000 merci pour ton aide.

    Je vais essayer de changer la valeur du registre CCP1CON a chaque interruption

    mais il faut l 'alterné ' 0x04' et '0x05' il ya du boulot , on tout les cas je vais me casser la tete et je te tiens au courant .

    Merci

Discussions similaires

  1. calcule d'une surface
    Par inviteea75116c dans le forum Mathématiques du collège et du lycée
    Réponses: 15
    Dernier message: 19/05/2011, 10h08
  2. Calcule d'une masse.
    Par invite621a8f3c dans le forum Chimie
    Réponses: 6
    Dernier message: 30/11/2008, 22h43
  3. Calcule d'une transformé de fourrier avec un PIC 18F***
    Par schneiderj dans le forum Électronique
    Réponses: 1
    Dernier message: 30/11/2008, 16h32
  4. calcule d'une aire
    Par invitea618f2de dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 07/10/2008, 17h51
  5. Calcule d'une gravité
    Par invite9d979fbf dans le forum Physique
    Réponses: 7
    Dernier message: 09/07/2008, 17h03
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...