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

probleme code sur microcontroleur ( code tres simple)



  1. #1
    Albert-cosmoff

    probleme code sur microcontroleur ( code tres simple)


    ------

    bonjour a tous,

    voici mon code :
    Code:
    #define RA0 PORTA.RA0
    #define RA1 PORTA.RA1
    #define RA5 PORTA.RA5
    
    void main()
    {
    ANSELA=0;
    TRISA=0x00; // que des sorties
    PORTA=0xFF; // tout allumé
    
    
    while(1)
    {
    delay_ms(5000);
    PORTA=0x00;
    delay_ms(5000);
    PORTA=0xFF;
    }
    
    
    }
    normalement mon microcontrôleur est sensé allumer et eteindre ma led toutes les 5 sec , le probleme et qu'elle reste allumée mais ne s'eteind jamais , et je ne comprend pas pourquoi

    mon compilateur est microC pro de la plaque easypic v7 ,j'utilise le microcontroleur P12F1840 je sais pas si ca joue mais je precise.

    merci d'avance

    -----

  2. Publicité
  3. #2
    Yoruk

    Re : probleme code sur microcontroleur ( code tres simple)

    Salut,

    Je ne connais pas trop l'assembleur PIC, mais tout semble correct... Quel est ton câblage ? Tu ne t'es pas trompé de PIN ? As tu testé les autres pins qui doivent avoir le même comportement ?
    La robotique, c'est fantastique !

  4. #3
    kevin8z

    Re : probleme code sur microcontroleur ( code tres simple)

    Il est conseillé lors de l'écriture sur les ports d'utiliser LAT, et en lecture utiliser PORT. Peut être que le problème viens de la

  5. #4
    Albert-cosmoff

    Re : probleme code sur microcontroleur ( code tres simple)

    le probleme en faite vient du delay
    delay_ms(5000) =50 secondes ...

    je sais pas pourquoi d'ailleur
    vous avez une idée ?

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

    Re : probleme code sur microcontroleur ( code tres simple)

    Citation Envoyé par Yoruk Voir le message
    Salut,

    Je ne connais pas trop l'assembleur PIC, mais tout semble correct... Quel est ton câblage ? Tu ne t'es pas trompé de PIN ? As tu testé les autres pins qui doivent avoir le même comportement ?
    Son code n'est pas en assembleur, il est en C...

    Si tu remarque, il utilise tout les pin en même temps. Je ne connais pas le C car je programme en Assembleur mais j'ai l'impression qu'il n'y a pas de retour pour créé une boucle, je croix que le problème viens de la.

  8. #6
    kevin8z

    Re : probleme code sur microcontroleur ( code tres simple)

    Citation Envoyé par mgduc Voir le message
    Son code n'est pas en assembleur, il est en C...

    Si tu remarque, il utilise tout les pin en même temps. Je ne connais pas le C car je programme en Assembleur mais j'ai l'impression qu'il n'y a pas de retour pour créé une boucle, je croix que le problème viens de la.
    En C une boucles, dans ce cas infinie, s'écrit while(1){blablabla}

    Citation Envoyé par Albert-cosmoff Voir le message
    le probleme en faite vient du delay
    delay_ms(5000) =50 secondes ...

    je sais pas pourquoi d'ailleur
    vous avez une idée ?
    Problème normalement 5000ms équivaut à 5secondes.
    - Soit cette fonction fait des multiple de 10, donc si tu met 1 en argument ça équivaut à 10ms.
    - Soit La fréquence de travail de ton PIC et 10 fois inférieure à celle défini pour cette fonction. Généralement un #define est utilisé, dans le fichier de cette tempo tu devrais trouver quelque chose du genre #define FOSC 100000(par exemple)

  9. Publicité
  10. #7
    freepicbasic

    Re : probleme code sur microcontroleur ( code tres simple)

    ça dépend du compilateur...
    Mais normalement on doit déclarer le type de µc avec un #include
    et metrre les bits de config avec _CONFIG

    voir aussi s'ls sont programmés
    Dernière modification par freepicbasic ; 08/03/2014 à 18h14.
    A+, pat

  11. #8
    Yoruk

    Re : probleme code sur microcontroleur ( code tres simple)

    Oui autant pour moi, c'est du C (je suis en train d'apprendre celui des Atmel). J'imagine que PORTA est équivalent de DDRA en Atmel ?

    Je pense aussi que delay_ms(5000) est correct. Une idée serait d'ouvrir le code associé et de vérifier s'il n'y a pas une valeur de clock incorrecte par défaut. Pourquoi ne pas tenter aussi l'inverse, à savoir:

    Code:
    {
    delay_ms(5000);
    PORTA=0xFF;
    delay_ms(5000);
    PORTA=0x00;
    }
    Et vérifier que la led est bien éteinte ?
    La robotique, c'est fantastique !

  12. #9
    paolo123

    Re : probleme code sur microcontroleur ( code tres simple)

    essaye ca

    Code:
    
    
    void main()
    {
    ANSEL=0;
    TRISIO=0x00; // que des sorties
    GPIO=0xFF; // tout allumé
    
    
    while(1)
    {
    delay_ms(5000);
    GPIO=0x00;
    delay_ms(5000);
    GPIO=0xFF;
    }
    
    
    }

  13. #10
    paolo123

    Re : probleme code sur microcontroleur ( code tres simple)

    remplace par du décimal au lieu de l'hexa, tu mets PORTA = 0 et PORTA = 1;

  14. #11
    gienas
    Modérateur

    Re : probleme code sur microcontroleur ( code tres simple)

    Bonsoir Albert-cosmoff et tout le groupe

    Citation Envoyé par Albert-cosmoff Voir le message
    ... le problème et qu'elle reste allumée mais ne s'éteind jamais , et je ne comprend pas pourquoi ...
    Il serait intéressant, avant de se lancer dans des considérations de programmation/code, de vérifier si ton allumage initial est bien celui que tu as prévu.

    Tu as écrit, juste avant ta boucle:

    Code:
    PORTA=0xFF; // tout allumé
    Tu pourrais essayer d'autres combinaisons, n'allumant pas tout, mais quelques bits seulement.

    Cela te permettra de savoir si ton hard reproduit bien ton soft (supposé). Je soupçonne un auto-allumage, "indépendant" de ton code.

  15. #12
    nordiste

    Re : probleme code sur microcontroleur ( code tres simple)

    kevin8z a raison, il faut définir la fréquence de fonctionnement de ton microcontrôleur avant d'utiliser les fonctions delay_ms().

    dans mikroc tu as un champ fréquence dans la config de ton projet, tu doit y mettre la bonne fréquence et ça devrait fonctionner.

  16. Publicité
  17. #13
    kevin8z

    Re : probleme code sur microcontroleur ( code tres simple)

    Citation Envoyé par nordiste Voir le message
    kevin8z a raison, il faut définir la fréquence de fonctionnement de ton microcontrôleur avant d'utiliser les fonctions delay_ms().

    dans mikroc tu as un champ fréquence dans la config de ton projet, tu doit y mettre la bonne fréquence et ça devrait fonctionner.
    Je parlai de #define, je n'avais pas fait attention qu'il utilisait MikroC. Oui exact dans la configuration de projet il pourra configurer cette fréquence, mais aussi tout les bits de config.

  18. #14
    Albert-cosmoff

    Re : probleme code sur microcontroleur ( code tres simple)

    ok probleme resolu,merci de votre aide

  19. #15
    gienas
    Modérateur

    Re : probleme code sur microcontroleur ( code tres simple)

    Bonjour à tous

    Citation Envoyé par Albert-cosmoff Voir le message
    ... problème resolu ...
    Ce serait sympa de dire comment/pourquoi/quel était ton problème. Ainsi, la discussion pourra profiter à d'autres, comme c'est l'habitude sur tous les forums.

    C'est une façon de "renvoyer la balle".

  20. #16
    terriblement

    Re : probleme code sur microcontroleur ( code tres simple)

    Attention aux fonction delay toute faites,

    elles dépendent de la fréquence de ton micro comme dis plus haut (suffis de la déclarer avec une macro genre #FREQ_CPU 40000000 (a voir la bonne macro à utiliser).
    Elles ont également une limite, tu devrais essayer un temps plus court, peut etre 500ms

  21. #17
    boucharde89

    Re : probleme code sur microcontroleur ( code tres simple)

    D'accord avec GENIAS

Discussions similaires

  1. Code : anti proxy simple
    Par nikcos dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 05/09/2011, 22h44
  2. Réponses: 18
    Dernier message: 08/08/2011, 09h49
  3. Un langage codé léger, 2 caractères non codé=1 caractère codé. Une solution?
    Par Santofr dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 30/06/2010, 10h02
  4. [PIC 16f886] Un simple code ne marche pas
    Par blinkseb dans le forum Électronique
    Réponses: 2
    Dernier message: 01/02/2009, 14h34
  5. code et microcontroleur
    Par Hz.Adn dans le forum Électronique
    Réponses: 2
    Dernier message: 13/01/2007, 16h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.