Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

pic 18f4550 entrees analogiques

Envoyé par serge930 
pic 18f4550 entrees analogiques
mercredi 8 juillet 2009 15:15:31
Bonjour,

J'ai réussi à faire fonctionner un pic18f4550 avec un port USB.
Ce fut long, mais cela marche.
Je rencontre des dificultés, pour mettre en oeuvre, le port A,
en mode analogique ....
Il éxiste un grand nombre d'informations, pas trés claires !!!!
Je cherche comment lire une valeur de tension sur le bit 0 du port A.
J'ai un potentiometre entre + et - et le point milieu sur la pin (2) du µp.
Pour le code j'ai essayé, entre autre et par exemple:

byte variable1;
byte variable2;

ADCON0=1;
ADCON1=0x8E;
ADCONbits.GO_DONE=1;
variable1=(byte)ADRESH;
variable2=(byte)ADRESL;

Je retourne ensuite les variables (1&2) sur le port USB (cette partie marche).

En faite c'est dans la partie lecture du port que cela ne fonctionne pas !!!

Si une personne connait la réponse, ou peut m'indiquer ou trouver un exemple simple et clair !!!!

Merci.

serge930.

Re: pic 18f4550 entrees analogiques
jeudi 9 juillet 2009 08:19:24
Salut,

Dans ton programme, tu ne peux pas aller chercher directement les valeurs d'ADRESH et ADRESL, tu dois attendre que la conversion soit finie. Le bit Go de ADCON repasse à 0 quand la conversion est finie, alors soit tu mets une boucle qui attend (si rien d'autres à faire), soit tu mets dans ta fonction principal un pooling si nécessaire (tu peux aussi mettre une interruption mais bon, chaque chose en son temps winking smiley)

A++

Benjamin
Re: pic 18f4550 entrees analogiques
jeudi 9 juillet 2009 09:37:42
Bonjour et merci pour ta réponse rapide.

La nouvelle version de mon code:

byte variable1;
byte variable2;

ADCON0=1;
ADCON1=0x8E;
while(1){
ADCONbits.GO_DONE=1;
while(ADCONbits.GO_DONE);
variable1=(byte)ADRESH;
variable2=(byte)ADRESL;
}

Je n'ai pas tout compris dans l'utilisation de ADCONbits.GO_DONE,
j'oublie sans doute qqchose.
J'ai toujours le même résultat.
Le programme attend environ 10 secondes et me retourne des 0.

Si tu vois pourquoi, cela m'interresse.

Je pense ne pas avoir compris l'utilisation de ces entrées !!!

Merci.
A+.
Serge930.
Re: pic 18f4550 entrees analogiques
jeudi 9 juillet 2009 11:35:08
Attention,

Ton code tourne en rond sans jamais demandé d'envoie, retire le while(1) que tu as mis
Re: pic 18f4550 entrees analogiques
jeudi 9 juillet 2009 17:27:35
Bonjour
Merci pour ta réponse, je progresse !!!!
Si je retire le while(1) et {}
Si je change la valeur du potentiometre, j'ai ADRESH qui change, (mais tous les coups ??? quelquefois il passe à 127)
Il passe de 0 à 255 pour une variation de 0 à 5v.
Par contre ADRESL ne prend que les valeurs (0,64,192).
Je lance la mesure aprés chaque variation du potentiometre, donc ce n'est sans doute pas un probleme de temps.
J'ai essayé aussi d'utiliser la fonction getacd(0,1) avec adc.h,
mais le compilateur ne semble pas la reconnaitre !!!!
Elle est pourtant utilisée dans carte interface (roboticus).
Encore merci pour tes renseignements.
A+.
serge930.
Re: pic 18f4550 entrees analogiques
vendredi 10 juillet 2009 05:21:30
Bonjour
Encore moi !!!!
Je suis sur une nouvelle piste ...
J'ai des doute sur la configuration de ADCON1.
D'aprés le site c.dupaty@aix-mrs.iufm
ADCON1 = 8E donc ADFM = 1
donc: justification à droite et les 6 bits de poids fort de ADRESH sont à 0
Actuelement la valeur de ADRESL laisse suposer le contraire: justification à gauche ce qui entraine les 2 bits de poids fort de ADRESL à 00,01,10,11
et les 6 bits de poids faible de ADRESL à 0.
Je vais essayer d'autres combinaisons de ADCON1.

A+.
serge930.
Re: pic 18f4550 entrees analogiques
vendredi 10 juillet 2009 09:59:35
Salut,
Je remarque aussi que tu n'as pas configuré ADCON2, tu as page 265 du datasheet les valeurs que tu peux utiliser en fonction de la fréquence de ta puce. Si tu ne le configure pas, les résultats de ta mesure seront assez aléatoire

A++

Benjamin
Re: pic 18f4550 entrees analogiques
vendredi 10 juillet 2009 14:03:20
Bonjour,

Effectivement, c'est bien un probleme de justification,
Le bit 7 ADFM doit être à 1,sauf que dans le site sité précedement, il le situait dans ADCON1, alors qu'il est en réalité dans ADCON2, difficile d'obtenir des exemples fiables.
Pour ADCON2, quels sont les criteres de choix (temps acquisition et conversion)???
Je fais des mesures de température, le temps n'est pas trés important de l'ordre de la seconde.
Le µp=18F4550, Xtal=20mHz, (liaison UScool smiley.
Je suppose 20TAD et Frc ou Fosc/64.
est-ce correct ????.

J'aurai donc pour l'entrée pin2 du µp:
ADCON0=01
ADCON1=0x0E
ADCON2=0xBE

Merci.
A+.
serge930.
Re: pic 18f4550 entrees analogiques
samedi 11 juillet 2009 11:55:03
Il ne devrait pas y avoir de problemes, de toute maniere tu le remarqueras très vite cas contraire winking smiley

A++
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter