IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Capture de fronts montants avec un PIC16F876


Sujet :

C

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1
    Par défaut Capture de fronts montants avec un PIC16F876
    bonjour et merci pour ce beau site
    Je dois réaliser un programme qui me permet de capturer les front montant d’un signal carré 0 ou 5V et de fréquence variable et a chaque front détecter on incrémente une variable.
    Pour programmer j’utilise un logiciel pour PIC à savoir PIC C compiler de chez CCS.
    Il existe un certain nombre de fonction déjà faite et une seule a retenue mon attention.
    Elle permet la capture de chaque front et déclenche un timer. Apres on peut l’utiliser pour faire une mesure ou autre chose. Bref mon problème n’est pas là mais je pourrait peut être me servir de cette fonction pour faire mon compteur d’impulsions.
    Voici la doc fournie par CCS pour l’utilisation de cette fonction. (SETUPCCP1.doc)

    En faite mon souci est plus un souci de C que d’électronique mais tout est lié.
    Il faudrait que quand cette fonction est active j’incrémente une variable par exemple et que je ne tienne pas compte du timer !
    Voici aussi un exemple d’utilisation donner par CCS


    long rise,fall,pulse_width;

    #int_ccp2
    void isr()
    {
    rise = CCP_1;
    fall = CCP_2;

    pulse_width = fall - rise; // CCP_1 is the time the pulse went high
    } // CCP_2 is the time the pulse went low
    // pulse_width/(clock/4) is the time

    // In order for this to work the ISR
    // overhead must be less than the
    // low time. For this program the
    // overhead is 45 instructions. The
    // low time must then be at least
    // 9 us.

    void main()
    {
    printf("\n\rHigh time (sampled every second):\n\r");
    setup_ccp1(CCP_CAPTURE_RE); // Configure CCP1 to capture rise
    setup_ccp2(CCP_CAPTURE_FE); // Configure CCP2 to capture fall
    setup_timer_1(T1_INTERNAL); // Start timer 1

    enable_interrupts(INT_CCP2); // Setup interrupt on falling edge
    enable_interrupts(GLOBAL);

    while(TRUE) {
    delay_ms(1000);
    printf("\r%lu us ", pulse_width/5 );
    }
    }


    il y a une autre fonction qui, me semble-t-il, pourrait crée une interuption comme dans l'exemple si dessus.
    voila merci pour l'entraide!!
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Capturer un <a></a> avec une regex
    Par mioux dans le forum C#
    Réponses: 3
    Dernier message: 15/06/2007, 10h47
  2. Réponses: 5
    Dernier message: 19/04/2007, 12h45
  3. Capture d'une image avec une webcam
    Par Freyja dans le forum Linux
    Réponses: 2
    Dernier message: 09/08/2006, 12h35
  4. [FW2.0][VB.net] évenement front montant
    Par grand_prophete dans le forum Windows Forms
    Réponses: 9
    Dernier message: 09/05/2006, 17h25
  5. Réponses: 4
    Dernier message: 30/05/2005, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo