# HG changeset patch # User luis # Date 1191242581 -7200 # Node ID 03f2b8b8cb0b2297b188765429adec5eafc9c23f # Parent 25ff2fadff89e7f4dd48f98edcafca0af8656aba Solved a small bug in emcy.c (errRegMask was always '1' in EMCY_setError. EMCY_setError has a new parameter, addInfo, a 16-bit value that will be copied to 16 most significat bits in 1003h (but it is not sent in EMCY message). diff -r 25ff2fadff89 -r 03f2b8b8cb0b examples/TestMasterSlave/Slave.c --- a/examples/TestMasterSlave/Slave.c Sun Sep 30 22:41:12 2007 +0200 +++ b/examples/TestMasterSlave/Slave.c Mon Oct 01 14:43:01 2007 +0200 @@ -90,7 +90,7 @@ /* 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); } } diff -r 25ff2fadff89 -r 03f2b8b8cb0b include/emcy.h --- a/include/emcy.h Sun Sep 30 22:41:12 2007 +0200 +++ b/include/emcy.h Mon Oct 01 14:43:01 2007 +0200 @@ -61,7 +61,7 @@ /** 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) */ diff -r 25ff2fadff89 -r 03f2b8b8cb0b src/emcy.c --- a/src/emcy.c Sun Sep 30 22:41:12 2007 +0200 +++ b/src/emcy.c Mon Oct 01 14:43:01 2007 +0200 @@ -123,7 +123,7 @@ ** @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; @@ -151,7 +151,7 @@ } 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 */ @@ -165,7 +165,7 @@ /* 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 */