Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Qui peut m'aider pour ce programme ?



  1. #1
    ayne

    Red face Qui peut m'aider pour ce programme ?


    ------

    j'ai un programme qui est cappable chaque tour du ventilateur, nous passons 2
    fois devant un aimant, l'interrupteur ILS se
    ferme et nous avons un niveau '0' (OV) en
    sortie ILS sinon quand l'interrupteur n'est pas
    devant un aimant il est ouvert et le +5V arrive à
    la sortie ILS à travers la résistance R
    (résistance de tirage vers le haut ou pull-up)
    Bilan :nous avons 2 impulsions en sortie d'ILS à
    chaque tour du ventilateur.
    #define __16f628
    #include <16F628.h>
    #use delay(clock=20000000)

    #define PORTA 0x05
    #define PIR1 0x0C
    #define T1CON 0x10
    #define CCP1CON 0x17
    #define CCPR1L 0x15
    #define CCPR1H 0x16


    #define CCP1IF PIR1,2

    typedef union { // permet de passer de 2 octets ŕ un entier 16
    struct {
    int8 o0; //* octet poids faible */
    int8 o1; //* octet poids fort */
    };
    int8 e; // entier 16 bits
    }e2o_t;
    e2o_t e2o;
    #define oct0 e2o.o0
    #define oct1 e2o.o1
    #define ent e2o.e

    int capture(void) // lecture du CCPR1 aprčs un front montant sur CCP1
    {
    oct0=CCPR1L; // lecture poids faible du CCPR1 (= TIMER1 lors du front montant de CCP1)
    oct1= CCPR1H; // lecture poids fort du CCPR1
    CCP1IF=0; //acquittement lecture CCPR1 pour attente nouveau front
    return ent;
    }
    void init() //init Timer1 en mode Capture
    {
    T1CON=0x01; //Quartz =4Mhz, prediviseur par 1 temps cycle TIMER1 = 1ƒĘs
    CCP1CON=0x05; // mode capture front montant
    CCP1IF=0; // CCP1IF passe a 1 avec le front montant du fil jaune du ventilo
    }

    void main (void)
    {
    int16 valm2,valanc,valnv,Tm; //variables de type entier 16 bits
    init(); // init Timer Capture
    while (!CCP1IF) ; // attente front montant sortie ILS ventilo
    valm2=capture(); //front 1
    while (!CCP1IF) ; // attente front montant sortie ILS ventilo
    valanc=capture(); //front 2
    while (1) { //boucle sans fin
    if (CCP1IF) {//si front montant sortie ILS ventilo
    valnv=capture(); //front 3
    Tm =valnv-valm2; //Tm = temps front3-front1(temps d'un tour)
    putint(Tm); // envoie en ascii sur liaison série du temps Tm
    putchar(0x0a); // fin de ligne
    valm2=valanc; //front 2 devient front 1
    valanc=valnv; //front 3 devient front 2
    }
    }
    }
    SVP qui m'aide pour reparer les erreur

    et merci d'avance

    -----

  2. Publicité
  3. #2
    vede

    Cool Re : qui peux m'aide pour ce programme

    .

    HUM, HUM, HUM ...

    commences par répondre à toutes les questions...
    http://forums.futura-sciences.com/el...n-capture.html
    si tu espères des réponses...

    après ok, c'est bien joli ce code...
    mais quelles erreurs? que devrait faire ce code exactement?
    (compter périodes ou fréquences... comment...)
    où rencontres-tu un problème???
    on ne peut pas deviner...
    (j'ai cassé ma boule de crystal et ma cartomancienne est partie en vacances... )

    vede
    ;O]
    ___________________
    Vive les PICS ;O]

    .

  4. #3
    ayne

    Re : qui peux m'aide pour ce programme

    j'ai quelque jour je travaille sur ce programme et la problemme que meme quand j'ecrit

    #define PIR1 0x0C
    #define T1CON 0x10
    #define CCP1CON 0x17
    #define CCPR1L 0x15
    #define CCPR1H 0x16
    #define CCP1IF PIR1,2
    il y a tous le temps les probleme au niveau de

    T1CON=0x01; //Quartz =4Mhz, prediviseur par 1 temps cycle TIMER1 = 1ƒĘs
    CCP1CON=0x05; // mode capture front montant
    CCP1IF=0; // CCP1IF passe a 1 avec le front montant du fil jaune du ventilo

    merci mais c pas la peine casser ton boule de cristale

  5. #4
    vede

    Cool Re : qui peux m'aide pour ce programme

    re ;O]

    je comprends pas pourquoi tu utilises CCPR1?
    (mais je connais pas le 628...)
    pour "saisir" les impulsions?
    pour définir une "fenêtre"?

    après on dirait que tu testes le bit du flag de l'interruption CCP1 dans ton main :
    Code:
    void main(void)
    {
    //(...)
    while (!CCP1IF)
    //(...)
    }
    ça...j'ai jamais vu ça...

    vede
    ;O]
    ______________________
    Vive les PICS ;O]

  6. A voir en vidéo sur Futura

Discussions similaires

  1. svp qui peut m'aider question pour la GASDE. MASDE
    Par ingelectrique dans le forum Technologies
    Réponses: 0
    Dernier message: 31/03/2009, 18h11
  2. Quelqu'un peut m'aider à modifier ce programme?
    Par checksum18 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/05/2008, 15h33
  3. Réponses: 0
    Dernier message: 18/03/2007, 18h48
  4. pour un problème de pile, qui peut m'aider?
    Par stella71 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/02/2004, 22h21
  5. Conception trop complexe pour mon niveau. Qui peut m'aider ?
    Par Janox dans le forum Électronique
    Réponses: 4
    Dernier message: 19/10/2003, 14h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.