Implementation of the RealdashCAN protocol on Speeduino serial 03. I am implementing the RealdashCAN Serial protocol on Speeduino Serial 03 with Mega 2560. -The code takes all the data and sends it every 8 bytes with a specific ID and sends it at a frequency of 200Hz. -Connection to Realdash is done as RealdashCAN. -Only some are mapped in XML, for now. -I’m planning to implement CAN Broadcast for the STM32 platform, so the same XML can be used. Anyone who can do testing will be of great help.
200hz seems like an awful long time for updates like rpm, tps, etc. If you are rewriting the Speeduino serial 3 code you could use the real dash CAN FD 66 format and push out all of the Speeduino variables in 1 call.
I do have a stm32 board running speeduino if you need testers for your other code, but I’m not sure it would work for me to test. I am pulling all of my data for the Speeduino (rpm, tps, coolant temp, etc) through canbus instead of direct wired sensors as I am only using speeduino for methanol injection.
Sorry Cel_turbo I read your code and you are updating at 200hz not every 200hz.
Any reason why you are using a class for the serial data and public and private functions? None of the other speeduino code seems to be structured that way. Does it add overhead to the limited memory in the 2650?
Hi, it works fine with 200Hz. I have another application that updates more often, it gets close to 600 Frames per second.
I will also implement RealdashCAN 2Way, for Speeduino to receive data from Realdash.
I think since speeduino is opensource it is good to see multiple ways of doing things. I don’t think your implementation is wrong.
I think a mega running sequential injection with boost etc. may have a problem at a 200mhz update rate. I’m not sure if it would or not. in the speeduino code most of the values are updated at 30hz, TPS, O2, boost, etc. and most everything else slower than 30Hz etc.
The only major difference is i wrapped my serial send in the existing secondary serial send.
#if defined(secondarySerial_AVAILABLE)
//if can or secondary serial interface is enabled then check for requests.
if (configPage9.enable_secondarySerial == 1) //secondary serial interface enabled
{
if ( ((mainLoopCount & 31) == 1) || (secondarySerial.available() > SERIAL_BUFFER_THRESHOLD) )
{
if (secondarySerial.available() > 0) { secondserial_Command(); }
}
}
#endif
I hope they accept your PR. Every time I look on the Speeduino forums it always seems like the secondary serial implementation is in a state of disarray.
Hello, the sending of 128 bytes is divided into 8-byte frames, which give 16 frames. The frames are sent at 200Hz, which means that each piece of information such as RPM, etc. is updated at 12Hz.
I think it could be even faster, but it looks good like this.