Index: firmware/App/Drivers/Comm.c =================================================================== diff -u -r1bbf9da32e622975efed00b1a7589387a9829440 -r31f710004436c030e787c895980457e08577702d --- firmware/App/Drivers/Comm.c (.../Comm.c) (revision 1bbf9da32e622975efed00b1a7589387a9829440) +++ firmware/App/Drivers/Comm.c (.../Comm.c) (revision 31f710004436c030e787c895980457e08577702d) @@ -210,6 +210,38 @@ } /************************************************************************* + * @brief clearSCI1CommErrors + * The clearSCI1CommErrors function clears framing and/or overrun error flags \ + * for the SCI1 peripheral. + * @details + * Inputs : none + * Outputs : SCI1 error flags cleared. + * @param none + * @return none + *************************************************************************/ +void clearSCI1CommErrors( void ) +{ + sciReceiveByte( sciREG ); + sciREG->FLR |= ( SCI_FE_INT | SCI_OE_INT ); +} + +/************************************************************************* + * @brief clearSCI2CommErrors + * The clearSCI2CommErrors function clears framing and/or overrun error flags \n + * for the SCI2 peripheral. + * @details + * Inputs : none + * Outputs : SCI2 error flags cleared. + * @param none + * @return none + *************************************************************************/ +void clearSCI2CommErrors( void ) +{ + sciReceiveByte( scilinREG ); + scilinREG->FLR |= ( SCI_FE_INT | SCI_OE_INT ); +} + +/************************************************************************* * @brief isSCI1DMATransmitInProgress * The isSCI2DMATransmitInProgress function determines whether a DMA transmit \n * is in progress on the SCI1 peripheral. Index: firmware/App/Drivers/Comm.h =================================================================== diff -u -rd9cc76524777a12ba77b58ce95416dddfb032997 -r31f710004436c030e787c895980457e08577702d --- firmware/App/Drivers/Comm.h (.../Comm.h) (revision d9cc76524777a12ba77b58ce95416dddfb032997) +++ firmware/App/Drivers/Comm.h (.../Comm.h) (revision 31f710004436c030e787c895980457e08577702d) @@ -40,6 +40,9 @@ void clearSCI2DMAReceiveInterrupt( void ); void clearSCI2DMATransmitInterrupt( void ); +void clearSCI1CommErrors( void ); +void clearSCI2CommErrors( void ); + BOOL isSCI1DMATransmitInProgress( void ); BOOL isSCI2DMATransmitInProgress( void ); Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -r1bbf9da32e622975efed00b1a7589387a9829440 -r31f710004436c030e787c895980457e08577702d --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 1bbf9da32e622975efed00b1a7589387a9829440) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 31f710004436c030e787c895980457e08577702d) @@ -163,7 +163,8 @@ if ( ( flags & SCI_FE_INT ) != 0 ) { sci1FrameErrorCnt++; - // TODO - clear and try to do something to recover (+ max retries = comm fault) + clearSCI1CommErrors(); + // TODO - try to do something to recover (+ max retries = comm fault) #ifdef DEBUG_ENABLED // TODO - temporary debug code - remove later sprintf( debugStr, "Debug UART frame error:%5d \n", sci1FrameErrorCnt ); @@ -173,7 +174,8 @@ if ( ( flags & SCI_OE_INT ) != 0 ) { sci1OverrunErrorCnt++; - // TODO - clear and try to do something to recover (+ max retries = comm fault) + clearSCI1CommErrors(); + // TODO - try to do something to recover (+ max retries = comm fault) #ifdef DEBUG_ENABLED // TODO - temporary debug code - remove later sprintf( debugStr, "Debug UART overrun error:%5d \n", sci1OverrunErrorCnt ); @@ -186,7 +188,8 @@ if ( ( flags & SCI_FE_INT ) != 0 ) { sci2FrameErrorCnt++; - // TODO - clear and try to do something to recover (+ max retries = comm fault) + clearSCI2CommErrors(); + // TODO - try to do something to recover (+ max retries = comm fault) #ifdef DEBUG_ENABLED // TODO - temporary debug code - remove later sprintf( debugStr, "FPGA UART frame error:%5d \n", sci2FrameErrorCnt ); @@ -196,7 +199,8 @@ if ( ( flags & SCI_OE_INT ) != 0 ) { sci2OverrunErrorCnt++; - // TODO - clear and try to do something to recover (+ max retries = comm fault) + clearSCI2CommErrors(); + // TODO - try to do something to recover (+ max retries = comm fault) #ifdef DEBUG_ENABLED // TODO - temporary debug code - remove later sprintf( debugStr, "FPGA UART overrun error:%5d \n", sci2OverrunErrorCnt ); Index: firmware/HD.dil =================================================================== diff -u -r070554b23739bf16ea2bf9528ebabda1ce0ffeb3 -r31f710004436c030e787c895980457e08577702d --- firmware/HD.dil (.../HD.dil) (revision 070554b23739bf16ea2bf9528ebabda1ce0ffeb3) +++ firmware/HD.dil (.../HD.dil) (revision 31f710004436c030e787c895980457e08577702d) @@ -1,4 +1,4 @@ -# RM46L852PGE 12/02/19 18:19:10 +# RM46L852PGE 12/11/19 17:53:30 # ARCH=RM46L852PGE # @@ -4441,7 +4441,7 @@ DRIVER.CAN.VAR.CAN_1_MESSAGE_26_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_18_RTR.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_2_ID.VALUE=0x2 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=103 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TR.VALUE=1033350 DRIVER.CAN.VAR.CAN_3_MESSAGE_31_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_23_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_15_DLC.VALUE=8 @@ -4580,7 +4580,7 @@ DRIVER.CAN.VAR.CAN_3_MESSAGE_24_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_3_MESSAGE_16_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_1_MESSAGE_8_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_NOMINAL_AUTO_BUS_ON_TIME.VALUE=996.758 +DRIVER.CAN.VAR.CAN_1_NOMINAL_AUTO_BUS_ON_TIME.VALUE=10000000.000 DRIVER.CAN.VAR.CAN_2_SHIFT.VALUE=0 DRIVER.CAN.VAR.CAN_1_MESSAGE_64_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_1_MESSAGE_64_DIR.VALUE=0x20000000 @@ -4975,7 +4975,7 @@ DRIVER.CAN.VAR.CAN_2_MESSAGE_55_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_47_DLC.VALUE=8 DRIVER.CAN.VAR.CAN_2_MESSAGE_39_DLC.VALUE=8 -DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TIME.VALUE=1000 +DRIVER.CAN.VAR.CAN_1_AUTO_BUS_ON_TIME.VALUE=10000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_6_EOB.VALUE=0x00000000 DRIVER.CAN.VAR.CAN_3_MESSAGE_6_DIR.VALUE=0x20000000 DRIVER.CAN.VAR.CAN_2_MESSAGE_30_INT_ENA_REF.VALUE=0x00000000 Index: firmware/include/can.h =================================================================== diff -u -rbe83f01a4d54cbd0d92b68cb95a15dcbb06a9a51 -r31f710004436c030e787c895980457e08577702d --- firmware/include/can.h (.../can.h) (revision be83f01a4d54cbd0d92b68cb95a15dcbb06a9a51) +++ firmware/include/can.h (.../can.h) (revision 31f710004436c030e787c895980457e08577702d) @@ -639,7 +639,7 @@ | (uint32)((uint32)((2U + 3U) - 1U) << 8U) \ | (uint32)((uint32)(3U - 1U) << 6U) | (uint32)45U) #define CAN1_TEST_CONFIGVALUE 0x00000080U -#define CAN1_ABOTR_CONFIGVALUE ((uint32)(103U)) +#define CAN1_ABOTR_CONFIGVALUE ((uint32)(1033350U)) #define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \ | (uint32)0x00000000U \ | (uint32)0x00000000U \ Index: firmware/source/can.c =================================================================== diff -u -rbe83f01a4d54cbd0d92b68cb95a15dcbb06a9a51 -r31f710004436c030e787c895980457e08577702d --- firmware/source/can.c (.../can.c) (revision be83f01a4d54cbd0d92b68cb95a15dcbb06a9a51) +++ firmware/source/can.c (.../can.c) (revision 31f710004436c030e787c895980457e08577702d) @@ -180,7 +180,7 @@ | (uint32)0x00000000U; /** - Setup auto bus on timer period */ - canREG1->ABOTR = (uint32)103U; + canREG1->ABOTR = (uint32)1033350U; /** - Initialize message 1 * - Wait until IF1 is ready for use