/* send an error and recover inmediately every 12 cycles */
if(SlaveMap13 % 12 == 0)
{
- EMCY_setError(&TestSlave_Data, 0x4200, 0x08);
+ EMCY_setError(&TestSlave_Data, 0x4200, 0x08, 0x0000);
EMCY_errorRecovered(&TestSlave_Data, 0x4200);
}
}
/** Sets a new error with code errCode. Also sets corresponding bits in Error register (1001h)
*/
-UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask);
+UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask, UNS16 addInfo);
/** Indicates it has recovered from error errCode. Also clears corresponding bits in Error register (1001h)
*/
** @param errRegister Bits of Error register (1001h) to be set.
** @return 1 if error, 0 if successful
*/
-UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask)
+UNS8 EMCY_setError(CO_Data* d, UNS16 errCode, UNS8 errRegMask, UNS16 addInfo)
{
UNS8 index;
UNS8 errRegister_tmp;
}
d->error_data[index].errCode = errCode;
- d->error_data[index].errRegMask = 1;
+ d->error_data[index].errRegMask = errRegMask;
d->error_data[index].active = 1;
/* set the new state in the error state machine */
/* set Pre-defined Error Field (1003h) */
for (index = d->error_history_size - 1; index > 0; --index)
*(d->error_first_element + index) = *(d->error_first_element + index - 1);
- *(d->error_first_element) = (UNS32)errCode;
+ *(d->error_first_element) = errCode | ((UNS32)addInfo << 16);
if(*d->error_number < d->error_history_size) ++(*d->error_number);
/* send EMCY message */