Index: firmware/App/Monitors/BloodLeak.c =================================================================== diff -u -r03d752c607e90f52e2f0b05a2ebd01283ed3f033 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision 03d752c607e90f52e2f0b05a2ebd01283ed3f033) +++ firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -1939,7 +1939,7 @@ response.responseLen = responseLen; memcpy( response.responseBuffer, responseBuffer, responseLen ); - result = sendMessage( MSG_ID_DD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE, COMM_BUFFER_OUT_CAN_PC, (U08*)&response, sizeof( BLOOD_LEAK_EMB_MODE_RESP_T ) ); + result = sendMessage( MSG_ID_DD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE, COMM_BUFFER_OUT_DD_CAN_PC, (U08*)&response, sizeof( BLOOD_LEAK_EMB_MODE_RESP_T ) ); return result; } Index: firmware/App/Services/FPInterface.c =================================================================== diff -u -r5479efc61e81eb9e133d529afe805b006797a572 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/App/Services/FPInterface.c (.../FPInterface.c) (revision 5479efc61e81eb9e133d529afe805b006797a572) +++ firmware/App/Services/FPInterface.c (.../FPInterface.c) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -110,40 +110,6 @@ /*********************************************************************//** * @brief - * The cmdFPStartStop function sends a start/stop command to FP for mode - * transition and generate water with commanded flow rate. - * @details Inputs: none - * @details Outputs: start/stop command along with flow rate if applicable. - * @param startStop To start/stop the FP delivery. - * @return TRUE if msg successfully queued for transmit, FALSE if not - *************************************************************************/ -BOOL cmdFPStartStop( BOOL startStop, RO_CMD_ID cmdMode) -{ - FP_WATER_REQ_PAYLOAD_T fpStartRequest; - BOOL result; - MESSAGE_T msg; - U08 *payloadPtr = msg.payload; - - // Populate FP start message - fpStartRequest.cmdID = (U32)cmdMode; - fpStartRequest.start = startStop; - fpStartRequest.roRate = getFPFlowRate(); - - // Create a message record - blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DD_FP_START_STOP_CMD_REQUEST; - msg.hdr.payloadLen = sizeof( FP_WATER_REQ_PAYLOAD_T ); - - memcpy( payloadPtr, &fpStartRequest, sizeof( FP_WATER_REQ_PAYLOAD_T ) ); - - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DD_2_RO, ACK_REQUIRED ); - - return result; -} - -/*********************************************************************//** - * @brief * The setFPFlowRate function sets the FP pump flow rate to deliver purified * water. * @details \b Inputs: none Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r7d24ef2e6a4130b3a049e6106a0371fc6503271f -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 7d24ef2e6a4130b3a049e6106a0371fc6503271f) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -71,18 +71,18 @@ COMM_BUFFER_NOT_USED, ///< CAN message boxes start at 1 so we will not use this buffer COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming TD alarm messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD alarm messages so no response buffer - COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming RO alarm messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing FP alarm messages so no response buffer COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming UI alarm messages COMM_BUFFER_OUT_CAN_DD_2_TD, ///< Buffer for responding to incoming TD to DD messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD to TD messages so no response buffer - COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD to RO messages so no response buffer - COMM_BUFFER_OUT_CAN_DD_2_RO, ///< Buffer for responding to incoming RO to DD messages COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming TD broadcast messages COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD broadcast messages so no response buffer - COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming RO broadcast messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing FP broadcast messages so no response buffer COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming UI broadcast messages - COMM_BUFFER_OUT_CAN_PC, ///< Buffer for responding to incoming PC to TD messages - COMM_BUFFER_NOT_USED, ///< Buffer for outgoing HD to PC messages so no response buffer + COMM_BUFFER_OUT_DD_CAN_PC, ///< Buffer for responding to incoming PC to DD messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD to PC messages so no response buffer + COMM_BUFFER_OUT_FP_CAN_PC, ///< Buffer for responding to incoming PC to FP messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing FP to PC messages so no response buffer }; typedef BOOL (*MsgFuncPtr)( MESSAGE_T* ); @@ -672,8 +672,17 @@ msg.payload[ 0 ] = (U08)ack; // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_PC, ACK_NOT_REQUIRED ); + // check msgID to determine what channel to use and default to DD's channels + if( ( MSG_ID_FIRST_FP_TESTER_MESSAGE <= msgID ) && ( MSG_ID_TD_DEBUG_EVENT > msgID ) ) + { + result = serializeMessage( msg, COMM_BUFFER_OUT_FP_CAN_PC, ACK_NOT_REQUIRED ); + } + else + { + result = serializeMessage( msg, COMM_BUFFER_OUT_DD_CAN_PC, ACK_NOT_REQUIRED ); + } + return result; } Index: firmware/App/Services/SystemCommDD.c =================================================================== diff -u -r573a26b2a0273a4983b1de1cbff5bed63e01dce0 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/App/Services/SystemCommDD.c (.../SystemCommDD.c) (revision 573a26b2a0273a4983b1de1cbff5bed63e01dce0) +++ firmware/App/Services/SystemCommDD.c (.../SystemCommDD.c) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -51,24 +51,24 @@ const COMM_BUFFER_T CAN_OUT_BUFFERS[ NUM_OF_CAN_OUT_BUFFERS ] = { COMM_BUFFER_OUT_CAN_DD_ALARM, + COMM_BUFFER_OUT_CAN_FP_ALARM, COMM_BUFFER_OUT_CAN_DD_2_TD, - COMM_BUFFER_OUT_CAN_DD_2_RO, COMM_BUFFER_OUT_CAN_DD_BROADCAST, - COMM_BUFFER_OUT_CAN_PC + COMM_BUFFER_OUT_CAN_FP_BROADCAST, + COMM_BUFFER_OUT_DD_CAN_PC, + COMM_BUFFER_OUT_FP_CAN_PC, }; /// Array of in-coming CAN buffers. const COMM_BUFFER_T CAN_IN_BUFFERS[ NUM_OF_CAN_IN_BUFFERS ] = { COMM_BUFFER_IN_CAN_TD_ALARM, COMM_BUFFER_IN_CAN_UI_ALARM, - COMM_BUFFER_IN_CAN_RO_ALARM, COMM_BUFFER_IN_CAN_TD_2_DD, COMM_BUFFER_IN_CAN_TD_BROADCAST, - COMM_BUFFER_IN_CAN_RO_2_DD, - COMM_BUFFER_IN_CAN_RO_BROADCAST, COMM_BUFFER_IN_CAN_UI_BROADCAST, - COMM_BUFFER_IN_CAN_PC, + COMM_BUFFER_IN_DD_CAN_PC, + COMM_BUFFER_IN_FP_CAN_PC, }; static volatile BOOL ddIsOnlyCANNode = TRUE; ///< flag indicating whether DG is alone on CAN bus. Index: firmware/App/Services/SystemCommDD.h =================================================================== diff -u -r573a26b2a0273a4983b1de1cbff5bed63e01dce0 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/App/Services/SystemCommDD.h (.../SystemCommDD.h) (revision 573a26b2a0273a4983b1de1cbff5bed63e01dce0) +++ firmware/App/Services/SystemCommDD.h (.../SystemCommDD.h) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -36,8 +36,8 @@ #define MAX_MSG_SEQ_NO 0x7FFF ///< Maximum sequence number for Denali message (then wraps to 1). #define MIN_MSG_SEQ_NO 0x0001 ///< Minimum sequence number for Denali message. -#define NUM_OF_CAN_OUT_BUFFERS 5 ///< Number of CAN buffers for transmit -#define NUM_OF_CAN_IN_BUFFERS 9 ///< Number of CAN buffers for receiving +#define NUM_OF_CAN_OUT_BUFFERS 7 ///< Number of CAN buffers for transmit +#define NUM_OF_CAN_IN_BUFFERS 7 ///< Number of CAN buffers for receiving // ********** public function prototypes ********** Index: firmware/DD.dil =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/DD.dil (.../DD.dil) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/DD.dil (.../DD.dil) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -1,4 +1,4 @@ -# RM46L852PGE 12/06/24 10:10:57 +# RM46L852PGE 09/08/25 10:13:51 # ARCH=RM46L852PGE # @@ -3300,7 +3300,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_21_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_13_EOB.VALUE=0x00000080 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_DIR.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_22_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_14_INT_ENA.VALUE=0x00000000 @@ -3415,7 +3415,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_22_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_14_EOB.VALUE=0x00000080 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_DIR.VALUE=0x20000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_DIR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON.VALUE=0x00000200 DRIVER.CAN.VAR.CAN_2_MESSAGE_63_INT_ENA.VALUE=0x00000000 @@ -3499,7 +3499,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_1_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_31_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_ENA.VALUE=0x80000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_8_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_PORT_RX_PSL.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_ID.VALUE=41 @@ -3515,7 +3515,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_31_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_DIR.VALUE=0x20000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_EOB.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_EOB.VALUE=0x00000080 DRIVER.CAN.VAR.CAN_1_MESSAGE_15_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_3_MESSAGE_5_BOOL_ENA.VALUE=0 @@ -3919,7 +3919,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_32_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_24_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_16_INT_LEVEL.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_10_ID.VALUE=0x101 +DRIVER.CAN.VAR.CAN_1_MESSAGE_10_ID.VALUE=0x102 DRIVER.CAN.VAR.CAN_2_MESSAGE_31_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_23_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_15_DLC.VALUE=8 @@ -3981,7 +3981,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_10_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_5_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_1_INT_LEVEL.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_11_ID.VALUE=0x102 +DRIVER.CAN.VAR.CAN_1_MESSAGE_11_ID.VALUE=0x103 DRIVER.CAN.VAR.CAN_1_NOMINAL_BIT_TIME.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_61_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_53_INT_ENA_REF.VALUE=0x00000000 @@ -4019,7 +4019,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_26_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_18_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_EOB.VALUE=0x00000080 -DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DIR.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_61_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_53_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_45_INT_ENA.VALUE=0x00000000 @@ -4036,15 +4036,15 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_49_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_59_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_20_ID.VALUE=20 -DRIVER.CAN.VAR.CAN_1_MESSAGE_12_ID.VALUE=0x103 +DRIVER.CAN.VAR.CAN_1_MESSAGE_12_ID.VALUE=0x402 DRIVER.CAN.VAR.CAN_2_MESSAGE_40_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_32_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_24_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_16_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_AUTO_BUS_ON.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_31_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_INT_ENA_REF.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_ENA_REF.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_ENA_REF.VALUE=0x00000001 DRIVER.CAN.VAR.CAN_3_MESSAGE_63_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_55_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_47_MASK.VALUE=0x000007FF @@ -4113,7 +4113,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_11_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_6_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_ID.VALUE=21 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_ID.VALUE=0x402 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_ID.VALUE=0x403 DRIVER.CAN.VAR.CAN_1_MESSAGE_9_INT_LEVEL.VALUE=0x00000200 DRIVER.CAN.VAR.CAN_2_MESSAGE_40_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_40_DIR.VALUE=0x20000000 @@ -4169,7 +4169,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_3_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_30_ID.VALUE=30 DRIVER.CAN.VAR.CAN_1_MESSAGE_22_ID.VALUE=22 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_ID.VALUE=0x403 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_ID.VALUE=0x404 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_33_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_25_DLC.VALUE=8 @@ -4233,7 +4233,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_58_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_31_ID.VALUE=31 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_ID.VALUE=23 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_ID.VALUE=15 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_ID.VALUE=0x405 DRIVER.CAN.VAR.CAN_3_MESSAGE_1_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_5_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_41_EOB.VALUE=0x00000000 @@ -4250,7 +4250,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_11_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_11_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_ENA.VALUE=0x80000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_3_INT_ENA.VALUE=0x00000400 +DRIVER.CAN.VAR.CAN_1_MESSAGE_3_INT_ENA.VALUE=0x00000800 DRIVER.CAN.VAR.CAN_1_MESSAGE_3_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_58_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_PORT_RX_PSL.VALUE=1 @@ -4524,7 +4524,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_15_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_15_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_7_EOB.VALUE=0x00000080 -DRIVER.CAN.VAR.CAN_1_MESSAGE_7_DIR.VALUE=0x20000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_7_DIR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_33_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_30_BOOL_ENA.VALUE=0 @@ -4643,7 +4643,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_31_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_23_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_ENA.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_ENA.VALUE=0x00000800 DRIVER.CAN.VAR.CAN_1_MESSAGE_15_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_8_ENA.VALUE=0x80000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_21_ID.VALUE=21 @@ -4669,7 +4669,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_47_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_39_INT_ENA_REF.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_EOB.VALUE=0x00000080 -DRIVER.CAN.VAR.CAN_1_MESSAGE_8_DIR.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_8_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_40_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_32_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_3_MESSAGE_24_MASK.VALUE=0x000007FF @@ -4791,7 +4791,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_12_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_12_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_PORT_TX_PSL.VALUE=1 -DRIVER.CAN.VAR.CAN_1_MESSAGE_7_ID.VALUE=0x20 +DRIVER.CAN.VAR.CAN_1_MESSAGE_7_ID.VALUE=0x100 DRIVER.CAN.VAR.CAN_1_MESSAGE_4_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_58_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_EOB.VALUE=0x00000000 @@ -4853,7 +4853,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_45_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_37_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_29_RTR.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_8_ID.VALUE=0x21 +DRIVER.CAN.VAR.CAN_1_MESSAGE_8_ID.VALUE=0x101 DRIVER.CAN.VAR.CAN_3_MESSAGE_50_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_42_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_34_DLC.VALUE=8 @@ -4917,7 +4917,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_32_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_24_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_1_MESSAGE_16_MASK.VALUE=0x000007FF -DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_ENA.VALUE=0x00000400 +DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_ENA.VALUE=0x00000800 DRIVER.CAN.VAR.CAN_3_MESSAGE_41_ID.VALUE=41 DRIVER.CAN.VAR.CAN_3_MESSAGE_33_ID.VALUE=33 DRIVER.CAN.VAR.CAN_3_MESSAGE_25_ID.VALUE=25 @@ -5019,7 +5019,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_39_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_30_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_22_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA.VALUE=0x00000800 +DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_ENA.VALUE=0x00000400 DRIVER.CAN.VAR.CAN_3_PORT_RX_PSL.VALUE=1 DRIVER.CAN.VAR.CAN_2_MESSAGE_50_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_42_RTR.VALUE=0x00000000 @@ -5051,7 +5051,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_49_INT_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_31_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_BOOL_ENA.VALUE=0 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_BOOL_ENA.VALUE=0 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_51_ID.VALUE=51 DRIVER.CAN.VAR.CAN_3_MESSAGE_43_ID.VALUE=43 DRIVER.CAN.VAR.CAN_3_MESSAGE_35_ID.VALUE=35 @@ -5249,7 +5249,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_6_MASK.VALUE=0x000007FF DRIVER.CAN.VAR.CAN_2_MESSAGE_57_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_49_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_7_INT_ENA.VALUE=0x00000800 +DRIVER.CAN.VAR.CAN_1_MESSAGE_7_INT_ENA.VALUE=0x00000400 DRIVER.CAN.VAR.CAN_1_MESSAGE_5_BOOL_ENA.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_59_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_60_RTR.VALUE=0x00000000 @@ -5317,7 +5317,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_4_ID.VALUE=4 DRIVER.CAN.VAR.CAN_1_MESSAGE_31_INT_LEVEL.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_23_INT_LEVEL.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_LEVEL.VALUE=0x00000000 +DRIVER.CAN.VAR.CAN_1_MESSAGE_15_INT_LEVEL.VALUE=0x00008000 DRIVER.CAN.VAR.CAN_2_MESSAGE_58_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_9_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_9_DIR.VALUE=0x20000000 @@ -5331,7 +5331,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_7_BOOL_ENA.VALUE=0 DRIVER.CAN.VAR.CAN_2_MESSAGE_2_ENA.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_21_INT_ENA.VALUE=0x00000000 -DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA.VALUE=0x00000400 +DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_ENA.VALUE=0x00000800 DRIVER.CAN.VAR.CAN_3_PORT_TX_DOUT.VALUE=1 DRIVER.CAN.VAR.CAN_3_MESSAGE_64_ID.VALUE=64 DRIVER.CAN.VAR.CAN_3_MESSAGE_56_ID.VALUE=56 Index: firmware/include/can.h =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/include/can.h (.../can.h) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/include/can.h (.../can.h) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -655,6 +655,7 @@ | (uint32)0x00001000U \ | (uint32)0x00002000U \ | (uint32)0x00004000U \ + | (uint32)0x00008000U \ | (uint32)0x00000000U \ | (uint32)0x00000000U \ | (uint32)0x00000000U \ @@ -670,7 +671,6 @@ | (uint32)0x00000000U \ | (uint32)0x00000000U \ | (uint32)0x00000000U \ - | (uint32)0x00000000U \ | (uint32)0x00000000U) #define CAN1_INTMUX1_CONFIGVALUE ((uint32)0x00000000U \ Index: firmware/source/can.c =================================================================== diff -u -r313982ccc772f1bbe182877dff7e00381b04e0f4 -r88662452040aa91ce9a7da032e9ed1865517bdd5 --- firmware/source/can.c (.../can.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) +++ firmware/source/can.c (.../can.c) (revision 88662452040aa91ce9a7da032e9ed1865517bdd5) @@ -128,6 +128,7 @@ | (uint32)0x00001000U | (uint32)0x00002000U | (uint32)0x00004000U + | (uint32)0x00008000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000000U @@ -143,7 +144,6 @@ | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)0x00000000U - | (uint32)0x00000000U | (uint32)0x00000000U; canREG1->INTMUXx[1U] = (uint32)0x00000000U @@ -235,8 +235,8 @@ } /* Wait */ canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x4U & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x4U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 3U; @@ -311,8 +311,8 @@ } /* Wait */ canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x20U & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x100U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 7U; @@ -330,8 +330,8 @@ } /* Wait */ canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x21U & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x101U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 8U; @@ -368,7 +368,7 @@ } /* Wait */ canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x101U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x102U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 10U; @@ -387,7 +387,7 @@ } /* Wait */ canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x102U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x103U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 11U; @@ -406,7 +406,7 @@ } /* Wait */ canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x103U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x402U & (uint32)0x000007FFU) << (uint32)18U); canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 12U; @@ -425,8 +425,8 @@ } /* Wait */ canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x402U & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x403U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF1CMD = (uint8) 0xF8U; canREG1->IF1NO = 13U; @@ -444,11 +444,30 @@ } /* Wait */ canREG1->IF2MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x403U & (uint32)0x000007FFU) << (uint32)18U); - canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF2ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x00000000U | (uint32)((uint32)((uint32)0x404U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF2MCTL = 0x00001000U | (uint32)0x00000400U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; canREG1->IF2CMD = (uint8) 0xF8U; canREG1->IF2NO = 14U; + /** - Initialize message 15 + * - Wait until IF1 is ready for use + * - Set message mask + * - Set message control word + * - Set message arbitration + * - Set IF1 control byte + * - Set IF1 message number + */ + /*SAFETYMCUSW 28 D MR:NA "Potentially infinite loop found - Hardware Status check for execution sequence" */ + while ((canREG1->IF1STAT & 0x80U) ==0x80U) + { + } /* Wait */ + + canREG1->IF1MSK = 0xC0000000U | (uint32)((uint32)((uint32)0x000007FFU & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1ARB = (uint32)0x80000000U | (uint32)0x00000000U | (uint32)0x20000000U | (uint32)((uint32)((uint32)0x405U & (uint32)0x000007FFU) << (uint32)18U); + canREG1->IF1MCTL = 0x00001000U | (uint32)0x00000800U | (uint32)0x00000000U | (uint32)0x00000080U | (uint32)8U; + canREG1->IF1CMD = (uint8) 0xF8U; + canREG1->IF1NO = 15U; + /** - Setup IF1 for data transmission * - Wait until IF1 is ready for use * - Set IF1 control byte