Convertisseur A/N en langage C
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

Convertisseur A/N en langage C



  1. #1
    invite403d8201

    Convertisseur A/N en langage C


    ------

    Bonjour, je cherche depuis deux jours un exemple de programme de PIC en langage c qui permet de faire une converstion analogique numérique mais je trouve pas, avez vous un lien ou PDF ou un truk intéréssant ?

    -----

  2. #2
    antoine6

    Re : Convertisseur A/N en langage C

    Salut,

    Citation Envoyé par just-a-man-but Voir le message
    Bonjour, je cherche depuis deux jours un exemple de programme de PIC en langage c qui permet de faire une converstion analogique numérique mais je trouve pas, avez vous un lien ou PDF ou un truk intéréssant ?
    Avec quel PIC et quel compilateur?

    Tu as des librairies qui font tout, sinon tu te tape toute les lectures/écritures de registres à la main (rien de bien compliqué)

  3. #3
    invite403d8201

    Re : Convertisseur A/N en langage C

    Merci pour votre réponse.
    je travail sur un PIC18F4550 avec le logiciel de programmation MPLAB v8.20 et le compilateur MPLAB C 18.

  4. #4
    antoine6

    Re : Convertisseur A/N en langage C

    Tu as la doc des librairies de C18 ici:

    http://ww1.microchip.com/downloads/e...ies_51297f.pdf

    Va voir la page 16

  5. A voir en vidéo sur Futura
  6. #5
    invite403d8201

    Re : Convertisseur A/N en langage C

    2.2.2 Example Use of the A/D Converter Routines
    #include <p18C452.h>
    #include <adc.h>
    #include <stdlib.h>
    #include <delays.h>
    int result;
    void main( void )
    {
    // configure A/D convertor
    OpenADC( ADC_FOSC_32 & ADC_RIGHT_JUST & ADC_8ANA_0REF,
    ADC_CH0 & ADC_INT_OFF );
    Delay10TCYx( 5 ); // Delay for 50TCY
    ConvertADC(); // Start conversion
    while( BusyADC() ); // Wait for completion
    result = ReadADC(); // Read result
    CloseADC(); // Disable A/D converter
    }

    j'ai trouver cette exemple dans ce PDF mais je ne c'est pas ou est ce qu'ils ont declaré la pin d'entré analogique ?

  7. #6
    invite29971eb1

    Re : Convertisseur A/N en langage C

    Sans connaître le PIC, tu as une référence à ADC_CH0 dans la fonction OpenADC

  8. #7
    inviteceb35e31

    Re : Convertisseur A/N en langage C

    Hello,

    J'utilise depuis 2ans le pic 18f4520, je ne pense pas qu'il y ait grande différence avec le tien ...

    Voila le code que j'ai pour la conversion :

    prototype :
     Cliquez pour afficher


    et :
     Cliquez pour afficher


    Voila ! Si tu as des questions hésite pas !

    Bonne journée

  9. #8
    invite403d8201

    Re : Convertisseur A/N en langage C

    d'aprés le DATASHEET de mon PIC18F4550 je trouve qu'il contien 13 channel input A/D mais je ne trouve pas exactement les pins associées à ces channels

  10. #9
    antoine6

    Re : Convertisseur A/N en langage C

    Citation Envoyé par just-a-man-but Voir le message
    d'aprés le DATASHEET de mon PIC18F4550 je trouve qu'il contien 13 channel input A/D mais je ne trouve pas exactement les pins associées à ces channels
    Dans le chapitre "10-BIT ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE" de la datasheet, tu as les bits à selectionner pour chaque canal

    Pour savoir à quelle pin est associé un canal, yaka regarder le brochage au début...

  11. #10
    inviteceb35e31

    Re : Convertisseur A/N en langage C

    Ca c'est pas compliqué:

    Regarde le pins diagrams ( dans les toutes premières pages ...) et les convertisseurs sont notés ANx ( exemple : AN0 pour le Channel 0) !

  12. #11
    invite403d8201

    Re : Convertisseur A/N en langage C

    DEGK , merci pour votre programme mais ca me donne erreur de syntaxe à la ligne "value = ADRESL + ADRESH<<8;"

  13. #12
    inviteceb35e31

    Re : Convertisseur A/N en langage C

    Re !

    Tu as bien mis value en 16bit ?

    Remplace quand même la ligne par : value = ((int16)ADRESH<<8) + ADRESL;

    Je te promets rien mais chez moi ca fonctionne(ait) tip top !

    A+

  14. #13
    invite403d8201

    Re : Convertisseur A/N en langage C

    voila ce que j'ai sur mon écran je ne voie aucune erreur selon ce que vous dites DEGK.
    Images attachées Images attachées  

  15. #14
    antoine6

    Re : Convertisseur A/N en langage C

    C'est quoi ces int 16 XXXX qui trainent?????

    A la rigueur int16, mais sans espace si tu veut avoir une chance que ca marche

  16. #15
    RISC

    Re : Convertisseur A/N en langage C

    Salut,

    Je te conseille de mettre à jour MPLAB car tu utilises une version vieille de 2 ou 3 ans...
    La dernière version est la v8.80 téléchargeable ici : http://www.microchip.com/MPLAB

    Pour les exemples, tu peux chercher les exemples de code pour les périphériques des PIC18 ici : http://www.microchip.com/codeexamples
    La dernire colonne permet de filtrer par famille (PIC18, PIC24, PIC32, dsPI33F, dsPIC33E,...)

    a+

  17. #16
    invite403d8201

    Re : Convertisseur A/N en langage C

    Bonjour, Merci RISC, j'ai trouver un exemple de programme qui correspond + ou - à ce que je cherche, vue que le programme que j'ai trouvé fait la conversion A/N mais il envoi le résultat par liaison série, alors que moi je souhaitte lire le resultat sur un jeu de LED's, donc j'ai modifier le programme que j'ai trouvé pour que ça donne ca :

    #include <p18f4550.h>
    #include <adc.h>
    #include <stdio.h>
    #define BAUDRG 21 // 115.2Kbps from 10MH
    void main()
    {
    int result;
    TRISD = 0;
    OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_20_TAD, ADC_CH0 & ADC_INT_ON & ADC_REF_VDD_VSS, ADC_1ANA);
    ConvertADC();
    while(BusyADC());
    PORTD = ReadADC(); // Read result
    CloseADC(); // Disable A/D converter
    return;
    }


    ca compile sans erreurs mais rien ne s'allume sur ma maquette , avez vous des remarques ?

  18. #17
    antoine6

    Re : Convertisseur A/N en langage C

    Citation Envoyé par just-a-man-but Voir le message
    Bonjour, Merci RISC, j'ai trouver un exemple de programme qui correspond + ou - à ce que je cherche, vue que le programme que j'ai trouvé fait la conversion A/N mais il envoi le résultat par liaison série, alors que moi je souhaitte lire le resultat sur un jeu de LED's, donc j'ai modifier le programme que j'ai trouvé pour que ça donne ca :

    #include <p18f4550.h>
    #include <adc.h>
    #include <stdio.h>
    #define BAUDRG 21 // 115.2Kbps from 10MH
    void main()
    {
    int result;
    TRISD = 0;
    OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_20_TAD, ADC_CH0 & ADC_INT_ON & ADC_REF_VDD_VSS, ADC_1ANA);
    ConvertADC();
    while(BusyADC());
    PORTD = ReadADC(); // Read result
    CloseADC(); // Disable A/D converter
    return;
    }


    ca compile sans erreurs mais rien ne s'allume sur ma maquette , avez vous des remarques ?
    C'est quoi ta maquette?

    Rajoute une boucle while(1) ca sera plus efficace que devoir reset à chaque fois

  19. #18
    invite403d8201

    Re : Convertisseur A/N en langage C

    Bon mon schéma sur quoi je travail , c'est un truk comme ca .
    Images attachées Images attachées  

  20. #19
    antoine6

    Re : Convertisseur A/N en langage C

    C'est un truk kom ca, ou c'est ca?

    En considérant que les résistances sont correctement connectées au bargraph et que le circuit de reset fonctionne, ça devrait pas poser de problèmes.

    T'as essayé la boucle while(1)?

    L'allumage de ton bargrah marche normalement? si tu fait directement un PORTD = 0xF0, il se passe quoi?

  21. #20
    invite403d8201

    Re : Convertisseur A/N en langage C

    j'ai fait un teste avec PORTD=0xFF et les LED's s'allument correctement y'as pas de problémes au niveau du montage. et en tout cas j'ai essaié un programme de conversion A/N avec le language Proton basic et ca marche parfaitement, mais en C je ne c pas queceque ne va pas.

    pour la boucle while(1) vous voulez dir que ca doit etre un truk comme ca ?

    #include <p18f4550.h>
    #include <adc.h>
    #include <stdio.h>
    #define BAUDRG 21 // 115.2Kbps from 10MH
    void main()
    {
    int result;
    TRISD = 0;
    OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_20_TAD, ADC_CH0 & ADC_INT_ON & ADC_REF_VDD_VSS, ADC_1ANA);
    ConvertADC();
    while(BusyADC());
    PORTD = ReadADC(); // Read result
    Delay10KTCYx(100);
    CloseADC(); // Disable A/D converter
    while(1);
    }

  22. #21
    invite403d8201

    Re : Convertisseur A/N en langage C

    vous avez un exemple ?

  23. #22
    antoine6

    Re : Convertisseur A/N en langage C

    Code:
    #include <p18f4550.h>
    #include <adc.h>
    #include <stdio.h>
    #define BAUDRG 21                 // 115.2Kbps from 10MH
    void main()
    {
    	int result;
    	TRISD = 0;
    	OpenADC(ADC_FOSC_RC & ADC_LEFT_JUST & ADC_20_TAD, ADC_CH0 & ADC_INT_ON & ADC_REF_VDD_VSS, ADC_1ANA);    
    	while(1){
    		ConvertADC();
    		while(BusyADC());
    		PORTD = ReadADC(); // Read result
    		Delay10KTCYx(100);
    	}
    	CloseADC(); 		// Disable A/D converter
    
    }

  24. #23
    invite403d8201

    Re : Convertisseur A/N en langage C

    ca donne rien auss

  25. #24
    antoine6

    Re : Convertisseur A/N en langage C

    Citation Envoyé par just-a-man-but Voir le message
    ca donne rien auss
    T'as un débugguer, ou un moyen de balancer des debug sur le port série?

    edit: t'as recopié betement le script ou tu l'a arrangé pour ta carte?

    tu utilise quoi pour générer ton horloge systeme?
    Dernière modification par antoine6 ; 04/11/2011 à 10h33.

  26. #25
    invite403d8201

    Re : Convertisseur A/N en langage C

    en fait moi j'utilise pas un port serie, et le signale d'horloge est généré par un quartz, et le scripte correspend correctement normalement à ce que j'ai comme schéma.
    j'utilise un programateur de pic PicKit2.

  27. #26
    invitefaaca50b

    Re : Convertisseur A/N en langage C

    Le schema fourni est exactement le montage TYPE pour tester un CAN avec son potar et afficher la valeur sur un bar graph (normalement sur 10 sorties pour les 10 bits de ton CAN). Donc il doit y avoir un loup. J'espere que le source ne provient pas d'un document scanné. As tu des erreurs de compilation? meme mineures?

  28. #27
    invite403d8201

    Re : Convertisseur A/N en langage C

    non j'ai pas d'erreurs de compilation et mon montage fonctionne avec le programme de proton basic suivant :

    Device 18F4550
    ALL_DIGITAL TRUE
    XTAL 4

    ' initialisation du ADC
    Declare ADIN_RES 10 'resultat sur 10bits
    Declare ADIN_TAD FRC 'clock interne
    Declare ADIN_STIME 10 '10 us de periode

    OSCCON=%1100111 'configure l'oscillateur interne à 4MHz
    TRISD = %00000000 'configuration du protD en sortie
    ADCON1 = %10000000 'on fixe A0 en entrée analogique
    Dim conv As Word

    bcl:

    conv = ADIn 0 'Convertion sur AN0
    PORTD = conv

    GoTo bcl

  29. #28
    invitefaaca50b

    Re : Convertisseur A/N en langage C

    Donc ton programme est foiré. Gaffe a pas te tromper dans les registres du CAN (ADRESH et ADRESL), ensuite le format de tes registres du CAN (signification a gauche, a droite etc...) sinon tu n'auras rien qui s'affiche ou pas grand chose...

Discussions similaires

  1. Langage C
    Par inviteb1bf92b4 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 11/03/2010, 12h36
  2. Langage C
    Par invite0fa31f40 dans le forum Électronique
    Réponses: 12
    Dernier message: 22/02/2010, 13h42
  3. de langage C en langage assembleur
    Par invite284746c1 dans le forum Électronique
    Réponses: 1
    Dernier message: 14/05/2009, 12h42
  4. Langage C
    Par invited92bca68 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 16/11/2008, 13h33
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...