From d756ec09800e270bbaad222cc7b0daf9ec887f03 Mon Sep 17 00:00:00 2001 From: TyphoonSB Date: Tue, 4 May 2021 12:48:16 +0200 Subject: [PATCH] Update mcp2518fd_can.cpp disable filter controle register before changing the filter, and reenable it after chage. --- src/mcp2518fd_can.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/mcp2518fd_can.cpp b/src/mcp2518fd_can.cpp index 5dda94a..66b6a4a 100644 --- a/src/mcp2518fd_can.cpp +++ b/src/mcp2518fd_can.cpp @@ -1908,11 +1908,16 @@ byte mcp2518fd::init_Mask(byte num, byte ext, unsigned long ulData) { mcp2518fd_OperationModeSelect(CAN_CONFIGURATION_MODE); + mcp2518fd_FilterToFifoLink((CAN_FILTER)num, APP_RX_FIFO, false); + // Setup RX Mask mObj.word = 0; mObj.bF.MSID = ulData; mObj.bF.MIDE = ext; err = mcp2518fd_FilterMaskConfigure((CAN_FILTER)num, &mObj.bF); + + mcp2518fd_FilterToFifoLink((CAN_FILTER)num, APP_RX_FIFO, true); + mcp2518fd_OperationModeSelect(mcpMode); return err; @@ -1926,6 +1931,8 @@ byte mcp2518fd::init_Filt(byte num, byte ext, unsigned long ulData) { int8_t err; err = mcp2518fd_OperationModeSelect(CAN_CONFIGURATION_MODE); + mcp2518fd_FilterToFifoLink((CAN_FILTER)num, APP_RX_FIFO, false); + // Setup RX Filter fObj.word = 0; if (!ext) { // standard identifier @@ -1935,6 +1942,9 @@ byte mcp2518fd::init_Filt(byte num, byte ext, unsigned long ulData) { } fObj.bF.EXIDE = !!ext; mcp2518fd_FilterObjectConfigure((CAN_FILTER)num, &fObj.bF); + + mcp2518fd_FilterToFifoLink((CAN_FILTER)num, APP_RX_FIFO, true); + mcp2518fd_OperationModeSelect(mcpMode); return err; }