Hi all!
At random time (5-200 ms) after board startup esmREG->SR1 [2] become 0x80 w/o call to dabort interrupt. This occurs only once. dabort called during selfcheck procedure at startup, but later not called. How I can intercept this error?
I suspect this error is related to interrupt handling. Maybe related to CAN interrupts.
This is my code
int main (void) { int i; platform_init (); io_init (); LOG_INFO (SYS, "ulDAbortCount=%u", ulDAbortCount); LOG_INFO (SYS, "esmREG->SR1 [0]=0x%x esmREG->SR1 [1]=0x%x esmREG->SR1 [2]=0x%x", esmREG->SR1 [0], esmREG->SR1 [1], esmREG->SR1 [2]);
for (i=0;i<500;i++) { delay(1); if (esmREG->SR1 [2] != 0) { LOG_ERROR (SYS, "Flash error esmREG->SR1 [0]=0x%x esmREG->SR1 [1]=0x%x esmREG->SR1 [2]=0x%x", esmREG->SR1 [0], esmREG->SR1 [1], esmREG->SR1 [2]);
esmREG->SR1 [0] = 0xFFFFFFFF; esmREG->SR1 [1] = 0xFFFFFFFF; esmREG->SR1 [2] = 0xFFFFFFFF; } wd_reset(); } LOG_INFO (SYS, "ulDAbortCount=%u", ulDAbortCount); main_loop (); return 0; }
Body Control (Head) Version 5.1.0 (3) 24/11/2016 14:01:42 FlashId=0x8B6230B5 Serial=0xD9F70F0B0013 MCU=TMS570LS0914APGEQQ1 0.000:I [SYS] Digital Watchdog config update. Reset time=399. Reset period = 3905 0.000:I [CAN] Set CAN1 speed to 500, loopback mode off 0.000:I [CAN] Set CAN2 speed to 500, loopback mode off 0.000:I [CAN] Set CAN3 speed to 500, loopback mode off 0.002:W [SYS] Valid NVRAM block not found! 0.002:I [J1939] Set J1939 address to 0x1E 0.003:I [SYS] Init completed in 3281 us 0.005:I [SYS] ulDAbortCount=0 0.005:E [SYS] esmREG->SR1 [0]=0x0 esmREG->SR1 [1]=0x0 esmREG->SR1 [2]=0x0 0.050:E [SYS] Flash error esmREG->SR1 [0]=0x40 esmREG->SR1 [1]=0x0 esmREG->SR1 [2]=0x80 0.505:I [SYS] ulDAbortCount=0 0.505:N [SYS] Main Task started