Index: firmware/App/Common.h
===================================================================
diff -u -ref0b3f0ec00fadc50f95e0db1a6477fb4b076ea1 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Common.h (.../Common.h) (revision ef0b3f0ec00fadc50f95e0db1a6477fb4b076ea1)
+++ firmware/App/Common.h (.../Common.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -88,6 +88,7 @@
#define ML_PER_LITER 1000
#define MS_PER_SECOND 1000
#define SEC_PER_MIN 60
+#define FRACTION_TO_PERCENT_FACTOR 100.0
// **** Common Macros ****
Index: firmware/App/Controllers/BloodFlow.c
===================================================================
diff -u -r85bfe5051e4d2bf67be39d394f96c075b4e52836 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 85bfe5051e4d2bf67be39d394f96c075b4e52836)
+++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -642,16 +642,15 @@
F32 measSpd = getMeasuredBloodPumpSpeed();
F32 measMCSpd = getMeasuredBloodPumpMCSpeed();
F32 measMCCurr = getMeasuredBloodPumpMCCurrent();
+ F32 pumpPWMPctDutyCycle = bloodPumpPWMDutyCyclePctSet * FRACTION_TO_PERCENT_FACTOR;
#ifdef DEBUG_ENABLED
// TODO - temporary debug code - remove later
- S32 pwm = (S32)( 100.0 * bloodPumpPWMDutyCyclePctSet );
char debugFlowStr[ 256 ];
- sprintf( debugFlowStr, "Target Flow:%5d, Meas. Flow:%5d, Speed:%5d RPM, Current:%5d mA, PWM:%5d \n", flowStPt, (S32)measFlow, (S32)measMCSpd, (S32)measMCCurr, pwm );
+ sprintf( debugFlowStr, "Target Flow:%5d, Meas. Flow:%5d, Speed:%5d RPM, Current:%5d mA, PWM:%5d \n", flowStPt, (S32)measFlow, (S32)measMCSpd, (S32)measMCCurr, (S32)pumpPWMPctDutyCycle );
sendDebugData( (U08*)debugFlowStr, strlen(debugFlowStr) );
#endif
- broadcastBloodFlowData( flowStPt, measFlow, measRotSpd, measSpd, measMCSpd, measMCCurr );
- //broadcastBloodFlowData( 500, 501.0, 100.0, 1000.0, -1001.25, 750.0 );
+ broadcastBloodFlowData( flowStPt, measFlow, measRotSpd, measSpd, measMCSpd, measMCCurr, pumpPWMPctDutyCycle );
bloodFlowDataPublicationTimerCounter = 0;
}
}
Index: firmware/App/Services/AlarmMgmt.c
===================================================================
diff -u -r96bff7c1a8c755eb28a89e131a737dc1c4a7d9fc -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 96bff7c1a8c755eb28a89e131a737dc1c4a7d9fc)
+++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -63,7 +63,8 @@
{ ALARM_PRIORITY_MEDIUM, 0, ALARM_ID_NO_ALARM, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_CURRENT_CHECK
{ ALARM_PRIORITY_MEDIUM, 0, ALARM_ID_NO_ALARM, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_SPEED_CHECK
{ ALARM_PRIORITY_MEDIUM, 0, ALARM_ID_NO_ALARM, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_MC_DIRECTION_CHECK
- { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE } // ALARM_ID_DIAL_OUT_PUMP_ROTOR_SPEED_CHECK
+ { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, FALSE, TRUE , FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }, // ALARM_ID_DIAL_OUT_PUMP_ROTOR_SPEED_CHECK
+ { ALARM_PRIORITY_HIGH, 0, ALARM_ID_NO_ALARM, TRUE, TRUE , TRUE , TRUE , TRUE , TRUE , TRUE , FALSE } // ALARM_ID_WATCHDOG_EXPIRED
};
const ALARM_DATA_T blankAlarmData = { ALARM_DATA_TYPE_NONE, 0 };
Index: firmware/App/Services/AlarmMgmt.h
===================================================================
diff -u -r96bff7c1a8c755eb28a89e131a737dc1c4a7d9fc -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 96bff7c1a8c755eb28a89e131a737dc1c4a7d9fc)
+++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -39,6 +39,7 @@
ALARM_ID_DIAL_OUT_PUMP_MC_SPEED_CHECK, // 15
ALARM_ID_DIAL_OUT_PUMP_MC_DIRECTION_CHECK,
ALARM_ID_DIAL_OUT_PUMP_ROTOR_SPEED_CHECK,
+ ALARM_ID_WATCHDOG_EXPIRED,
NUM_OF_ALARM_IDS
} ALARM_ID_T;
Index: firmware/App/Services/Interrupts.c
===================================================================
diff -u -r31f710004436c030e787c895980457e08577702d -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 31f710004436c030e787c895980457e08577702d)
+++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -19,6 +19,9 @@
#include "sci.h"
#include "sys_dma.h"
+#include "Common.h"
+
+#include "AlarmMgmt.h"
#include "Comm.h"
#include "Interrupts.h"
#include "FPGA.h"
Index: firmware/App/Services/SystemComm.c
===================================================================
diff -u -r85bfe5051e4d2bf67be39d394f96c075b4e52836 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 85bfe5051e4d2bf67be39d394f96c075b4e52836)
+++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -78,7 +78,6 @@
static U32 sentCANPacketsCount = 0; // TODO - debug - remove these two flags later
static U32 compCANPacketsCount = 0;
-static CAN_MESSAGE_BOX_T pendingXmitMsgBox = 0;
// ********** private function prototypes **********
@@ -251,22 +250,24 @@
*************************************************************************/
void handleCANMsgInterrupt( CAN_MESSAGE_BOX_T srcCANBox )
{
- if ( ( TRUE == isCANBoxForXmit( srcCANBox ) ) && ( srcCANBox != pendingXmitMsgBox ) )
- {
- srcCANBox = (CAN_MESSAGE_BOX_T)0;
- }
-
// message interrupt is for a transmit message box?
if ( TRUE == isCANBoxForXmit( srcCANBox ) )
{
U32 bytesXmitted;
compCANPacketsCount++;
- bytesXmitted = transmitNextCANPacket();
- if ( 0 == bytesXmitted )
+ if ( FALSE == canIsTxMessagePending( canREG1, srcCANBox ) )
{
- signalCANXmitsCompleted();
+ bytesXmitted = transmitNextCANPacket();
+ if ( 0 == bytesXmitted )
+ {
+ signalCANXmitsCompleted();
+ }
}
+ else
+ {
+ compCANPacketsCount--;
+ }
}
else if ( TRUE == isCANBoxForRecv( srcCANBox ) )
{
@@ -506,8 +507,7 @@
if ( dataSize == CAN_MESSAGE_PAYLOAD_SIZE )
{
signalCANXmitsInitiated();
- pendingXmitMsgBox = mBox;
- if ( canTransmit( canREG1, mBox, data ) == 0 )
+ if ( 0 == canTransmit( canREG1, mBox, data ) )
{
signalCANXmitsCompleted();
// TODO - shouldn't get here, but let's see if we do
@@ -516,8 +516,8 @@
else
{
sentCANPacketsCount++;
+ result = CAN_MESSAGE_PAYLOAD_SIZE;
}
- result = CAN_MESSAGE_PAYLOAD_SIZE;
}
else
{ // TODO - shouldn't get here - just testing - set first data to new s/w fault enum later
Index: firmware/App/Services/SystemCommMessages.c
===================================================================
diff -u -ref0b3f0ec00fadc50f95e0db1a6477fb4b076ea1 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ef0b3f0ec00fadc50f95e0db1a6477fb4b076ea1)
+++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -45,6 +45,17 @@
U08 alarmsFlags; // bit flags: 1 = true, 0 = false for each bit
} ALARM_COMP_STATUS_PAYLOAD_T;
+typedef struct
+{
+ U32 setPoint;
+ F32 measFlow;
+ F32 measRotorSpd;
+ F32 measPumpSpd;
+ F32 measMCSpd;
+ F32 measMCCurr;
+ F32 pwmDC;
+} PERISTALTIC_PUMP_STATUS_PAYLOAD_T;
+
#pragma pack(pop)
// ********** private data **********
@@ -291,33 +302,33 @@
* @param measSpd : Latest measured blood pump speed
* @param measMCspd : Latest measured blood pump motor controller speed
* @param measSpd : Latest measured blood pump motor controller current
+ * @param pwmDC : Latest PWM duty cycle %
* @return TRUE if msg successfully queued for transmit, FALSE if not
*************************************************************************/
-BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr )
+BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr, F32 pwmDC )
{
BOOL result;
MESSAGE_T msg;
U32 msgSize;
U08 data[ sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ]; // must hold full (wrapped) message + sync + any CAN padding
U08 *payloadPtr = msg.payload;
+ PERISTALTIC_PUMP_STATUS_PAYLOAD_T payload;
// create a message record
blankMessage( &msg );
msg.hdr.msgID = MSG_ID_BLOOD_FLOW_DATA;
- msg.hdr.payloadLen = sizeof( U32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 ) + sizeof( F32 );
+ msg.hdr.payloadLen = sizeof( PERISTALTIC_PUMP_STATUS_PAYLOAD_T );
- memcpy( payloadPtr, &flowStPt, sizeof( U32 ) );
- payloadPtr += sizeof( U32 );
- memcpy( payloadPtr, &measFlow, sizeof( F32 ) );
- payloadPtr += sizeof( F32 );
- memcpy( payloadPtr, &measRotorSpd, sizeof( F32 ) );
- payloadPtr += sizeof( F32 );
- memcpy( payloadPtr, &measSpd, sizeof( F32 ) );
- payloadPtr += sizeof( F32 );
- memcpy( payloadPtr, &measMCSpd, sizeof( F32 ) );
- payloadPtr += sizeof( F32 );
- memcpy( payloadPtr, &measMCCurr, sizeof( F32 ) );
+ payload.setPoint = flowStPt;
+ payload.measFlow = measFlow;
+ payload.measRotorSpd = measRotorSpd;
+ payload.measPumpSpd = measSpd;
+ payload.measMCSpd = measMCSpd;
+ payload.measMCCurr = measMCCurr;
+ payload.pwmDC = pwmDC;
+ memcpy( payloadPtr, &payload, sizeof( PERISTALTIC_PUMP_STATUS_PAYLOAD_T ) );
+
// serialize the message (w/ sync, CRC, and appropriate CAN padding)
msgSize = serializeMessage( msg, data );
Index: firmware/App/Services/SystemCommMessages.h
===================================================================
diff -u -ref0b3f0ec00fadc50f95e0db1a6477fb4b076ea1 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision ef0b3f0ec00fadc50f95e0db1a6477fb4b076ea1)
+++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -69,7 +69,7 @@
BOOL broadcastAlarmCleared( U16 alarm );
// MSG_ID_BLOOD_FLOW_DATA
-BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr );
+BOOL broadcastBloodFlowData( U32 flowStPt, F32 measFlow, F32 measRotorSpd, F32 measSpd, F32 measMCSpd, F32 measMCCurr, F32 pwmDC );
// MSG_ID_DG_CHECK_IN
void handleDGCheckIn( MESSAGE_T *message );
Index: firmware/App/Services/WatchdogMgmt.c
===================================================================
diff -u -r1bbf9da32e622975efed00b1a7589387a9829440 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 1bbf9da32e622975efed00b1a7589387a9829440)
+++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -16,6 +16,7 @@
#include "Common.h"
#include "CPLD.h"
+#include "SafetyShutdown.h"
#include "SystemCommMessages.h"
#include "Timers.h"
#include "WatchdogMgmt.h"
@@ -105,7 +106,8 @@
// check to see if watchdog has expired
if ( getCPLDWatchdogExpired() == PIN_SIGNAL_HIGH )
{
- // TODO - watchdog expired fault
+// activateSafetyShutdown();
+// activateAlarmNoData( ALARM_ID_WATCHDOG_EXPIRED );
}
}
Index: firmware/HD.dil
===================================================================
diff -u -r2bb447181c2519690441d81f83563d17e0882ef2 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/HD.dil (.../HD.dil) (revision 2bb447181c2519690441d81f83563d17e0882ef2)
+++ firmware/HD.dil (.../HD.dil) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -1,4 +1,4 @@
-# RM46L852PGE 12/17/19 11:10:24
+# RM46L852PGE 12/18/19 16:45:53
#
ARCH=RM46L852PGE
#
@@ -139,7 +139,7 @@
DRIVER.SYSTEM.VAR.ECAP6_ENABLE.VALUE=1
DRIVER.SYSTEM.VAR.SCI_ENABLE.VALUE=1
DRIVER.SYSTEM.VAR.FLASH_DATA_1_WAIT_STATE_FREQ.VALUE=110.0
-DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_BASE.VALUE=0x08001200
+DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_BASE.VALUE=0x08002400
DRIVER.SYSTEM.VAR.VIM_CHANNEL_125_MAPPING.VALUE=125
DRIVER.SYSTEM.VAR.VIM_CHANNEL_117_MAPPING.VALUE=117
DRIVER.SYSTEM.VAR.VIM_CHANNEL_109_MAPPING.VALUE=109
@@ -358,7 +358,7 @@
DRIVER.SYSTEM.VAR.VIM_CONFIG.VALUE=TRUE
DRIVER.SYSTEM.VAR.VIM_CHANNEL_101_MAPPING.VALUE=101
DRIVER.SYSTEM.VAR.VIM_CHANNEL_101_NAME.VALUE=etpwm6TripZoneInterrupt
-DRIVER.SYSTEM.VAR.RAM_STACK_ABORT_LENGTH.VALUE=0x00000100
+DRIVER.SYSTEM.VAR.RAM_STACK_ABORT_LENGTH.VALUE=0x00000200
DRIVER.SYSTEM.VAR.FLASH_DATA_MAX_WAIT_STATES.VALUE=3
DRIVER.SYSTEM.VAR.FLASH_MODE.VALUE=PIPELINE
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_11_SUB_7_DISABLE.VALUE=0
@@ -373,7 +373,7 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_37_INT_ENABLE.VALUE=0
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=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_24_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_16_INT_PRAGMA_ENABLE.VALUE=1
@@ -407,7 +407,7 @@
DRIVER.SYSTEM.VAR.CORE_HANDLER_TABLE_UNDEF_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_8_INT_PRAGMA_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.SAFETY_INIT_PBIST_SP_SELECTED.VALUE=0
-DRIVER.SYSTEM.VAR.RAM_STACK_ABORT_BASE.VALUE=0x08001300
+DRIVER.SYSTEM.VAR.RAM_STACK_ABORT_BASE.VALUE=0x08003400
DRIVER.SYSTEM.VAR.VIM_CHANNEL_92_NAME.VALUE=etpwm2Interrupt
DRIVER.SYSTEM.VAR.VIM_CHANNEL_84_NAME.VALUE=phantomInterrupt
DRIVER.SYSTEM.VAR.VIM_CHANNEL_76_NAME.VALUE=phantomInterrupt
@@ -435,7 +435,7 @@
DRIVER.SYSTEM.VAR.CORE_PMU_COUNTER1_EVENT.VALUE=0x11
DRIVER.SYSTEM.VAR.EFUSE_SELFTEST_ENA.VALUE=0
DRIVER.SYSTEM.VAR.CLKT_AVCLK4_DOMAIN_DISABLE.VALUE=0
-DRIVER.SYSTEM.VAR.RAM_LINK_BASE_ADDRESS.VALUE=0x08001500
+DRIVER.SYSTEM.VAR.RAM_LINK_BASE_ADDRESS.VALUE=0x08003800
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_12_SUB_4_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_2_SUB_7_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_120_INT_ENABLE.VALUE=0
@@ -549,14 +549,14 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_85_NAME.VALUE=phantomInterrupt
DRIVER.SYSTEM.VAR.VIM_CHANNEL_77_NAME.VALUE=EMACTxIntISR
DRIVER.SYSTEM.VAR.VIM_CHANNEL_69_NAME.VALUE=phantomInterrupt
-DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_LENGTH.VALUE=0x00000100
+DRIVER.SYSTEM.VAR.RAM_STACK_IRQ_LENGTH.VALUE=0x00001000
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_11_SUB_6_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_7_SUB_0_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_2_INT_PRAGMA_ENABLE.VALUE=1
DRIVER.SYSTEM.VAR.CLKT_RTI2_POST_SOURCE.VALUE=VCLK
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_9_PERMISSION_VALUE.VALUE=0x1300
DRIVER.SYSTEM.VAR.VIM_CHANNEL_5_NAME.VALUE=rtiCompare3Interrupt
-DRIVER.SYSTEM.VAR.RAM_STACK_LENGTH.VALUE=0x00001500
+DRIVER.SYSTEM.VAR.RAM_STACK_LENGTH.VALUE=0x00003800
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_2_PERMISSION.VALUE=PRIV_RO_USER_RO_EXEC
DRIVER.SYSTEM.VAR.CLKT_LPO_BIAS.VALUE=true
DRIVER.SYSTEM.VAR.CLKT_AVCLK3_DIVIDER1.VALUE=4
@@ -628,7 +628,7 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_103_NAME.VALUE=etpwm7TripZoneInterrupt
DRIVER.SYSTEM.VAR.PBIST_ALGO_16.VALUE=0
DRIVER.SYSTEM.VAR.CLKT_VCLK2_DIVIDER.VALUE=1
-DRIVER.SYSTEM.VAR.RAM_LINK_LENGTH.VALUE=0x0002eb00
+DRIVER.SYSTEM.VAR.RAM_LINK_LENGTH.VALUE=0x0002c800
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_11_END_ADDRESS.VALUE=0x0802ffff
DRIVER.SYSTEM.VAR.VIM_CHANNEL_30_INT_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.VIM_CHANNEL_22_INT_ENABLE.VALUE=0
@@ -793,7 +793,7 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_29_MAPPING.VALUE=29
DRIVER.SYSTEM.VAR.ECLK_PORT_BIT0_DIR.VALUE=1
DRIVER.SYSTEM.VAR.FLASH_LENGTH.VALUE=0x00140000
-DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_LENGTH.VALUE=0x00000100
+DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_LENGTH.VALUE=0x00001000
DRIVER.SYSTEM.VAR.CLKT_EXT1_ENABLE.VALUE=FALSE
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_12_SUB_2_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_9_SUB_7_DISABLE.VALUE=0
@@ -925,7 +925,7 @@
DRIVER.SYSTEM.VAR.SAFETY_INIT_DMA_DP_PBISTCHECK_ENA.VALUE=0x00000800
DRIVER.SYSTEM.VAR.HET_ENABLE.VALUE=0
DRIVER.SYSTEM.VAR.PBIST_ALGO_13_14.VALUE=0
-DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_BASE.VALUE=0x08001400
+DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_BASE.VALUE=0x08003600
DRIVER.SYSTEM.VAR.RAM_STACK_SVC_BASE.VALUE=0x08001000
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_9_TYPE.VALUE=DEVICE_NONSHAREABLE
DRIVER.SYSTEM.VAR.VIM_CHANNEL_99_INT_PRAGMA_ENABLE.VALUE=0
@@ -1134,7 +1134,7 @@
DRIVER.SYSTEM.VAR.RTI_ENABLE.VALUE=1
DRIVER.SYSTEM.VAR.STC_MAX_TIMEOUT.VALUE=0xFFFFFFFF
DRIVER.SYSTEM.VAR.CLKT_LPO_LOW_TRIM.VALUE=100.00
-DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_BASE.VALUE=0x08001100
+DRIVER.SYSTEM.VAR.RAM_STACK_FIQ_BASE.VALUE=0x08001400
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_4_PERMISSION_VALUE.VALUE=0x0300
DRIVER.SYSTEM.VAR.VIM_CHANNEL_0_NAME.VALUE=esmHighInterrupt
DRIVER.SYSTEM.VAR.FLASH_BANK_LINK_LENGTH_7.VALUE=0x000010000
@@ -1183,8 +1183,8 @@
DRIVER.SYSTEM.VAR.VIM_CHANNEL_23_NAME.VALUE=gioLowLevelInterrupt
DRIVER.SYSTEM.VAR.VIM_CHANNEL_15_NAME.VALUE=adc1Group1Interrupt
DRIVER.SYSTEM.VAR.ERRATA_WORKAROUND_15.VALUE=1
-DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_LENGTH.VALUE=0x00000100
-DRIVER.SYSTEM.VAR.RAM_STACK_SVC_LENGTH.VALUE=0x00000100
+DRIVER.SYSTEM.VAR.RAM_STACK_UNDEF_LENGTH.VALUE=0x00000200
+DRIVER.SYSTEM.VAR.RAM_STACK_SVC_LENGTH.VALUE=0x00000400
DRIVER.SYSTEM.VAR.CLKT_LPO_TRIM_OTP_LOC.VALUE=0xF00801B4
DRIVER.SYSTEM.VAR.CORE_MPU_REGION_6_SUB_6_DISABLE.VALUE=0
DRIVER.SYSTEM.VAR.CORE_HANDLER_TABLE_UNDEF_ENTRY.VALUE=_undef
@@ -3433,7 +3433,7 @@
DRIVER.CAN.VAR.CAN_1_MESSAGE_14_BOOL_ENA.VALUE=0
DRIVER.CAN.VAR.CAN_3_MESSAGE_7_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_21_INT_LEVEL.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_13_INT_LEVEL.VALUE=0x00002000
DRIVER.CAN.VAR.CAN_3_MESSAGE_57_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_3_MESSAGE_49_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_BASE.VALUE=0xFFF7DC00
@@ -3459,7 +3459,7 @@
DRIVER.CAN.VAR.CAN_2_MESSAGE_32_ID.VALUE=32
DRIVER.CAN.VAR.CAN_2_MESSAGE_24_ID.VALUE=24
DRIVER.CAN.VAR.CAN_2_MESSAGE_16_ID.VALUE=16
-DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_1_INT_LEVEL.VALUE=0x00000002
DRIVER.CAN.VAR.CAN_1_MESSAGE_31_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_MESSAGE_23_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_MESSAGE_15_DLC.VALUE=8
@@ -3588,7 +3588,7 @@
DRIVER.CAN.VAR.CAN_3_MESSAGE_26_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_18_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_2_ID.VALUE=2
-DRIVER.CAN.VAR.CAN_1_MESSAGE_6_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_6_INT_LEVEL.VALUE=0x00000040
DRIVER.CAN.VAR.CAN_3_NOMINAL_BIT_TIME.VALUE=9
DRIVER.CAN.VAR.CAN_2_MESSAGE_20_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_12_DLC.VALUE=8
@@ -3767,7 +3767,7 @@
DRIVER.CAN.VAR.CAN_2_MESSAGE_54_ID.VALUE=54
DRIVER.CAN.VAR.CAN_2_MESSAGE_46_ID.VALUE=46
DRIVER.CAN.VAR.CAN_2_MESSAGE_38_ID.VALUE=38
-DRIVER.CAN.VAR.CAN_1_MESSAGE_11_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_11_INT_LEVEL.VALUE=0x00000800
DRIVER.CAN.VAR.CAN_2_NOMINAL_BIT_TIME.VALUE=9
DRIVER.CAN.VAR.CAN_1_MESSAGE_50_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_MESSAGE_42_DLC.VALUE=8
@@ -3952,7 +3952,7 @@
DRIVER.CAN.VAR.CAN_1_MESSAGE_30_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_22_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_14_RTR.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_4_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_4_INT_LEVEL.VALUE=0x00000010
DRIVER.CAN.VAR.CAN_3_MESSAGE_11_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_MESSAGE_3_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_SAMPLE_POINT_REFERENCE.VALUE=75
@@ -4114,7 +4114,7 @@
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_9_INT_LEVEL.VALUE=0x00000000
+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
DRIVER.CAN.VAR.CAN_2_MESSAGE_32_EOB.VALUE=0x00000000
@@ -4318,7 +4318,7 @@
DRIVER.CAN.VAR.CAN_1_MESSAGE_25_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_22_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_17_RTR.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_14_INT_LEVEL.VALUE=0x00004000
DRIVER.CAN.VAR.CAN_3_MESSAGE_30_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_3_MESSAGE_22_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_3_MESSAGE_14_DLC.VALUE=8
@@ -4358,7 +4358,7 @@
DRIVER.CAN.VAR.CAN_1_MESSAGE_33_ID.VALUE=33
DRIVER.CAN.VAR.CAN_1_MESSAGE_25_ID.VALUE=25
DRIVER.CAN.VAR.CAN_1_MESSAGE_17_ID.VALUE=17
-DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_2_INT_LEVEL.VALUE=0x00000004
DRIVER.CAN.VAR.CAN_3_MESSAGE_2_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_50_EOB.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_2_MESSAGE_50_DIR.VALUE=0x20000000
@@ -4511,7 +4511,7 @@
DRIVER.CAN.VAR.CAN_3_MESSAGE_19_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_11_ID.VALUE=11
DRIVER.CAN.VAR.CAN_3_MESSAGE_10_RTR.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_7_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_7_INT_LEVEL.VALUE=0x00000080
DRIVER.CAN.VAR.CAN_1_MESSAGE_3_ID.VALUE=0x4
DRIVER.CAN.VAR.CAN_1_MESSAGE_2_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_64_DLC.VALUE=8
@@ -4760,7 +4760,7 @@
DRIVER.CAN.VAR.CAN_1_MESSAGE_47_ID.VALUE=47
DRIVER.CAN.VAR.CAN_1_MESSAGE_39_ID.VALUE=39
DRIVER.CAN.VAR.CAN_1_MESSAGE_20_INT_LEVEL.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_12_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_12_INT_LEVEL.VALUE=0x00001000
DRIVER.CAN.VAR.CAN_3_MESSAGE_5_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_61_EOB.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_2_MESSAGE_61_DIR.VALUE=0x20000000
@@ -4970,7 +4970,7 @@
DRIVER.CAN.VAR.CAN_3_MESSAGE_17_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_1_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_58_ID.VALUE=58
-DRIVER.CAN.VAR.CAN_1_MESSAGE_5_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_5_INT_LEVEL.VALUE=0x00000020
DRIVER.CAN.VAR.CAN_2_MESSAGE_63_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_55_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_47_DLC.VALUE=8
@@ -5177,7 +5177,7 @@
DRIVER.CAN.VAR.CAN_3_MESSAGE_23_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_15_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_MESSAGE_4_INT_LEVEL.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_10_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_10_INT_LEVEL.VALUE=0x00000400
DRIVER.CAN.VAR.CAN_1_MESSAGE_7_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_3_SJW.VALUE=2
DRIVER.CAN.VAR.CAN_2_MESSAGE_1_DLC.VALUE=8
@@ -5341,7 +5341,7 @@
DRIVER.CAN.VAR.CAN_3_MESSAGE_15_INT_LEVEL.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_57_RTR.VALUE=0x00000000
DRIVER.CAN.VAR.CAN_1_MESSAGE_49_RTR.VALUE=0x00000000
-DRIVER.CAN.VAR.CAN_1_MESSAGE_3_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_3_INT_LEVEL.VALUE=0x00000008
DRIVER.CAN.VAR.CAN_3_MESSAGE_62_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_3_MESSAGE_54_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_3_MESSAGE_46_DLC.VALUE=8
@@ -5474,7 +5474,7 @@
DRIVER.CAN.VAR.CAN_2_MESSAGE_20_ID.VALUE=20
DRIVER.CAN.VAR.CAN_2_MESSAGE_12_ID.VALUE=12
DRIVER.CAN.VAR.CAN_2_MESSAGE_7_ID.VALUE=7
-DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_LEVEL.VALUE=0x00000000
+DRIVER.CAN.VAR.CAN_1_MESSAGE_8_INT_LEVEL.VALUE=0x00000100
DRIVER.CAN.VAR.CAN_1_MESSAGE_21_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_1_MESSAGE_13_DLC.VALUE=8
DRIVER.CAN.VAR.CAN_2_MESSAGE_59_EOB.VALUE=0x00000000
Index: firmware/HD.hcg
===================================================================
diff -u -r40bcef6aa65af6c93ce937c6c4aa2de13e8a78d3 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/HD.hcg (.../HD.hcg) (revision 40bcef6aa65af6c93ce937c6c4aa2de13e8a78d3)
+++ firmware/HD.hcg (.../HD.hcg) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -253,7 +253,9 @@
spi.h
-
+
+ spi.c
+
reg_can.h
@@ -549,7 +551,7 @@
include\spi.h
-
+ source\spi.c
Index: firmware/include/can.h
===================================================================
diff -u -r31f710004436c030e787c895980457e08577702d -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/include/can.h (.../can.h) (revision 31f710004436c030e787c895980457e08577702d)
+++ firmware/include/can.h (.../can.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -641,6 +641,20 @@
#define CAN1_TEST_CONFIGVALUE 0x00000080U
#define CAN1_ABOTR_CONFIGVALUE ((uint32)(1033350U))
#define CAN1_INTMUX0_CONFIGVALUE ((uint32)0x00000000U \
+ | (uint32)0x00000002U \
+ | (uint32)0x00000004U \
+ | (uint32)0x00000008U \
+ | (uint32)0x00000010U \
+ | (uint32)0x00000020U \
+ | (uint32)0x00000040U \
+ | (uint32)0x00000080U \
+ | (uint32)0x00000100U \
+ | (uint32)0x00000200U \
+ | (uint32)0x00000400U \
+ | (uint32)0x00000800U \
+ | (uint32)0x00001000U \
+ | (uint32)0x00002000U \
+ | (uint32)0x00004000U \
| (uint32)0x00000000U \
| (uint32)0x00000000U \
| (uint32)0x00000000U \
@@ -657,20 +671,6 @@
| (uint32)0x00000000U \
| (uint32)0x00000000U \
| (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
- | (uint32)0x00000000U \
| (uint32)0x00000000U)
#define CAN1_INTMUX1_CONFIGVALUE ((uint32)0x00000000U \
Index: firmware/include/sys_core.h
===================================================================
diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/include/sys_core.h (.../sys_core.h) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab)
+++ firmware/include/sys_core.h (.../sys_core.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -72,7 +72,7 @@
*
* @note: Use this macro for SVC Mode Stack length (in bytes)
*/
-#define SVC_STACK_LENGTH 0x00000100U
+#define SVC_STACK_LENGTH 0x00000400U
/** @def FIQ_STACK_LENGTH
* @brief FIQ Mode Stack length (in bytes)
@@ -81,7 +81,7 @@
*
* @note: Use this macro for FIQ Mode Stack length (in bytes)
*/
-#define FIQ_STACK_LENGTH 0x00000100U
+#define FIQ_STACK_LENGTH 0x00001000U
/** @def IRQ_STACK_LENGTH
* @brief IRQ Mode Stack length (in bytes)
@@ -90,7 +90,7 @@
*
* @note: Use this macro for IRQ Mode Stack length (in bytes)
*/
-#define IRQ_STACK_LENGTH 0x00000100U
+#define IRQ_STACK_LENGTH 0x00001000U
/** @def ABORT_STACK_LENGTH
* @brief ABORT Mode Stack length (in bytes)
@@ -99,7 +99,7 @@
*
* @note: Use this macro for ABORT Mode Stack length (in bytes)
*/
-#define ABORT_STACK_LENGTH 0x00000100U
+#define ABORT_STACK_LENGTH 0x00000200U
/** @def UNDEF_STACK_LENGTH
* @brief UNDEF Mode Stack length (in bytes)
@@ -108,7 +108,7 @@
*
* @note: Use this macro for UNDEF Mode Stack length (in bytes)
*/
-#define UNDEF_STACK_LENGTH 0x00000100U
+#define UNDEF_STACK_LENGTH 0x00000200U
/* System Core Interface Functions */
Index: firmware/include/sys_vim.h
===================================================================
diff -u -rcb5c7321fae3036d7a3641ae49097b4b361270f5 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/include/sys_vim.h (.../sys_vim.h) (revision cb5c7321fae3036d7a3641ae49097b4b361270f5)
+++ firmware/include/sys_vim.h (.../sys_vim.h) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -96,6 +96,7 @@
extern void linHighLevelInterrupt(void);
extern void adc1Group1Interrupt(void);
extern void can1HighLevelInterrupt(void);
+extern void can1LowLevelInterrupt(void);
extern void dmaBTCAInterrupt(void);
extern void sciHighLevelInterrupt(void);
@@ -291,7 +292,7 @@
| (uint32)((uint32)0U << 26U)\
| (uint32)((uint32)0U << 27U)\
| (uint32)((uint32)0U << 28U)\
- | (uint32)((uint32)0U << 29U)\
+ | (uint32)((uint32)1U << 29U)\
| (uint32)((uint32)0U << 30U)\
| (uint32)((uint32)0U << 31U))
Index: firmware/source/can.c
===================================================================
diff -u -r31f710004436c030e787c895980457e08577702d -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/source/can.c (.../can.c) (revision 31f710004436c030e787c895980457e08577702d)
+++ firmware/source/can.c (.../can.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -114,6 +114,20 @@
/** - Assign interrupt level for messages */
canREG1->INTMUXx[0U] = (uint32)0x00000000U
+ | (uint32)0x00000002U
+ | (uint32)0x00000004U
+ | (uint32)0x00000008U
+ | (uint32)0x00000010U
+ | (uint32)0x00000020U
+ | (uint32)0x00000040U
+ | (uint32)0x00000080U
+ | (uint32)0x00000100U
+ | (uint32)0x00000200U
+ | (uint32)0x00000400U
+ | (uint32)0x00000800U
+ | (uint32)0x00001000U
+ | (uint32)0x00002000U
+ | (uint32)0x00004000U
| (uint32)0x00000000U
| (uint32)0x00000000U
| (uint32)0x00000000U
@@ -130,20 +144,6 @@
| (uint32)0x00000000U
| (uint32)0x00000000U
| (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
- | (uint32)0x00000000U
| (uint32)0x00000000U;
canREG1->INTMUXx[1U] = (uint32)0x00000000U
@@ -1639,8 +1639,49 @@
}
+/* USER CODE BEGIN (43) */
+/* USER CODE END */
+/** @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 */
+/* Requirements : HL_SR221, HL_SR223 */
+void can1LowLevelInterrupt(void)
+{
+ uint32 messageBox = canREG1->INT >> 16U;
+/* USER CODE BEGIN (44) */
+/* USER CODE END */
+ /** - Setup IF1 for clear pending interrupt flag */
+ /*SAFETYMCUSW 28 D MR:NA "Potentially infinite loop found - Hardware Status check for execution sequence" */
+ while ((canREG1->IF1STAT & 0x80U) ==0x80U)
+ {
+ } /* Wait */
+ canREG1->IF1CMD = 0x08U;
+ /*SAFETYMCUSW 93 S MR: 6.1,6.2,10.1,10.2,10.3,10.4 "LDRA Tool issue" */
+ canREG1->IF1NO = (uint8) messageBox;
+
+ /*SAFETYMCUSW 28 D MR:NA "Potentially infinite loop found - Hardware Status check for execution sequence" */
+ while ((canREG1->IF1STAT & 0x80U) ==0x80U)
+ {
+ } /* Wait */
+ canREG1->IF1CMD = 0x87U;
+
+ canMessageNotification(canREG1, messageBox);
+
+/* USER CODE BEGIN (45) */
+/* USER CODE END */
+
+}
+
+
+
+
+
Index: firmware/source/sys_core.asm
===================================================================
diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/source/sys_core.asm (.../sys_core.asm) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab)
+++ firmware/source/sys_core.asm (.../sys_core.asm) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -161,11 +161,11 @@
bx lr
userSp .word 0x08000000+0x00001000
-svcSp .word 0x08000000+0x00001000+0x00000100
-fiqSp .word 0x08000000+0x00001000+0x00000100+0x00000100
-irqSp .word 0x08000000+0x00001000+0x00000100+0x00000100+0x00000100
-abortSp .word 0x08000000+0x00001000+0x00000100+0x00000100+0x00000100+0x00000100
-undefSp .word 0x08000000+0x00001000+0x00000100+0x00000100+0x00000100+0x00000100+0x00000100
+svcSp .word 0x08000000+0x00001000+0x00000400
+fiqSp .word 0x08000000+0x00001000+0x00000400+0x00001000
+irqSp .word 0x08000000+0x00001000+0x00000400+0x00001000+0x00001000
+abortSp .word 0x08000000+0x00001000+0x00000400+0x00001000+0x00001000+0x00000200
+undefSp .word 0x08000000+0x00001000+0x00000400+0x00001000+0x00001000+0x00000200+0x00000200
.endasmfunc
Index: firmware/source/sys_link.cmd
===================================================================
diff -u -reff7b1575f008f81b29ef906f6346fac6012d3ab -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/source/sys_link.cmd (.../sys_link.cmd) (revision eff7b1575f008f81b29ef906f6346fac6012d3ab)
+++ firmware/source/sys_link.cmd (.../sys_link.cmd) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -56,8 +56,8 @@
{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x0013FFE0
- STACKS (RW) : origin=0x08000000 length=0x00001500
- RAM (RW) : origin=0x08001500 length=0x0002eb00
+ STACKS (RW) : origin=0x08000000 length=0x00003800
+ RAM (RW) : origin=0x08003800 length=0x0002c800
/* USER CODE BEGIN (2) */
/* USER CODE END */
Index: firmware/source/sys_main.c
===================================================================
diff -u -r2bb447181c2519690441d81f83563d17e0882ef2 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/source/sys_main.c (.../sys_main.c) (revision 2bb447181c2519690441d81f83563d17e0882ef2)
+++ firmware/source/sys_main.c (.../sys_main.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -133,6 +133,7 @@
mibspiInit(); // re-purposing MIBSPI5 I/O/C pins as GPIO
etpwmInit(); // configure PWMs
canInit(); // CAN1 = CAN, re-purposing CAN2 and CAN3 Rx and Tx pins as GPIO
+ //canEnableloopback( canREG1, External_Lbk ); // TODO - debug code
sciInit(); // SCI1 used for PC serial interface, SCI2 used for FPGA serial interface
dmaEnable(); // enable DMA
}
Index: firmware/source/sys_vim.c
===================================================================
diff -u -rcb5c7321fae3036d7a3641ae49097b4b361270f5 -r6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1
--- firmware/source/sys_vim.c (.../sys_vim.c) (revision cb5c7321fae3036d7a3641ae49097b4b361270f5)
+++ firmware/source/sys_vim.c (.../sys_vim.c) (revision 6311eb9b65fdeec7a285d25e07f3932ac0fb6cf1)
@@ -98,7 +98,7 @@
&phantomInterrupt, /* Channel 26 */
&phantomInterrupt, /* Channel 27 */
&phantomInterrupt, /* Channel 28 */
- &phantomInterrupt, /* Channel 29 */
+ &can1LowLevelInterrupt, /* Channel 29 */
&phantomInterrupt, /* Channel 30 */
&phantomInterrupt, /* Channel 31 */
&phantomInterrupt, /* Channel 32 */
@@ -391,7 +391,7 @@
| (uint32)((uint32)0U << 26U)
| (uint32)((uint32)0U << 27U)
| (uint32)((uint32)0U << 28U)
- | (uint32)((uint32)0U << 29U)
+ | (uint32)((uint32)1U << 29U)
| (uint32)((uint32)0U << 30U)
| (uint32)((uint32)0U << 31U);