Programmation PIC 16C774
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Programmation PIC 16C774



  1. #1
    invite34d63021

    Programmation PIC 16C774


    ------

    Bonjour,
    J'utilise actuellement un PIC 16C74A, et pour améliorer la précision de l'entrée analogique je vais utiliser un 16C774 car la résolution de l'entrée est de 12 bits et d'un fonctionnement proche du 16C74A.

    Logiciel utilisé : MPLAB IDE V5.7 avec le compilateur C PCML.

    Mon souci majeur est la compilation du header : les différents .h que j'ai trouvé me créent des erreurs lors de la compilation.

    et de l'instruction adc_read : je plafonne à 255 points
    exemple de mon programme :
    setup_adc_ports(ALL_ANALOG); // le portA est défini en entrée analogique
    setup_adc(ADC_CLOCK_INTERNAL); // utilisation de l'horloge interne pour l'ADC
    set_adc_channel(0); // Lecture sur le canal 0 du port

    long int temp;
    temp = (long int) (read_adc());


    je recherche un exemple de programme en C utilisant le 16C774 avec son .h .

    Merci d'avance.

    -----

  2. #2
    invite34d63021

    Re : Programmation PIC 16C774

    Salut,

    Personne ne sait où l'on pourrait trouver le header en C de ce PIC 16C774 ?

    Merci d'avance.

  3. #3
    monnoliv

    Re : Programmation PIC 16C774

    Envoie le fichier .h du 16C774
    Concernant la valeur max de read_adc(), c'est pas parce que tu convertis la valeur renvoyée en (long int) qu'elle va subitement augmenter. A mon avis read_adc() renvoit un byte et non un int. Pour être sûr, il faudrait le fichier .h du 16C774
    En fait, j'ai l'impression que tu utilises le .h du 16C74, ce qui ne marche pas évidemment (ou pas bien).
    Si tu n'as pas le .h ad-hoc, ça va être dur pour utiliser les fonctions spécifiques.
    Ne soldez pas grand mère, elle brosse encore.

  4. #4
    invite34d63021

    Re : Programmation PIC 16C774

    Re bonjour,

    Parmi tout les headers fourni avec le compilateur PCML je n’ai pas trouvé celui du 16C774

    Le .h du 16C74 est codé de cette façon :
    (…)
    ///////////////////////////////////// Constants used for SETUP_ADC_PORTS()
    #define ALL_ANALOG 0
    #define ANALOG_RA3_REF 1
    #define A_ANALOG 2
    #define A_ANALOG_RA3_REF 3
    #define RA0_RA1_RA3_ANALOG 4
    #define RA0_RA1_ANALOG_RA3_REF 5
    #define NO_ANALOGS 6
    ///////////////////////////////////// Constants used for SETUP_ADC()
    #define ADC_OFF 0
    #define ADC_CLOCK_DIV_2 1
    #define ADC_CLOCK_DIV_8 0x41
    #define ADC_CLOCK_DIV_32 0x81
    #define ADC_CLOCK_INTERNAL 0xc1
    (…)

    J’ai téléchargé le header du 16C774 proposé par ce site :
    http://www.bknd.com/cc5x/download.shtml
    Mais il n’est pas compatible avec les différents compilateur C que j’ai utilisé (instruction non reconnue : #pragma).

    Je continu donc à utiliser le header du 16C74 pour compiler le programme destiné au 16C774 pour mes essais. Le 16C774 que j’emploi est flashable aux UV.

    Pour ce qui concerne l’instruction read_adc() ou toute autre fonction d’ailleurs, je suis d’accord avec toi, il faut avoir le header dédié au PIC utilisé.

    C’est pourquoi je recherche le header en C du 16C774 compilable par le compilateur CCS PCML ou bien un moyen de modifié le .h du 16C74 de facon à le rendre compatible avec le 16C774.

    Merci.

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

    Re : Programmation PIC 16C774

    Je voudrais juste savoir une chose, la fonction read_adc() fait-elle partie d'une librairie ou bien tu as le code source ? Si tu as le code source, elle devrait pouvoir se modifier.
    Concernant le #pragma, c'est une directive de précompilation, essaie de compiler en l'enlevant, ça fonctionnera peut-être avec ton compilateur.
    Ne soldez pas grand mère, elle brosse encore.

  7. #6
    invite34d63021

    Re : Programmation PIC 16C774

    Bonjour,

    La fonction read_adc est issue d'une librairie.

    Voici la définition de la fonction présente dans la doc du compilateur CCS. http://www.ccsinfo.com/picc.shtml

    Syntax: value = read_adc ([mode])
    Parameters: mode is an optional parameter. If used the values may
    be:
    ADC_START_AND_READ (this is the default)
    ADC_START_ONLY (starts the conversion and returns)
    ADC_READ_ONLY (reads last conversion result)

    Returns: Either a 8 or 16 bit int depending on #DEVICE ADC=
    directive.

    Function: This function will read the digital value from the analog
    to digital converter. Calls to setup_adc(),
    setup_adc_ports() and set_adc_channel() should be
    made sometime before this function is called. The
    range of the return value depends on number of bits in
    the chips A/D converter and the setting in the #DEVICE
    ADC= directive as follows:
    #DEVICE 8 bit 10 bit 11 bit 16 bit
    ADC=8 00-FF 00-FF 00-FF 00-FF
    ADC=10 x 0-3FF x x
    ADC=11 x x 0-7FF x
    ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFFF
    Note: x is not defined
    Availability: This function is only available on devices with A/D
    hardware.
    Requires #include <STDLIB.H>
    Examples: setup_adc( ADC_CLOCK_INTERNAL );
    setup_adc_ports( ALL_ANALOG );
    set_adc_channel(1);
    while ( input(PIN_B0) ) {
    delay_ms( 5000 );
    value = read_adc();
    printf("A/D value = %2x\n\r", value);
    }
    read_adc(ADC_START_ONLY);
    sleep();
    value=read_adc(ADC_READ_ONLY);

    Pour le #pragma, le fait de le supprimer ne me permet pas de le compiler. Mais le header du 16C774 que j'ai trouvé, est très éloigné du header du 16C74. Il me parait donc inexploitable.

    Merci.

  8. #7
    monnoliv

    Re : Programmation PIC 16C774

    Returns: Either a 8 or 16 bit int depending on #DEVICE ADC= directive.
    Function: This function will read the digital value from the analog
    to digital converter. Calls to setup_adc(),
    setup_adc_ports() and set_adc_channel() should be
    made sometime before this function is called. The
    range of the return value depends on number of bits in
    the chips A/D converter and the setting in the #DEVICE
    ADC= directive as follows:
    #DEVICE 8 bit 10 bit 11 bit 16 bit
    ADC=8 00-FF 00-FF 00-FF 00-FF
    ADC=10 x 0-3FF x x
    ADC=11 x x 0-7FF x
    ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFFF
    Note: x is not defined
    Availability: This function is only available on devices with A/D
    hardware.
    Essaie donc de mettre la directive pour du 16 bits (2 bytes en retour de fonction)
    #DEVICE ADC=16 0-FF00 0-FFC0 0-FFEO 0-FFFF
    Pas sûr que cela marche mais comme ça ne coûte rien...

    Sinon, tu n'as plus qu'à écrire ta propre librairie !
    Ne soldez pas grand mère, elle brosse encore.

  9. #8
    invite34d63021

    Re : Programmation PIC 16C774

    Salut,

    Je viens de terminer tout mes tests.

    Pour ce qui concerne le .H, je garde celui du 16C74.

    Pour la lecture analogique et autres problèmes de configuration de port, j'ai ajouté quelques lignes de code (voir data sheet du 774) :

    // Specifique entrée analogique
    #define REF_ANA 142 //valeur de paramètrage du registre ADCON1
    #byte ADCON0 = 0x1f //registre du convertisseur
    #byte ADCON1 = 0x9f //rôle des pins+justification du resultat de la conversion
    #byte ADRESH = 0x1e
    #byte ADRESL = 0x9e
    #bit ADGO = ADCON0.2
    #bit ADON = ADCON0.0

    // configuration de l'état des broches du port a
    setup_port_a( ALL_ANALOG );
    setup_adc( ADC_CLOCK_INTERNAL );
    set_adc_channel( 0 );
    ADCON1=REF_ANA;

    // lecture analogique en 12 bit : remplace le read_adc
    long int Read_ANA12()
    {
    long int result;
    char cT;

    ADON=1; // activation du convertisseur
    cT=6;
    while(cT--); // tempo
    result=0;
    ADGO=1; // démarrage conversion
    while(ADGO); // si ADGO passe à 0 fin de conversion
    result=ADRESH;
    result<<=8;
    result|=ADRESL; // le résultat est contenu dans result
    ADON=0; // convertisseur arrêté

    return(result);
    }

    Tout ceci me permet d'acquérir des valeurs entre 0 et 4095 points sur le channel 0 du port A du PIC 16C774.

    Merci

Discussions similaires

  1. erreur 0X00 programmation PIC plus questions sur les PIC
    Par invite4a8ccabd dans le forum Électronique
    Réponses: 4
    Dernier message: 22/07/2007, 15h36
  2. programmation pic
    Par invite7cd01ac2 dans le forum Électronique
    Réponses: 5
    Dernier message: 16/06/2007, 01h34
  3. programmation de pic en C
    Par invite81170861 dans le forum Électronique
    Réponses: 5
    Dernier message: 22/05/2007, 16h16
  4. Programmation Pic
    Par invite3341af8e dans le forum Électronique
    Réponses: 4
    Dernier message: 06/01/2007, 21h59
  5. Programmation de pic
    Par invite3c59dc04 dans le forum Électronique
    Réponses: 2
    Dernier message: 09/10/2005, 20h42
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...