This didn’t seem to work, so I made some further refinements. Documentation on MCP2515 datasheet is not very clear. From what I can tell, the receive registers are setup like this:

Register        Standard    Extended
SIDH (0x61)     7:0         28:21
SIDL (0x62)     7:5         20:18, 17:16
EID8 (0x63)     n/a         15:8
EID0 (0x64)     n/a         7:0

and the SIDL bit 3 (IDE) is 1 for extended and 0 for standard.

I implemented it like that, and it now seems to co-exists between the MCP2515 and ESP32 native CAN in both standard and extended modes. Of course, both implementations could now be wrong, but at least they match ;-) Need to try it out on something real, to be certain it is fixed now.

Regards, Mark.

On 10 Oct 2017, at 4:20 AM, Greg D. <gregd2350@gmail.com> wrote:

Hi folks,  (Mark, in particular),

I've tweaked the mcp2515.cpp code to support Extended CAN frames on CAN
2 & 3.  Needed this for the OBD2ECU code, but it's there for anyone else
who may want it.

Mark - I did a bit of this by trial & error, since some of what I was
doing wasn't working as I expected it would.  Bits upside down, that
sort of thing...  So I expect some of the middle bits around the three
frame flags is wrong, particularly on the transmit side, but for the
PIDs I use, the results I get match what Wireshark decodes.  So, I think
it's close.

Greg

p.s.  Got my first CAN 3 bus hang too...  hope it's not related. :)
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.teslaclub.hk
http://lists.teslaclub.hk/mailman/listinfo/ovmsdev