ECU Receive address not divisible by 16

Discussion and Support for MoTeC's M1 series ECUs

ECU Receive address not divisible by 16

Postby aNinjaneer on Thu Mar 05, 2020 4:17 am

What happens when you need to grab an address that is not divisible by 16 and not within 8 of a number that is divisible by 16? For example, if you need to receive the address 0x024A, the nearest prior address divisible by 16 is 0x0240. Since the offsets only go up to 7, that means the highest address you can receive is 0x0247, missing the 0x024A. Is this correct? Is the note not correct in saying that the base ID must be divisible by 16? Or is there a way to access the remaining 8 addresses?
aNinjaneer
 
Posts: 27
Joined: Tue Apr 05, 2016 3:57 am

Re: ECU Receive address not divisible by 16

Postby MalcolmG on Thu Mar 05, 2020 12:03 pm

the documentation is actually wrong and you can receive addresses that are divisible by 8, so all addresses are available.
MalcolmG
 
Posts: 64
Joined: Fri Dec 18, 2015 12:34 pm
Location: Auckland, NZ

Re: ECU Receive address not divisible by 16

Postby SDean on Thu Mar 05, 2020 1:57 pm

Hi,

The Base address needs to be divisible by 16, certain addresses that are divisible by 8 but not 16 will partially work, but some of the messages will not be received in the correct slots.

You can also receive 32 16bit messages, the help is incorrect on that.
Stephen Dean
MoTeC Research Centre Melbourne, Australia
User avatar
SDean
Site Admin
 
Posts: 747
Joined: Tue Dec 02, 2014 9:29 am
Location: Melbourne

Re: ECU Receive address not divisible by 16

Postby MalcolmG on Thu Mar 05, 2020 7:07 pm

Any chance you can expand on that statement Stephen? What defines whether an address divisible by 8 works or not? I've used it a few times with base addresses ending with (hexadecimal) 8 and everything was where I expected it to be, why would it sometimes work and sometimes not?
MalcolmG
 
Posts: 64
Joined: Fri Dec 18, 2015 12:34 pm
Location: Auckland, NZ

Re: ECU Receive address not divisible by 16

Postby aNinjaneer on Fri Mar 06, 2020 5:57 am

So, given my example, how would you receive address 0x024A? Or is that not possible? Why does the base ID need to be divisible by 16 if there are only 8 messages received from that base? That means you can't ever capture half of the possible addresses.
aNinjaneer
 
Posts: 27
Joined: Tue Apr 05, 2016 3:57 am

Re: ECU Receive address not divisible by 16

Postby MalcolmG on Fri Mar 06, 2020 6:41 am

aNinjaneer wrote:So, given my example, how would you receive address 0x024A? Or is that not possible? Why does the base ID need to be divisible by 16 if there are only 8 messages received from that base? That means you can't ever capture half of the possible addresses.

In my experience (not using that exact address, but reading an IZZE Racing IMU on 0x4EC and 0x4ED), I have been able to use the base address 0x4E8; so based on that I would suggest you try 0x248, and the data on message 0x24A should appear under CAN 2 Offset 0-6; although based on what Stephen has said it's possible it might not work this way.
MalcolmG
 
Posts: 64
Joined: Fri Dec 18, 2015 12:34 pm
Location: Auckland, NZ

Re: ECU Receive address not divisible by 16

Postby SDean on Fri Mar 06, 2020 10:12 am

I've had some further discussions with the engineers regarding this, and there are some legacy restrictions from the V1.3 Build versions of the GPR Packages that have been carried over into the V1.4 Builds. In the V1.3 Packages there was 64 separate channels available for use, but the proviso with the use of them was that the starting address had to end with a 0, i.e. 0x240 and the whole message range (0x240 - 0x24F) was allocated to the CAN Receive channels. If the block started with a number other than 0, such as 0x248, then the messaging would still go to 0x24F, but would not roll over to the next message block (0x250).

Within the message blocks there are some other restrictions, in that currently you can use 0x248, and this will read through to 0x24F, but a higher or lower starting number will give you an Invalid CAN Bus error as the address is not cleanly divisible by 8 or 16.

So to read an address at 0x24A, the ECU Receive CAN ID Base is set to 0x248, and then the messages will be available in the CAN 2 Offset X messages.
Stephen Dean
MoTeC Research Centre Melbourne, Australia
User avatar
SDean
Site Admin
 
Posts: 747
Joined: Tue Dec 02, 2014 9:29 am
Location: Melbourne

Re: ECU Receive address not divisible by 16

Postby SDean on Fri Mar 06, 2020 10:19 am

MalcolmG wrote:
aNinjaneer wrote:So, given my example, how would you receive address 0x024A? Or is that not possible? Why does the base ID need to be divisible by 16 if there are only 8 messages received from that base? That means you can't ever capture half of the possible addresses.

In my experience (not using that exact address, but reading an IZZE Racing IMU on 0x4EC and 0x4ED), I have been able to use the base address 0x4E8; so based on that I would suggest you try 0x248, and the data on message 0x24A should appear under CAN 2 Offset 0-6; although based on what Stephen has said it's possible it might not work this way.


0x4E8 will work in this circumstance as it is divisible by 8, but 0x4EC and 0x4ED will not as they are not cleanly divisible by 8.
Stephen Dean
MoTeC Research Centre Melbourne, Australia
User avatar
SDean
Site Admin
 
Posts: 747
Joined: Tue Dec 02, 2014 9:29 am
Location: Melbourne

Re: ECU Receive address not divisible by 16

Postby MalcolmG on Fri Mar 06, 2020 10:27 am

SDean wrote:
MalcolmG wrote:
aNinjaneer wrote:So, given my example, how would you receive address 0x024A? Or is that not possible? Why does the base ID need to be divisible by 16 if there are only 8 messages received from that base? That means you can't ever capture half of the possible addresses.

In my experience (not using that exact address, but reading an IZZE Racing IMU on 0x4EC and 0x4ED), I have been able to use the base address 0x4E8; so based on that I would suggest you try 0x248, and the data on message 0x24A should appear under CAN 2 Offset 0-6; although based on what Stephen has said it's possible it might not work this way.


0x4E8 will work in this circumstance as it is divisible by 8, but 0x4EC and 0x4ED will not as they are not cleanly divisible by 8.
Yes, in my example I was stating that I use a base address of 0x4E8 in order to retrieve messages 0x4EC and 0x4ED (which appear as CAN 4 Offset x and CAN 5 Offset x respectively), and that it does in fact work.
MalcolmG
 
Posts: 64
Joined: Fri Dec 18, 2015 12:34 pm
Location: Auckland, NZ


Return to M1 ECUs

Who is online

Users browsing this forum: Google [Bot] and 2 guests

cron