Problème Canbus

J'ai choisit d'afficher la valeur de CAN.checkReceive() afin de savoir quelle valeur permet de remplir la condition.

        // Attente de l'arrivée d'une donnée
    Serial.print(" Disponibilite: ");
    Serial.println(CAN.checkReceive());
    if(CAN_MSGAVAIL == CAN.checkReceive())
    {
     // Le reste du code....
     }

Quand il n'y a pas de message, CAN.checkReceive() a la valeur 4.
Quand il n'y un message, CAN.checkReceive() a la valeur 3.

J'ai aussi branché mon oscilloscope sur le bus CAN.

Quand j'appuie les deux premières fois, la trame passe bien (ce sont les deux petites lignes à gauche sur la capture d'écran).

Mais dès que cela plante, la trame est renvoyée encore et encore tant qu'elle n'est pas reçue par le récepteur (on le voit clairement sur la photo).

A partir de ce moment là, la valeur renvoyée par CAN.CheckReceive() est 4 donc il ne rentre pas dans la condition et donc le message ainsi que ceux envoyés après ne sont jamais reçus.

J'ai regardé dans la librairie pour essayer de comprendre à quoi correspondent les chiffres renvoyés.

#define CAN_OK              (0)
#define CAN_FAILINIT        (1)
#define CAN_FAILTX          (2)
#define CAN_MSGAVAIL        (3)
#define CAN_NOMSG           (4)
#define CAN_CTRLERROR       (5)
#define CAN_GETTXBFTIMEOUT  (6)
#define CAN_SENDMSGTIMEOUT  (7)
#define CAN_FAIL            (0xff)

D'après les définitions, il me dit qu'il n'y a pas de messages (4).

Reste à savoir pourquoi ca plante....