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 :

Conversion A/D PIC 18F4520


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Par défaut Conversion A/D PIC 18F4520
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #include <p18f4520.h>
    #include <adc.h>
     
    void main(void)
     
    {
     
    	TRISA=1; 					// PORTA en Entrée
    	PORTA=1; 					// PORTA a 1
     
    	ADCON0bits.ADON = 1 ;		// A/D convert ON
    	ADCON0bits.CHS0 = 0	;	// Choisir la voie a convertir => AN0
    	ADCON0bits.CHS1 = 0	;	// Choisir la voie a convertir => AN0
    	ADCON0bits.CHS2 = 0	;	// Choisir la voie a convertir => AN0
    	ADCON0bits.CHS3 = 0	;	// Choisir la voie a convertir => AN0
     
    	ADCON1bits.PCFG0 = 1 ;		// Configuration des ports A/D = AN1 et AN0
    	ADCON1bits.PCFG1 = 0 ;		// Configuration des ports A/D = AN1 et AN0
    	ADCON1bits.PCFG2 = 1 ;		// Configuration des ports A/D = AN1 et AN0
    	ADCON1bits.PCFG3 = 1 ;	// Configuration des ports A/D = AN1 et AN0
    	ADCON1bits.VCFG0 = 0 ;	// references de tension a utiliser par le CAN => Vref+ = Vdd
    	ADCON1bits.VCFG1 = 0 ;	// references de tension a utiliser par le CAN => Vref- = Vss
     
    	ADCON2bits.ADCS0 = 0 ;		// configurer horloge selection
    	ADCON2bits.ADCS1 = 0 ;		// configurer horloge selection
    	ADCON2bits.ADCS2 = 1 ;		// configurer horloge selection
    	ADCON2bits.ACQT0 = 0 ;		// configurer un temps d'acquisition
    	ADCON2bits.ACQT1 = 0 ;		// configurer un temps d'acquisition
    	ADCON2bits.ACQT2 = 0 ;		// configurer un temps d'acquisition
    	ADCON2bits.ADFM =  1 ;		// justification a droite
     
    	ADRESH=0x00 ;				// Mise à zero du registre ADRESH 
     
    	ADCON0bits.GO_DONE = 1;		// A/D conversion in progress (Start Of Conversion)
     
    while(ADCON0bits.GO_DONE); // Attente de l'EOC
     
    	{
     
    	ADCON0bits.GO_DONE=0; // EOC
    	X=ADRESH;
    	X<<=8;
    	X|=ADRESL;
     
    	}
    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 ...

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    salut

    Tu pourrais nous donner comment dans le header du pic ils déclarent les deux champs de bits (ADCON0bits, ADCON1bits et ADCON2bits).
    ce que je vois comme problème est que tu crois modifier le registre par ces commande alors que tu ne modifie seulement le champs de bits correspondant..

    de mon coté, quand j'ai un programme C dans un microcontroleur j'utilise des macro pour lire/ecrire un registre situé en mémoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #define REGISTRE *(char)(ADRESSE REG)
     
    [...]
     
    REGISTRE = 0x80;
    ps : ca fait quelques temps que j'ai pas utilisé mais c'est un truc comme ca

    Ensuite tu as une accolade en trop (l'avant derniere)

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2011, 21h17
  2. Réponses: 0
    Dernier message: 21/04/2010, 16h51
  3. [PIC 18F4520] Fonction tempo avec le TimerO
    Par jull72 dans le forum MPLAB
    Réponses: 4
    Dernier message: 17/01/2007, 18h31
  4. Conversion variable PIC X -> PIC 9
    Par nenekes dans le forum Cobol
    Réponses: 7
    Dernier message: 08/11/2006, 21h31
  5. [PIC 16F84] Conversion source hexa vers asm
    Par Page35 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 08/12/2005, 22h12

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