I made some more progress last night on improving the performance of data logging. I spent some time going through the assembly code for the KWP2000 protocol on the ecu, and I found some loop holes in the protocol timing. By exploiting these loop holes I have been able to go from 17 reads per second to 25 reads per second. And don’t forget that I read 254 bytes each time, which results in reading many variables at once.
Another cool side effect of running the protocol this way, is it has shifted the delays in the protocol onto my PC. Which means any optimizations I make to the logging code on the PC, or running on a faster computer, means the protocol will be able to read more than 25 times a second. Currently the PC handling the read responses from the ecu is the slow point in the protocol. Assuming a PC that can handle read responses from the ecu instantly, the maximum read limit should be around 60 to 70 reads per second.
I am planning on pushing the read limit a little bit more by optimizing my software in a few more places. Hopefully I will be able to get 30 reads per second. After which I will be able to incorporate these protocol optimizations into my ecu flashing software to hopefully get a 25 second ecu flash instead of my current 47 second.
PS: APR ECU Explorer reading at 18 times a second now just seems slow. 😛