Problème d'utilisation CAN avec PIC24F
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Problème d'utilisation CAN avec PIC24F



  1. #1
    invite5b91726d

    Problème d'utilisation CAN avec PIC24F


    ------

    Bonjours, je cherche à effectuer une conversion analogique vers numérique, mais je n'arrive pas à initialiser correctement mon PIC24F et ensuite pouvoir la lire. Si quelqu'un a un exemple ou un tutorial(pour un PIC30F ou 24F, je n'ai trouvé qu'une majorité de tuto pour PIC16F)

    J'ai suivi le datasheet, mais cela ne fonctionne pas http://ww1.microchip.com/downloads/e...Doc/39881b.pdf

    Je n'ai pas mon programme sous la main, je le posterai demain matin.

    Actuellement je programme en C sous MPALB, mais ce n'est pas un soucis si ne savez le faire qu'en assembleur.

    Merci d'avance de votre aide

    -----

  2. #2
    invite5b91726d

    Re : Problème d'utilisation CAN avec PIC24F

    Sur le datasheet, la documentation sur le CAN est à partir de la page 185

    Voici mon programme

    #include <p24FJ32GA002.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <libpic30.h>
    #include <adc.h>
    void main (void)
    {
    //init port
    TRISB = 0x0000;
    TRISA = 0x0000;
    PORTA = 0x0000;
    PORTB = 0x0000;
    TRISBbits.TRISB15 = 1; //même pin que AN9(utile?)

    //config ADC
    AD1PCFG = 0x0100; //sélection de la pin AN9
    AD1CON2bits.VCFG = 0b000; //Vr+=Vdd et Vr-=Vss
    AD1CON3bits.ADCS = 0b00001111; //mis au hazard
    AD1CON1bits.SSRC = 0b000; //je ne sais pas quoi mettre
    AD1CON3bits.SAMC = 0b11111; //mis au hazard
    AD1CON1bits.FORM = 0b00; //bon
    AD1CON2bits.SMPI = 0b0000; //je ne sais pas quoi mettre
    AD1CSSL = 0x0100; //utile?
    AD1CHS = 0x0909; //utile?
    AD1CON1bits.ADON = 1; //bien placé?
    AD1CON1bits.SAMP = 1; //bien placé?

    //test réglage pour savoir s'il y a eu conversion
    for(;
    {
    if(AD1CON1bits.ASAM == 1)
    {
    PORTBbits.RB2 = 1;
    }
    if(AD1CON1bits.DONE == 1)
    {
    PORTBbits.RB2 = 1;
    }
    }
    }

    voilà si quelqu'un peux m'aider, merci

  3. #3
    invite5b91726d

    Re : Problème d'utilisation CAN avec PIC24F

    J'ai réussi à m'en sortir il me fallait une ligne de commande dont je n'avais pas compris le principe, je mets mon programme de test pour ceux qui pourrait être en galère avec ça

    #include <p24FJ32GA002.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <libpic30.h>
    #include <adc.h>

    int main (void)
    {
    //dévalidation watch dog
    RCONbits.SWDTEN=0;

    //initadc
    TRISBbits.TRISB15 = 1;

    //AD1CON1
    AD1CON1bits.FORM = 0;
    AD1CON1bits.SSRC = 0;
    AD1CON1bits.ASAM = 1;


    //AD1CON2
    AD1CON2bits.VCFG=0;
    AD1CON2bits.SMPI=0;
    AD1CON2bits.BUFM=0;

    //AD1CON3
    AD1CON3bits.ADRC=0;
    AD1CON3bits.ADCS = 63;

    //AD1CHS
    AD1CHSbits.CH0SA=9;
    AD1CHSbits.CH0NA=0;

    //AD1PCFG
    AD1PCFG=0xFFFF;
    AD1PCFGbits.PCFG9 = 0;

    //AD1CSSL
    AD1CSSL = 0x0000;

    IFS0bits.AD1IF = 0;
    IEC0bits.AD1IE = 0;
    AD1CON1bits.ADON = 1;

    for(;
    {
    if(AD1CON1bits.SAMP == 1)
    {
    AD1CON1bits.SAMP = 0;
    TRISBbits.TRISB2 = 0;
    //PORTBbits.RB2 = 1;
    }
    if(AD1CON1bits.DONE == 1)
    {
    PORTBbits.RB2 = 1;
    }
    }
    }

  4. #4
    invite5b91726d

    Thumbs up Re : Problème d'utilisation CAN avec PIC24F

    J'ai réussi à m'en sortir il me fallait une ligne de commande dont je n'avais pas compris le principe, je mets mon programme de test pour ceux qui pourrait être en galère avec ça

    #include <p24FJ32GA002.h>

    int main (void)
    {
    //dévalidation watch dog
    RCONbits.SWDTEN=0;

    //initadc
    TRISBbits.TRISB15 = 1;

    //AD1CON1
    AD1CON1bits.FORM = 0;
    AD1CON1bits.SSRC = 0;
    AD1CON1bits.ASAM = 1;


    //AD1CON2
    AD1CON2bits.VCFG=0;
    AD1CON2bits.SMPI=0;
    AD1CON2bits.BUFM=0;

    //AD1CON3
    AD1CON3bits.ADRC=0;
    AD1CON3bits.ADCS = 63;

    //AD1CHS
    AD1CHSbits.CH0SA=9;
    AD1CHSbits.CH0NA=0;

    //AD1PCFG
    AD1PCFG=0xFFFF;
    AD1PCFGbits.PCFG9 = 0;//pour la pin AN9

    //AD1CSSL
    AD1CSSL = 0x0000;

    IFS0bits.AD1IF = 0;
    IEC0bits.AD1IE = 0;
    AD1CON1bits.ADON = 1;

    for(;
    {
    if(AD1CON1bits.SAMP == 1)
    {
    //fameuse ligne manquante
    AD1CON1bits.SAMP = 0;

    }
    if(AD1CON1bits.DONE == 1)
    {
    //est là pour tester que la conversion a bien fonctionnée
    TRISBbits.TRISB2 = 0;
    PORTBbits.RB2 = 1;
    }
    }
    }

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

    Re : Problème d'utilisation CAN avec PIC24F

    Salut,

    J'ai pas bien saisie ce que tu voulais faire là :

    AD1PCFG = 0x0100; //sélection de la pin AN9
    Si j'ai bien compris là tu met 0x0100 dans AD1PCFG donc PCFG8 à 1 en gros tu configures AN8 en mode I/O et tout le reste en mode Analogique d'après la page 193 du datasheet. (J'ai peut-être mal compris aussi )

    A++

  7. #6
    invite5b91726d

    Re : Problème d'utilisation CAN avec PIC24F

    Pour configurer l'AN8 il faut mettre le bit8 du AD1PCFG à 0 (je mettais trompé sur la dessus aussi) ce qui correspond à FF7F

Discussions similaires

  1. Liaison UART par PIC24F
    Par invite5b91726d dans le forum Électronique
    Réponses: 16
    Dernier message: 04/06/2008, 15h36
  2. problème d'utilisation d'un téléscope
    Par invite5e0c656a dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 11
    Dernier message: 09/03/2007, 21h54
  3. problème de formule et d'utilisation
    Par invite44f16805 dans le forum Biologie
    Réponses: 4
    Dernier message: 21/10/2006, 15h42
  4. Problème d'utilisation XP
    Par invite6c0958d8 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 26/01/2004, 17h55
Découvrez nos comparatifs produits sur l'informatique et les technologies.