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 :

[MPLAB simulation] Problème de gestion des sorties


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut [MPLAB simulation] Problème de gestion des sorties
    Bonsoir, je me lance actuellement dans une autre application du langage C que celle que j'avais jusqu'à présent : La programmation du microcontrôleur PIC16F877. Pour le moment, je ne dispose que du logiciel MPLAB et du compilateur CC5X, en attendant d'avoir tout le matériel, je me contente de simuler, j'essaie alors de simuler ce code tout simple censé faire clignoter une LED :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #define RA0 PORTA.0
     
    void main(void)
    {
        RA0=0;
        TRISA=0b00000000;
        while(1)
        {
            RA0=0;
            RA0=1;
        }
    }
    Mais lorsque je regarde la valeur binaire du port A en simulation, celle-ci reste égale à 0b00000000, même en simulant pas à pas ; je modifie alors le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void main(void)
    {
        TRISA=0b00000000;
        while(1)
        {
            PORTA=0b00000000;      
            PORTA=0b11111111;
        }
    }
    Cette fois, la simulation affiche comme valeur binaire : 0b00010000 J'avoue ne plus savoir quoi faire, jusqu'à preuve du contraire, la ligne PORTA=0b11111111 signifie que l'on met tous les bits du port A à 1 et pas seulement le 4ème, je me trompe ?

    Voici une capture d'écran de ce que j'obtiens :



    Quelqu'un a-t-il déjà été confronté à ce problème ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Bonjour,

    Si tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(1)
    {
        PORTA=0b00000000;
        PORTA=0b11111111;
    }
    … tu alternes l'état des bits à la vitesse maximale possible par ton processeur. Ça veut dire que tes LEDs vont clignoter des millions de fois par seconde et tu n'auras l'impression que de les voir à moitié allumées. En outre, il faut prendre en compte la durée du saut dans ta boucle, ce qui fait qu'elles resteront sensiblement plus longtemps allumées qu'éteintes.

    Sur un simulateur, en revanche, je ne sais pas ce que cela peut donner, mais il est probable que celui-ci attende un certain seuil avant d'effectuer sa mise à jour, qui peut ne jamais se produire si ton programme tourne en boucle. Que se passe-t-il si tu exécutes ce dernier programme en pas-à-pas ?

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2013
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 309
    Points : 105
    Points
    105
    Par défaut
    Merci pour ta réponse, j'ai aussi songé à ça mais le problème est le même en pas à pas. J'ai d'ailleurs fait un autre test dans lequel je maintiens tous les bits à 1 et le résultat est le même

    Edit : En y regardant de plus près j'ai l'impression que seul le 4ème bit est "autorisé" à changer de valeur, pourtant j'ai bien mis tous les bits du registre TRISA à 0

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Sur les PIC18, il faut écrire dans LAT plutôt que PORT, mais en lisant la datasheet, je m'aperçois qu'il n'y a pas de LAT sur les PIC16… http://ww1.microchip.com/downloads/e...Doc/30292D.pdf

    Je pense qu'il faut que tu vérifies les types des sorties. Je vois que beaucoup de sorties du port A sont des sorties analogiques. Je crois que par défaut, les sorties sont analogiques et non numériques (je crois avoir eu le problème sur PIC18). Comme par hasard, la seule sortie qui bouge chez toi est celle qui n'est pas relié à une ANx.

Discussions similaires

  1. Problème de gestion des exceptions
    Par Artasali dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/02/2007, 03h20
  2. Réponses: 3
    Dernier message: 18/01/2007, 16h25
  3. [SQL 2005] problèmes de gestion des chiffres décimaux
    Par skystef dans le forum Accès aux données
    Réponses: 1
    Dernier message: 10/01/2007, 11h40
  4. Problème de gestion des langues avec MFC
    Par Figaro dans le forum Visual C++
    Réponses: 4
    Dernier message: 20/11/2006, 15h56
  5. [FLASH 8] Problème de gestion des clips.
    Par glingo dans le forum Flash
    Réponses: 4
    Dernier message: 09/03/2006, 16h17

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