rusefi/firmware/controllers/lua/examples/ms29bit.txt

62 lines
1.5 KiB
Plaintext

-- in the 29 bit protocol we hard-code magic areas based on data point location within MS outputs structure
-- http://www.megamanual.com/com/CAN.htm
--TPS MAP CLT RPM
packetRPM = {0x00, 0x00}
packetCLT = {0x00, 0x00} --BIT 3 AND 4 MAP(0.1/KPA) & BIT 7 AND 8 CLT (0.1/F)
packetTPS = {0x00, 0x00} -- BIT 1 AND 2 TPS (0.1/%)
packetMAP = {0x00, 0x00}
setTickRate(66)
canRxAdd(0x18B838)
canRxAdd(0x58B838)
canRxAdd(0x60B838)
canRxAdd(0x48B838)
function onCanRx(bus, id, dlc, data)
id11 = id % 2048
if id11 == 0x18B838 then -- RPM
txCan(1, 0x903B8, 1, packetRPM) -- Reply with RPM
end
if id11 == 0x58B838 then -- CLT
txCan(1, 0x5903B8, 1, packetCLT) -- Reply with RPM
end
if id11 == 0x60B838 then -- TPS
txCan(1, 0x6103B8, 1, packetTPS) -- Reply with RPM
end
if id11 == 0x48B838 then -- MAP
txCan(1, 0x4903B8, 1, packetMAP) -- Reply with MAP - HOW MANY BYTESS????
end
end
function onTick()
rpm = getSensor("RPM")
rpm = (rpm == nil and 0 or rpm)
packetRPM[1] = rpm / 256
packetRPM[2] = rpm
tps = getSensor("TPS")
tps = (tps == nil and 0 or tps)
tps = tps * 10
packetTPS[1] = tps / 256
packetTPS[2] = tps
clt = getSensor("Clt")
clt = (clt == nil and 0 or clt)
clt = clt * 1.8 + 134.2
packetCLT[1] = clt / 256
packetCLT[2] = clt
MAP = getSensor("MAP")
MAP = (MAP == nil and 0 or MAP)
MAP = MAP * 10
packetMAP[1] = map / 256
packetMAP[2] = map
end