Config entré CAN sur Pic 12f675
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Config entré CAN sur Pic 12f675



  1. #1
    jlfreerider

    Config entré CAN sur Pic 12f675


    ------

    Boujour,
    J'ai un niveau de debutant en se qui concerne la programmation de PIC et je bute sur un disfonctionnement.
    Avec des exemple trouvé sur le net en Mikropascal, je voudrai simplement utilisé les 2 CAN d'un 12f675
    mais une fois le montage sous tension un seul des CAN (AN0) semble reagir, l'autre (AN1) semble inactif.
    Je pense qu'il doit y avoir un soucis dans procedure Init, mais je ne vois pas quoi.
    pouvez m'aider ?

    merci


    code en MikroP :


    program

    var
    wIn: word; // variable contenant la valeur numérisée de la tension analogique

    procedure Init;
    begin
    OPTION_REG := %10000000; // pullup désactivé (bit 7 à 1)
    TRISIO.0 := 1; // GP0 configuré en entrée (analogique ou numérique)
    TRISIO.1 := 1; // GP1 configuré en sortie (analogique ou numérique)
    TRISIO.2 := 0; // GP2 configuré en sortie, commande led D3
    TRISIO.3 := 1; // GP3 non utilisé, configuré en entrée
    TRISIO.4 := 0; // GP4 configuré en sortie, commande led D2
    TRISIO.5 := 0; // GP5 configuré en sortie, commande led D1
    CMCON := %00000111; // désactivation comparateurs, on peut aussi écrire CMCON := 7;
    ANSEL.ANS0 := 1; // utilisation de l'entrée GPIO.0 comme entrée analogique (AN0)
    ANSEL.ANS1 := 1; // utilisation de l'entrée GPIO.1 comme entrée analogique (AN1)
    ANSEL.ANS2 := 0; // utilisation de l'entrée GPIO.2 comme sortie numérique (GP2)
    ANSEL.ANS3 := 0; // utilisation de l'entrée GPIO.4 comme sortie numérique (GP4)
    ADCON0.ADFM := 1; // 0 = left justified, 1 = right justified
    ADCON0.VCFG := 0; // tension de référence = VDD
    ADCON0.ADON := 1; // activation du module convertisseur A/D
    ADCON0.ADCS0 := 1; // |
    ADCON0.ADCS1 := 0; // | ADCS = 100 = Fosc/4
    ADCON0.ADCS2 := 0; // |

    GPIO.2 := 0;
    GPIO.4 := 0;
    GPIO.5 := 0;
    end;

    // main program
    begin
    Init;
    while true do
    begin
    wIn := ADC_Read(0); // lecture entrée analogique AN0
    if (wIn >= 1000) then
    begin
    GPIO.4 := 0;
    GPIO.5 := 0;
    end
    else if (win < 1000) then
    begin
    GPIO.4 := GPIO.4 xor 1;
    Delay_ms(500);
    GPIO.5 := 1;
    end
    end;
    begin
    wIn := ADC_Read(1); // lecture entrée analogique AN1
    if (wIn >= 500) then
    begin
    GPIO.2 := 0;
    end
    else if (win < 500) then
    begin
    GPIO.2 := 1;
    end
    end;
    delay_ms(100);
    end.

    -----

  2. #2
    zhal

    Re : Config entré CAN sur Pic 12f675

    Bonjour,

    Attention Attention ...

    Quand on prendl les exemples sur Internet il ne faut pas recopier et esperer que cela fonctionne.
    IL faut toujours prendre le temps de comprendre le fonctionnement du PIC.

    Commence par lire attentivement la Datasheet du 12F675 pour comprendre le principe.

    Ainsi tu comprendras que le PIC n'a qu'UN SEUL CAN, et que ton problème se situe a mon avis dans la configuration des Bits de registre.

  3. #3
    jlfreerider

    Re : Config entré CAN sur Pic 12f675

    Boujour, la config était bonne en faite.
    j'ai fait une erreur dans le program, l'ordre pour le 2ème CAN n'était pas dans la boucle" while true do "
    maintenant sa fonctionne

    merci tout de même


    program

    var
    wIn: word; // variable contenant la valeur numérisée de la tension analogique

    procedure Init;
    begin
    OPTION_REG := %10000000; // pullup désactivé (bit 7 à 1)
    TRISIO.0 := 1; // GP0 configuré en entrée (analogique ou numérique)
    TRISIO.1 := 1; // GP1 configuré en sortie (analogique ou numérique)
    TRISIO.2 := 0; // GP2 configuré en sortie, commande led D3
    TRISIO.3 := 1; // GP3 non utilisé, configuré en entrée
    TRISIO.4 := 0; // GP4 configuré en sortie, commande led D2
    TRISIO.5 := 0; // GP5 configuré en sortie, commande led D1
    CMCON := %00000111; // désactivation comparateurs, on peut aussi écrire CMCON := 7;
    ANSEL.ANS0 := 1; // utilisation de l'entrée GPIO.0 comme entrée analogique (AN0)
    ANSEL.ANS1 := 1; // utilisation de l'entrée GPIO.1 comme entrée analogique (AN1)
    ANSEL.ANS2 := 0; // utilisation de l'entrée GPIO.2 comme sortie numérique (GP2)
    ANSEL.ANS3 := 0; // utilisation de l'entrée GPIO.4 comme sortie numérique (GP4)
    ADCON0.ADFM := 1; // 0 = left justified, 1 = right justified
    ADCON0.VCFG := 0; // tension de référence = VDD
    ADCON0.ADON := 1; // activation du module convertisseur A/D
    ADCON0.ADCS0 := 1; // |
    ADCON0.ADCS1 := 0; // | ADCS = 100 = Fosc/4
    ADCON0.ADCS2 := 0; // |

    GPIO.2 := 0;
    GPIO.4 := 0;
    GPIO.5 := 0;
    end;

    // main program
    begin
    Init;
    while true do
    begin
    wIn := ADC_Read(0); // lecture entrée analogique AN0
    if (wIn >= 1000) then
    begin
    GPIO.4 := 0;
    GPIO.5 := 0;
    end
    else if (win < 1000) then
    begin
    GPIO.4 := GPIO.4 xor 1;
    Delay_ms(500);
    GPIO.5 := 1;
    end;
    //end;
    //begin

    wIn := ADC_Read(1); // lecture entrée analogique AN1
    if (wIn >= 500) then
    begin
    GPIO.2 := 0;
    end
    else if (win < 500) then
    begin
    GPIO.2 := 1;
    end
    end;
    delay_ms(100);
    end.

  4. #4
    zhal

    Re : Config entré CAN sur Pic 12f675

    TOujours galere le pics et le CAN quel que soit le language

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

    Re : Config entré CAN sur Pic 12f675

    pas trop galere, disons qu'il y a une tournure a prendre qui est pas toujours simple...

  7. #6
    alainav1

    Re : Config entré CAN sur Pic 12f675

    petit rectification
    tu as ecris
    TRISIO.1 := 1; // GP1 configuré en sortie (analogique ou numérique)
    mais tu voulais surement ecrire
    TRISIO.1 := 1; // GP1 configuré en entrée(analogique ou numérique)
    Décider de faire, c'est bien . Décider quand, c'est mieux !

  8. #7
    invitefaaca50b

    Re : Config entré CAN sur Pic 12f675

    Pas genant, c'est juste une erreur de commentaire, ca touche pas au programme.

    Euh un truc qui me chiffonne:
    //end c'est bien un commentaire? pas une instruction? de meme que //begin non???
    Donc rajouter en rouge //end et ensuite //begin, ca modifie rien au soft...

  9. #8
    jlfreerider

    Re : Config entré CAN sur Pic 12f675

    Donc oui en effet dans le commentaire il fallait lire " TRISIO.1 := 1; // GP1 configuré en entrée(analogique ou numérique) "

    En rouge c'est une partie du programme que j'ai passé en commentaire, c'était pour que ceux qui lisent le post comprenne se que j'avais suprimé au programme pour qu'il fonctionne correctement.

  10. #9
    invitefaaca50b

    Re : Config entré CAN sur Pic 12f675

    ok j'avais mal compris, je croyais que c'etait l'inverse, un ajout... donc dans ce cas, ca marchera alors.

Discussions similaires

  1. pic 12F675
    Par invite4f140ec4 dans le forum Électronique
    Réponses: 2
    Dernier message: 26/06/2011, 13h48
  2. PIC 12F675 cramé ou pas ?
    Par invite743445eb dans le forum Électronique
    Réponses: 3
    Dernier message: 07/12/2010, 07h33
  3. GPIO.0 en entrée sur pic 12F675 et 629
    Par emile62 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/07/2009, 10h42
  4. Pic 12F675 et bouton poussoir
    Par invite92bb58f7 dans le forum Électronique
    Réponses: 8
    Dernier message: 18/04/2008, 16h47
  5. Aide config 12F675 et 16F 628
    Par alainav1 dans le forum Électronique
    Réponses: 3
    Dernier message: 15/05/2007, 15h05
Découvrez nos comparatifs produits sur l'informatique et les technologies.