Tom's Guide > Forum > Programmation > Conversion A/D PIC 18F4520

Conversion A/D PIC 18F4520

Forum Programmation : Conversion A/D PIC 18F4520

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour à vous !


Je voudrai réaliser un programme permettant une conversion analogique numerique avec un PIC 18F4520. J'utilise le logiciel et une carte de test MPLAB V8 avec MCC18.
Il faudrait donc un programme avec une initialisation de l'adc ainsi que le programme de conversion.

J'ai essayé l'initialisation ce qui donne ceci (Mon probleme est que j'ai très peu de base en langage C :'( ) :


Code :
  1. #include <p18f4520.h>
  2. #include <adc.h>
  3. void main(void)
  4. {
  5.     TRISA=1;                     // PORTA en Entrée
  6.     PORTA=1;                     // PORTA a 1
  7.     ADCON0bits.ADON = 1 ;        // A/D convert ON
  8.     ADCON0bits.CHS0 = 0    ;    // Choisir la voie a convertir => AN0
  9.     ADCON0bits.CHS1 = 0    ;    // Choisir la voie a convertir => AN0
  10.     ADCON0bits.CHS2 = 0    ;    // Choisir la voie a convertir => AN0
  11.     ADCON0bits.CHS3 = 0    ;    // Choisir la voie a convertir => AN0
  12.     ADCON1bits.PCFG0 = 1 ;        // Configuration des ports A/D = AN1 et AN0
  13.     ADCON1bits.PCFG1 = 0 ;        // Configuration des ports A/D = AN1 et AN0
  14.     ADCON1bits.PCFG2 = 1 ;        // Configuration des ports A/D = AN1 et AN0
  15.     ADCON1bits.PCFG3 = 1 ;    // Configuration des ports A/D = AN1 et AN0
  16.     ADCON1bits.VCFG0 = 0 ;    // references de tension a utiliser par le CAN => Vref+ = Vdd
  17.     ADCON1bits.VCFG1 = 0 ;    // references de tension a utiliser par le CAN => Vref- = Vss
  18.     ADCON2bits.ADCS0 = 0 ;        // configurer horloge selection
  19.     ADCON2bits.ADCS1 = 0 ;        // configurer horloge selection
  20.     ADCON2bits.ADCS2 = 1 ;        // configurer horloge selection
  21.     ADCON2bits.ACQT0 = 0 ;        // configurer un temps d'acquisition
  22.     ADCON2bits.ACQT1 = 0 ;        // configurer un temps d'acquisition
  23.     ADCON2bits.ACQT2 = 0 ;        // configurer un temps d'acquisition
  24.     ADCON2bits.ADFM =  1 ;        // justification a droite
  25.     ADRESH=0x00 ;                // Mise à zero du registre ADRESH
  26.     ADCON0bits.GO_DONE = 1;        // A/D conversion in progress (Start Of Conversion)
  27. while(ADCON0bits.GO_DONE); // Attente de l'EOC
  28.     {
  29.     ADCON0bits.GO_DONE=0; // EOC
  30.     X=ADRESH;
  31.     X<<=8;
  32.     X|=ADRESL;
  33.     }



Pourriez vous me dire ce qui ne va pas dans le bout de programme ci-dessus ? les choses à modifier ect ...

Pour la suite (conversion), je ne sais pas du tout comment faire ...

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Salut, c'est un poil trop technique ton topic :)
mais en regardant ton code on peut déjà remarquer deux choses
while(ADCON0bits.GO_DONE);
-->pas de ; à la fin pour ce type d'intruction, par contre pour un do/while il yen aurait un.
Moins grave, le main retourne un int et non void, il faudrait remplacer
void main(void) par int main(int argc, char **argv), pour le reste je peux pas aider

Répondre à Anonyme

Oui, il y a un while(1); qui bloque le programme :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > Conversion A/D PIC 18F4520
Aller à :

Il y a 413 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens