Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Programmation BUS CAN



  1. #1
    flash68

    Programmation BUS CAN


    ------

    Bonjour a tous,

    Je suis entrain de programer un bus CAN entre deux plaque dsPICPRO4 de cher MikroElektronika.
    Le soucis c'est que j'ai crée un programme basic mais il marche pas est ce que quelqu'un peut me dire ou est l'erreur?
    Merci pour votre aide.

    PS : le programme est dévelloper avec mikroC dsPIC 30
    Voila le programme d'émission:
    #include <string.h>

    void main()
    {
    unsigned int tx_flags;
    char data[8];
    unsigned long msg_id = 0x010;
    unsigned int can_config_flags;

    can_config_flags = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used
    CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize
    CAN_CONFIG_STD_MSG &
    CAN_CONFIG_DBL_BUFFER_ON &
    CAN_CONFIG_MATCH_MSG_TYPE &
    CAN_CONFIG_LINE_FILTER_OFF;

    tx_flags = CAN_TX_PRIORITY_0 &
    CAN_TX_XTD_FRAME &
    CAN_TX_NO_RTR_FRAME;

    CAN1Initialize(1,3,3,3,1,can_c onfig_flags);
    CAN1SetOperationMode(CAN_MODE_ NORMAL,0xFF);
    //Alume LED pour test.
    TRISA = 0xFFBF;
    LATAbits.LATA6=1;

    while(1)
    {
    strcpy(&data,1);
    CAN1Write(msg_id, data, 1, tx_flags);
    LATAbits.LATA6=1;
    delay_ms(1000);
    strcpy(&data,0);
    CAN1Write(msg_id, data, 1, tx_flags);
    LATAbits.LATA6=0;
    delay_ms(1000);
    //CAN1Read();
    }
    }
    voila le programme de réception :

    void main()
    {
    unsigned int msg_rcvd, rx_flags, data_len;
    char data[8];
    unsigned long msg_id = 0x010;
    unsigned int can_config_flags;
    int test,test2;
    can_config_flags = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used
    CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize
    CAN_CONFIG_STD_MSG &
    CAN_CONFIG_DBL_BUFFER_ON &
    CAN_CONFIG_MATCH_MSG_TYPE &
    CAN_CONFIG_LINE_FILTER_OFF;

    CAN1Initialize(1,3,3,3,1,can_c onfig_flags);
    CAN1SetOperationMode(CAN_MODE_ NORMAL,0xFF);
    //Alume LED pour test.
    TRISA = 0xF00F;
    rx_flags = 0;
    LATAbits.LATA6=1;
    delay_ms(1000);
    test= 0;
    test2= 0;
    while(1)
    {
    LATAbits.LATA6=0;
    msg_rcvd = CAN1Read(&msg_id, data, &data_len, &rx_flags);
    if (msg_rcvd <= 0xFFFF)
    {
    if(strcmp(data,0) == 0)
    {
    LATAbits.LATA7=0;
    test = 1-test;
    }
    else
    {
    if(strcmp(data,0) == 1) LATAbits.LATA7=1;
    }
    }
    else
    {
    test2= 1 - test2;
    }
    LATAbits.LATA6=1;
    delay_ms(100);
    switch (test)
    {
    case 0 :
    LATAbits.LATA9=0;
    break;
    case 1:
    LATAbits.LATA9=1;
    break;
    }
    switch (test2)
    {
    case 0 :
    LATAbits.LATA10=0;
    break;
    case 1:
    LATAbits.LATA10=1;
    break;
    }
    }
    }

    -----

  2. #2
    flash68

    Re : Programmation BUS CAN

    Toujours personne qui peut m'aider?

Sur le même thème :

Discussions similaires

  1. bus CAN
    Par violaine-è dans le forum Électronique
    Réponses: 8
    Dernier message: 10/11/2013, 02h57
  2. Bus CAN
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 08/01/2008, 08h34
  3. bus CAN
    Par electromo dans le forum Électronique
    Réponses: 1
    Dernier message: 03/06/2007, 21h36
  4. Bus can
    Par Qali246 dans le forum Électronique
    Réponses: 7
    Dernier message: 09/03/2007, 14h59
  5. Bus Ethernet.
    Par Greguz dans le forum Électronique
    Réponses: 1
    Dernier message: 15/10/2006, 17h26
Découvrez nos comparatifs produits sur l'informatique et les technologies.