petit problème programmation 18F252
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

petit problème programmation 18F252



  1. #1
    UNTOUCHABLE

    Talking petit problème programmation 18F252


    ------

    Bonjour tout le monde
    Je programme en C le 18F252 avec MCC18 et j'ai besoin d'aide pour un truc tout simple !
    Je voudrais faire clignoter les DEL 1 à 4 connectées respectivement de PORTAbits.RA0 à PORTAbits.RA3
    Pour çelà, je tape :
    for(;
    {
    PORTAbits.RA0 = 1;
    PORTAbits.RA1 = 1;
    PORTAbits.RA2 = 1;
    PORTAbits.RA3 = 1;
    temps(1000); // 1000 ms
    PORTAbits.RA0 = 0;
    PORTAbits.RA1 = 0;
    PORTAbits.RA2 = 0;
    PORTAbits.RA3 = 0;
    temps(1000); // 1000 ms
    }
    Seulement quand je test ce petit bout de code en grandeur nature, seul la DEL 4 est allumé (RA3). En visualisant les sorties a l'oscilloscope, j'ai remarquais que les sorties RA0 à RA2 passais bien a l'état haut mais pas pendant une seconde (beaucoup moins en fait )

    Je suis sur que c'est tout bète mais je trouve pas

    -----

  2. #2
    invite6cb8b74b

    Re : petit problème programmation 18F252

    Bonjour,
    Ton portA est en sortie ?
    JC

  3. #3
    UNTOUCHABLE

    Re : petit problème programmation 18F252

    Bhen je pense oui, j'ai mis TRISA = 0;

  4. #4
    Gérard

    Re : petit problème programmation 18F252

    Le portA, n'est-il pas en entrée analogique par défaut ?

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

    Re : petit problème programmation 18F252

    Le portA, n'est-il pas en entrée analogique par défaut ?
    Si mais je pense qu'en mettant TRISA = 0, celà le met en sortie logique (Je me trompe peut ètre )
    Mais ce qui est bizard, c'est que si je met RA2 ou une autre sortie a la place de RA3, celle si passe a l'état haut comme prévu.
    En fait j'ai l'impression que seul la ligne au dessus de temps(1000) marche bien !!???

  7. #6
    invite6cb8b74b

    Re : petit problème programmation 18F252

    tu n'as mis en service un module par ailleurs (CAN par ex.)
    Sinon essayes de voir ce que ca donne si tu changes PORTA par PORTB.
    A+
    JC

  8. #7
    UNTOUCHABLE

    Re : petit problème programmation 18F252

    Salut,
    C'est pareil que ce soit sur le PORT A, B ou C...
    Parcontre si je met ça , ça marche
    for(;; )
    {
    PORTA = 0b00001111;
    temps(1000); // 1000 ms
    PORTA = 0b00000000;
    temps(1000); // 1000 ms
    }
    Les 4 Del clignotent. Mais le problème c'est que je change par la mème occasion l'état de RA4, RA5, RA6,et RA7
    Qu'elqu'un a une petite idée

  9. #8
    invite6cb8b74b

    Re : petit problème programmation 18F252

    T'as essayé de simuler sous MPLAB ?
    Perso, J'aurais jetter un oeil sur l'ASM généré pour être sur qu'on a du bcf et bsf sur les bits concernés par les modifs.
    En y repensant (et comme tu vois RA0 à RA2 passer de 1 à 0 à l'oscillo mais rapidement) ca donne l'impression que l'écriture concerne tout le port et pas seulement le bit ciblé.
    Pour en être sur tu pourrais faire :

    PORTA = 0b00001111;
    temps(1000); // 1000 ms
    PORTAbits.RA0 = 0;
    temps(1000); // 1000 ms

    si toutes tes leds s'éteigne, c'est que l'écriture concerne tout le port et pas seulement le bit ciblé.
    A+
    JC

  10. #9
    invite03481543

    Re : petit problème programmation 18F252

    Bonsoir,

    CMCON = 0x07;

  11. #10
    UNTOUCHABLE

    Re : petit problème programmation 18F252

    En effet en faisant comme t'as dit JC22, toutes les del clignotent...
    Par contre c'est quoi CMCON mentionné par HULK28 ?

  12. #11
    invite6cb8b74b

    Re : petit problème programmation 18F252

    Salut,
    J'ai cherché le CMCON de hulk hier soir dans plusieurs datasheet de plusieurs familles de PIC et j'ai rien trouvé .
    Il va nous dire ca !
    Sinon pour ton pb, il y a aussi surement moyen d'insérer directement de l'assembleur dans ton source C avec une directive du compilo genre
    #asm
    bcf PORTA,x
    #endasm
    J'ai mis ca au pif, mais c'est quasi sûr que ca existe (sans doute dans une autre syntaxe)
    A+
    JC

  13. #12
    invite03481543

    Re : petit problème programmation 18F252

    Bonsoir,

    désolé fausse piste, il n'y a pas de registre de comparateurs dans celui-ci.

    Pensez y quand même une autre fois, ça peut servir.
    @+

  14. #13
    Gérard

    Re : petit problème programmation 18F252

    Voir page 182 : il faut écrire ADCON1 = 7 pour que toutes les entrées ana soient en digitales.
    D'autres options existent.

  15. #14
    UNTOUCHABLE

    Re : petit problème programmation 18F252

    Merci gérard pour ton intervention ça ne résou pas mon problème mais je cherchais justement la syntaxe de ADCON (maintenant j'ais troivé )
    C'est bizard que le 18F ne laisse pas a l'état haut les sortie quand on lui demande ! Moi je pensé que si je tapais :
    PORTAbits.RA0 = 1;
    .... suite du programme .....
    etat = PORTAbits.RA0;

    La valeur "etat" est censé ètre de 1 mais elle est en fait de 0. En fait PORTAbits.RA0 n'est a 1 que pendant qu'il lit cette ligne :PORTAbits.RA0 = 1;
    Il doit y avoir un truc tout bète qu'on ne pense pas

  16. #15
    invite6cb8b74b

    Re : petit problème programmation 18F252

    Salut,
    T'as pas jetter un oeil sur l'assembleur généré ? Poste le si tu veux, on pourra regarder. Ca sera plus rapide, je pense.
    A+
    JC

  17. #16
    Gérard

    Re : petit problème programmation 18F252

    Citation Envoyé par UNTOUCHABLE Voir le message
    Merci Gérard pour ton intervention ça ne résoud pas mon problème mais je cherchais justement la syntaxe de ADCON (maintenant j'ai trouvé )

    .....

    C'est quoi "la syntaxe de ADCON" ?

    A la mise sous tension, le portA est en entrée ana.
    Pour avoir des E/S numériques :
    movlw 7
    movwf ADCON1

    il faut évidemment être dans la bonne banque de RAM

  18. #17
    MorpheusPic

    Re : petit problème programmation 18F252

    c'est quand meme etrange comme probleme ...


    essay sa je pense que sa doit marcher

    for(;
    {
    LATAbits.RA0 = 1;
    LATAbits.RA1 = 1;
    LATAbits.RA2 = 1;
    LATAbits.RA3 = 1;
    temps(1000); // 1000 ms
    LATAbits.RA0 = 0;
    LATAbits.RA1 = 0;
    LATAbits.RA2 = 0;
    LATAbits.RA3 = 0;
    temps(1000); // 1000 ms
    }


    tu peut essayer de mieux cerner le probleme en ralentisant ton prog
    comme ceci


    for(;
    {
    PORTAbits.RA0 = 1;
    temps(1000); // 1000 ms
    PORTAbits.RA1 = 1;
    temps(1000); // 1000 ms
    PORTAbits.RA2 = 1;
    temps(1000); // 1000 ms
    PORTAbits.RA3 = 1;

    temps(1000); // 1000 ms
    PORTAbits.RA0 = 0;
    temps(1000); // 1000 ms
    PORTAbits.RA1 = 0;
    temps(1000); // 1000 ms
    PORTAbits.RA2 = 0;
    temps(1000); // 1000 ms
    PORTAbits.RA3 = 0;
    temps(1000); // 1000 ms
    }

    a+

  19. #18
    UNTOUCHABLE

    Re : petit problème programmation 18F252

    Merci de vos réponses
    quand je met LATAbits.RA0, il met error [1205] unknown member 'RA0' in '__tag_12' ????
    Ps: j'ai quand mème réussis a faire la suite de mon programme em métant PORTA = ... Pour le moment, ça marche mais je sen que dans un plus gros programme, je vais avoir du mal !

Discussions similaires

  1. petit problème en programmation
    Par Redouanetroy dans le forum Électronique
    Réponses: 0
    Dernier message: 21/06/2008, 13h13
  2. Réponses: 3
    Dernier message: 22/06/2006, 10h22
  3. GrOs PeTit Probleme programmation!
    Par invite70a6d0ab dans le forum Électronique
    Réponses: 5
    Dernier message: 23/05/2006, 16h55
  4. programmation d'un petit firewall
    Par acx01b dans le forum Internet - Réseau - Sécurité générale
    Réponses: 9
    Dernier message: 24/09/2004, 07h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.