Discussions Générales > Présentez vous !
Je me présente besoin Bus Can
Dominique:
Voici les lignes de code qui utilise le Can dans mon Due :
--- Code: ---
#include <due_can.h>
... puis dans le setup ...
// Initialize CAN0. Set the proper baud rates here
if (Can0.begin(CAN_BPS_500K)) {
Serial.println("CAN ok !");
myGLCD.print((char*)"CAN OK ", 100,410,0);
} else {
Serial.println("CAN ERROR !");
}
//By default there are 7 mailboxes that are RX boxes
//This sets each mailbox to have a filter
//extended
//syntax is mailbox, ID, mask, extended
Can0.setRXFilter(0, 0x2FFFFF, 0x1FFFFFFF, true);
Can0.setRXFilter(1, 0x2F0000, 0x1FFFFFFF, true);
Can0.setRXFilter(2, 0x2F0000, 0x1FFFFFFF, true);
//standard
Can0.setRXFilter(3, 0x10, 0x7F0, false);
Can0.setRXFilter(4, 0x11, 0x7F0, false);
Can0.setRXFilter(5, 0x12, 0x7F0, false);
Can0.setRXFilter(6, 0x1E, 0x7F0, false);
for (int i=0; i<IdMax; i++) { // pour le comptage des messages CAN
CANCount[i]=0;
ValId[i]=0;
}
--- Fin du code ---
et dans la loop :
--- Code: ---void loop() {
Itineraire* it;
int code=0;
CAN_FRAME incoming;
CAN_FRAME outgoing;
/*
* TRAITEMENT DES MESSAGES CAN
*/
while (Can0.available() > 0) {
Can0.read(incoming);
//countMessagesByIds(incoming);
//printFrame(incoming);
answerFrame(incoming);
// Can0.sendFrame(incoming) est envoyé par cette procédure qui est l'automate reseau
}
--- Fin du code ---
claudius310:
Bonjour,
Merci de votre réponse
Je vais acheter deux nouvelles cartes comme la votre pour essayer à nouveau, mais le temps que cela vienne de chine....
ensuite je m'y remets
En tout état de cause je reviens vers vous dès que j'ai le matériel et fait quelques essais
je vais aussi essayer de nouvelles cartes de bus CAN avec des filtres qui diminuent les phénomènes d'hystérésis car j'avais mis l'oscilloscope directement sur la sortie de l'arduino et ce n'était pas très propre.
Encore merci
Navigation
[*] Page précédente
Utiliser la version classique