Hola,
Quiero enviar una trama CAN y que esta este sincronizada con una trama ya existente.
Me explico: Necesito leer la trama que manda una maquina (con una ID especifica ) y saber el intervalo de tiempo en que manda esta ( en mseg), para después mandar yo una con el mismo intervalo y a sin queden sincronizadas.
EJ: La maquina manda estas tres tramas con estas ID:
0x0FA , 0x77A y 0x49A , pues me hace falta saber el intervalo de tiempo con que se envía la 0x49A para después lanzar yo una a la maquina con el mismo intervalo.
No se si me he explicado bien.
Gracias
#include <SPI.h>
#include "mcp_can.h"
const int SPI_CS_PIN = 10; // Pin para el CS del CAN
MCP_CAN CAN(SPI_CS_PIN);
// Buffer para las tramas CAN
unsigned char len = 0;
unsigned char buf[8];
unsigned char stmp[6] = { 0x02, 0x00, 0x31, 0x6B, 0xE8, 0x00 }; // Trama para enviar
void setup() {
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_250KBPS)) // velocidad del can a 250kb
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println("CAN BUS Shield init ok!");
}
void loop() {
if (CAN_MSGAVAIL == CAN.checkReceive()) { //chequeamos la entra CAN
CAN.readMsgBuf(&len, buf); // leemos la trama
unsigned long canId = CAN.getCanId(); // Para saber la ID que queremos sincronizar
}
// Una vez calculado el intervalo de tiempo de la lectura de la trama, se enviara la trama con el mismo intervalo de tiempo
// La trama estara enviandose sin parar hasta que se quite la alimentacion de arduino.
CAN.sendMsgBuf(0x386, 0, 6, stmp);
}




