Index: firmware/.launches/DG.launch
===================================================================
diff -u -rbbf1e3736be03a4f041ace57e0f95e23caf472dd -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/.launches/DG.launch (.../DG.launch) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
+++ firmware/.launches/DG.launch (.../DG.launch) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -3,7 +3,7 @@
-
+
Index: firmware/App/Controllers/LoadCell.c
===================================================================
diff -u -r154c57add35e5513f1a18d09328ef7dd64805e02 -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 154c57add35e5513f1a18d09328ef7dd64805e02)
+++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -137,7 +137,7 @@
*************************************************************************/
F32 getLoadCellFilteredWeight( U32 loadCellID )
{
- U32 result = 0;
+ F32 result = 0;
if ( loadCellID < NUM_OF_LOAD_CELLS )
{
Index: firmware/App/Controllers/ROPump.c
===================================================================
diff -u -rbbf1e3736be03a4f041ace57e0f95e23caf472dd -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision bbf1e3736be03a4f041ace57e0f95e23caf472dd)
+++ firmware/App/Controllers/ROPump.c (.../ROPump.c) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -46,7 +46,7 @@
#define ROP_CONTROL_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< interval (ms/task time) at which the RO pump is controlled
#define ROP_P_COEFFICIENT 0.005 ///< P term for RO pump control
-#define ROP_I_COEFFICIENT 0.00025 ///< I term for RO pump control
+#define ROP_I_COEFFICIENT 0.0025 ///< I term for RO pump control
#define ROP_PSI_TO_PWM_DC(p) ( 0.2 + ( (F32)((p) - 100) * 0.01 ) ) ///< conversion factor from target PSI to PWM duty cycle estimate TODO - this is a place holder for real conversion
Index: firmware/App/Services/CommBuffers.c
===================================================================
diff -u -rb64c49fdcf2b6d95e61e63f8e258c4e600935bbd -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision b64c49fdcf2b6d95e61e63f8e258c4e600935bbd)
+++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -91,10 +91,11 @@
// verify given buffer
if ( buffer < NUM_OF_COMM_BUFFERS )
{
+ BOOL bufferFull = FALSE;
U32 activeBuffer;
U32 currentActiveBufCount; // where to start adding new data to buffer (after existing data)
- // add requires brief thread protection because there may be multiple sources for transmits trying to add data to a buffer.
+ // thread protection for queue operations
_disable_IRQ();
bufferGetLock[ buffer ] = TRUE;
@@ -112,17 +113,19 @@
memcpy( buffPtr, data, len );
// adjust buffer count per this data add (also reserves space to add data before releasing thread protection)
commBufferByteCount[ buffer ][ activeBuffer ] += len;
- // release thread protection
- bufferGetLock[ buffer ] = FALSE;
- _enable_IRQ();
// data successfully added to buffer
result = TRUE;
}
else // buffer too full to add this much data
{
- // release thread protection
- bufferGetLock[ buffer ] = FALSE;
- _enable_IRQ();
+ bufferFull = TRUE;
+ }
+ // release thread protection
+ bufferGetLock[ buffer ] = FALSE;
+ _enable_IRQ();
+ // if buffer was full, trigger s/w fault
+ if ( TRUE == bufferFull )
+ {
SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA, len )
}
}
@@ -159,6 +162,8 @@
// verify given buffer
if ( buffer < NUM_OF_COMM_BUFFERS )
{
+ // thread protection for queue operations
+ _disable_IRQ();
// verify requested # of bytes to get are in the buffer
if ( ( len <= ( COMM_BUFFER_LENGTH * DOUBLE_BUFFERS ) ) && ( len <= numberOfBytesInCommBuffer( buffer ) ) )
{
@@ -182,6 +187,8 @@
result += remNumOfBytes;
}
}
+ // release thread protection
+ _enable_IRQ();
}
else // invalid buffer given
{
@@ -214,6 +221,8 @@
// verify given buffer
if ( buffer < NUM_OF_COMM_BUFFERS )
{
+ // thread protection for queue operations
+ _disable_IRQ();
// verify requested # of bytes to peek are in the buffer
if ( ( len <= ( COMM_BUFFER_LENGTH * DOUBLE_BUFFERS ) ) && ( len <= numberOfBytesInCommBuffer( buffer ) ) )
{
@@ -236,6 +245,8 @@
numOfBytesPeeked = bytesInInactiveBuffer + remNumOfBytes;
}
}
+ // release thread protection
+ _enable_IRQ();
}
else // invalid buffer given
{
Index: firmware/DG.dil
===================================================================
diff -u -r2496e9225fa1b2c627d625def02515a0f0dd5793 -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/DG.dil (.../DG.dil) (revision 2496e9225fa1b2c627d625def02515a0f0dd5793)
+++ firmware/DG.dil (.../DG.dil) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -1,4 +1,4 @@
-# RM46L852PGE 04/24/20 09:47:06
+# RM46L852PGE 05/28/20 09:00:50
#
ARCH=RM46L852PGE
#
@@ -374,9 +374,9 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_37_INT_TYPE.VALUE=IRQ
DRIVER.SYSTEM.VAR.VIM_CHANNEL_32_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_INT_ENABLE.VALUE=1
-DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_INT_TYPE.VALUE=FIQ
+DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_INT_TYPE.VALUE=IRQ
DRIVER.SYSTEM.VAR.VIM_CHANNEL_24_INT_PRAGMA_ENABLE.VALUE=0
-DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_INT_PRAGMA_ENABLE.VALUE=1
+DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.SAFETY_INIT_MIBSPI4_RAMPARITYCHECK_ENA.VALUE=0
DRIVER.SYSTEM.VAR.SAFETY_INIT_EMAC_SP_PBISTCHECK_ENA.VALUE=0x00000000
DRIVER.SYSTEM.VAR.MINIT_VALUE.VALUE=0x1E57F
@@ -457,7 +457,7 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_53_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_45_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_37_INT_PRAGMA_ENABLE.VALUE=0
-DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_INT_PRAGMA_ENABLE.VALUE=1
+DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.SAFETY_INIT_VIM1_RAMPARITYCHECK_ENA.VALUE=1
DRIVER.SYSTEM.VAR.CLKT_AVCLK4_SOURCE.VALUE=VCLK
DRIVER.SYSTEM.VAR.FLASH_ADDRESS_WAIT_STATES_FREQ.VALUE=165.0
@@ -954,7 +954,7 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_40_INT_TYPE.VALUE=FIQ
DRIVER.SYSTEM.VAR.VIM_CHANNEL_32_INT_TYPE.VALUE=IRQ
DRIVER.SYSTEM.VAR.VIM_CHANNEL_24_INT_TYPE.VALUE=IRQ
-DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_INT_TYPE.VALUE=FIQ
+DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_INT_TYPE.VALUE=IRQ
DRIVER.SYSTEM.VAR.VIM_CHANNEL_5_INT_ENABLE.VALUE=1
DRIVER.SYSTEM.VAR.PMM_LOGIC_PD5_STATE.VALUE=1
DRIVER.SYSTEM.VAR.SAFETY_INIT_CAN2_DP_PBISTCHECK_ENA.VALUE=0x00000008
Index: firmware/include/sys_vim.h
===================================================================
diff -u -rf068446fdb7889d320ddb6ffbd58f347ce0501e7 -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/include/sys_vim.h (.../sys_vim.h) (revision f068446fdb7889d320ddb6ffbd58f347ce0501e7)
+++ firmware/include/sys_vim.h (.../sys_vim.h) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -147,7 +147,7 @@
| (uint32)((uint32)SYS_FIQ << 13U)\
| (uint32)((uint32)SYS_IRQ << 14U)\
| (uint32)((uint32)SYS_FIQ << 15U)\
- | (uint32)((uint32)SYS_FIQ << 16U)\
+ | (uint32)((uint32)SYS_IRQ << 16U)\
| (uint32)((uint32)SYS_IRQ << 17U)\
| (uint32)((uint32)SYS_IRQ << 18U)\
| (uint32)((uint32)SYS_IRQ << 19U)\
@@ -160,7 +160,7 @@
| (uint32)((uint32)SYS_IRQ << 26U)\
| (uint32)((uint32)SYS_IRQ << 27U)\
| (uint32)((uint32)SYS_IRQ << 28U)\
- | (uint32)((uint32)SYS_FIQ << 29U)\
+ | (uint32)((uint32)SYS_IRQ << 29U)\
| (uint32)((uint32)SYS_IRQ << 30U)\
| (uint32)((uint32)SYS_IRQ << 31U))
Index: firmware/source/can.c
===================================================================
diff -u -r6d2d8f0267c57135554e5a1acaca9aef37f27949 -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/source/can.c (.../can.c) (revision 6d2d8f0267c57135554e5a1acaca9aef37f27949)
+++ firmware/source/can.c (.../can.c) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -1545,8 +1545,6 @@
/** @fn void can1HighLevelInterrupt(void)
* @brief CAN1 Level 0 Interrupt Handler
*/
-#pragma CODE_STATE(can1HighLevelInterrupt, 32)
-#pragma INTERRUPT(can1HighLevelInterrupt, FIQ)
/* SourceId : CAN_SourceId_020 */
/* DesignId : CAN_DesignId_018 */
@@ -1607,8 +1605,6 @@
/** @fn void can1LowLevelInterrupt(void)
* @brief CAN1 Level 1 Interrupt Handler
*/
-#pragma CODE_STATE(can1LowLevelInterrupt, 32)
-#pragma INTERRUPT(can1LowLevelInterrupt, FIQ)
/* SourceId : CAN_SourceId_021 */
/* DesignId : CAN_DesignId_019 */
Index: firmware/source/sys_vim.c
===================================================================
diff -u -rf068446fdb7889d320ddb6ffbd58f347ce0501e7 -rc4434389fe6c3314c2bba98dc2f4cf737551f637
--- firmware/source/sys_vim.c (.../sys_vim.c) (revision f068446fdb7889d320ddb6ffbd58f347ce0501e7)
+++ firmware/source/sys_vim.c (.../sys_vim.c) (revision c4434389fe6c3314c2bba98dc2f4cf737551f637)
@@ -243,7 +243,7 @@
| (uint32)((uint32)SYS_FIQ << 13U)
| (uint32)((uint32)SYS_IRQ << 14U)
| (uint32)((uint32)SYS_FIQ << 15U)
- | (uint32)((uint32)SYS_FIQ << 16U)
+ | (uint32)((uint32)SYS_IRQ << 16U)
| (uint32)((uint32)SYS_IRQ << 17U)
| (uint32)((uint32)SYS_IRQ << 18U)
| (uint32)((uint32)SYS_IRQ << 19U)
@@ -256,7 +256,7 @@
| (uint32)((uint32)SYS_IRQ << 26U)
| (uint32)((uint32)SYS_IRQ << 27U)
| (uint32)((uint32)SYS_IRQ << 28U)
- | (uint32)((uint32)SYS_FIQ << 29U)
+ | (uint32)((uint32)SYS_IRQ << 29U)
| (uint32)((uint32)SYS_IRQ << 30U)
| (uint32)((uint32)SYS_IRQ << 31U);