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] Problème de type de variable


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] Problème de type de variable
    Bonsoir, je tente en ce moment de me mettre à la programmation de PIC16F877, je désire réaliser une conversion analogique numérique mais en premier, je code une fonction qui doit récupérer le résultat de la conversion et le stocker dans une variable appelée valeurDecimale. Voici le code que je tente d'exécuter en simulation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int calculResultat(void)
    {
        ADRESH=0b00000011;
        ADRESL=0b11111111;      //Lignes ajoutées pour la simulation
        uns8 valeurDecimale=0;
        valeurDecimale=ADRESL;
        valeurDecimale+=(ADRESH<<8);
        return valeurDecimale;
    }
    Ce code est compilé sans problème, mais lorsque je simule, valeurDecimale est égale à 255. Je me doute que c'est parce que la variable n'est codée que sur 8 bits, or le résultat de la conversion est codé sur 10 bits, je modifie alors le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int calculResultat(void)
    {
        ADRESH=0b00000011;
        ADRESL=0b11111111;
        uns16 valeurDecimale=0;
        valeurDecimale=ADRESL;
        valeurDecimale+=(ADRESH<<8);
        return valeurDecimale;
    }
    Mais là, MPLAB refuse ce code et m'affiche "Local RAM block is splitted, rambank 0 (I was not possible to allocate local RAM space in a continuous block. This can be due to variables located at specific locations)".

    Si je comprends bien, ça signifie que le PIC16F877 ne peut pas stocker des entiers supérieurs à 255 , dans ce cas comment faire pour récupérer le résultat de la conversion, qq1 aurait-il une idée svp ?

    Merci par avance

  2. #2
    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
    Bonjour,

    Comment sont définis les types uns8 et uns16 ? As-tu essayé de changer le type de retour int par uns16 ?

    Pourrais-tu nous montrer le log de compilation entier ?

    Utilises-tu MPLAB X (avec XC8) ou MPLAB 8 ?

Discussions similaires

  1. [PHP 5.3] problème de type de variable
    Par Godard dans le forum Langage
    Réponses: 2
    Dernier message: 30/07/2010, 09h17
  2. Réponses: 2
    Dernier message: 22/12/2009, 22h29
  3. Problème de type de variable avec la fonction find
    Par Sarune dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/11/2008, 17h06
  4. problème de type de variable
    Par miketidy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/07/2008, 16h01
  5. problème de type de variables
    Par Jasmine80 dans le forum Langage
    Réponses: 4
    Dernier message: 16/06/2008, 12h40

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