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);