PIC16F876 : Convertion A/D program

Fermé
Cotton - Modifié par jipicy le 14/02/2014 à 15:51
 Utilisateur anonyme - 14 févr. 2014 à 19:11
Bonjour à tous et à toutes,

Je vous préviens d'entrée que je suis novice dans cette discipline.

Je suis en ce moment, pour mon plaisir personnel, en train de concevoir un programme me permettant de convertir une tension analogique en entrée d'un PIC16F876.
Cette tension, est modifiable via un potentiomètre.
Dans mon programme, que je vais copier juste après, doit, en théorie, convertir cette tension. De plus, si la tension numérisée est plus élevée que 2,5V, alors j'allume une LED.

Voici mon programme en C sous MPLAB IDE V2.00


#include<pic16f876.h>


//
//
//

    
void main (void)
{
    unsigned int res;
    int resultat;
    float conversion;
    float q;
    
    resultat = 0;
    q = 0,004887;

    TRISA = 0b00000001;
    TRISB = 0b00000000;
    ADCON0 = 0b11000001;
    ADCON1 = 0b00000000;
   
   
    while(1)
    {
         
    GO = 1;
    while (GO == 1);


    res = ADRESH;
    res = res<<8;
    resultat = res+ADRESL;

    conversion = resultat*q;

    
    if (conversion > 2,5)
    {
        RB1 = 1;
    }
    else
    {
        RB1 = 0;
    }
            
    }

}

Selon MPLAB, je n'ai aucune erreur de syntaxe. Néanmoins, lorsque je le test avec Proteus ISIS, rien ne se passe. Pourtant la simulation se déroule sans erreurs.

Pouvez vous m'aider ?

Je vous remercie.

Cotton.

5 réponses

Bonjour

Tes initialisations ne sont pas cohérentes.
Avec la valeur que tu mets dans ADCON0, tu déclares AN0 à AN4 comme entrées analogiques : tu dois alors mettre les bits correspondants de TRISA à 1
Ensuite, d'après ta valeur de ADCON1, tu demandes des résultats de conversion cadrés à gauche.(ADFM=0). Or tu traites la mesure comme si elle était cadrée à droite.

Mais même avec ces erreurs, ta sortie devrait quand même changer. Attention, à cause de l'erreur de cadrage, elle ne va être à 1 que pour des valeurs de quelques centaines de mV à 2,5V, ensuite tu risques de te retrouver avec une valeur négative.

Corrige-donc d'abord ces erreurs surtout le cadrage du résultat de conversion.
0
Je vais m'y employer et revenir pour commenter.
0
Le PIC ne répond toujours pas. J'ai même essayé de faire clignoter une LED sur une autre broche pour voir si le programme tournait quand même, mais même cela ne marche pas comme je le veux.
0
Je ne connais pas ISIS. Tu sais simuler une tension variable sur une entrée avec ce système?
Si ISIS est un simulateur, tu dois bien pouvoir mettre mettre un point d'arrêt et examiner tes variables pour voir si elles se comportent comme tu le désires.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je ne sais pas si cette fonction est disponibles sous ISIS.
0
Utilisateur anonyme
14 févr. 2014 à 19:11
Je ne sais pas si cette fonction est disponibles sous ISIS.
De quelle fonction parles-tu ? J'en avais évoqué plusieurs et tu ne précises pas de laquelle tu parles
0