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

Programmation BUS CAN



  1. #1
    invitec63490c6

    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
    invitec63490c6

    Re : Programmation BUS CAN

    Toujours personne qui peut m'aider?

Discussions similaires

  1. bus CAN
    Par violaine-è dans le forum Électronique
    Réponses: 8
    Dernier message: 10/11/2013, 01h57
  2. Bus CAN
    Par jorg1n dans le forum Électronique
    Réponses: 3
    Dernier message: 08/01/2008, 07h34
  3. bus CAN
    Par invitec8eddff1 dans le forum Électronique
    Réponses: 1
    Dernier message: 03/06/2007, 20h36
  4. Bus can
    Par invite628433a6 dans le forum Électronique
    Réponses: 7
    Dernier message: 09/03/2007, 13h59
  5. Bus Ethernet.
    Par invite2bc16f61 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/10/2006, 16h26
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...