EtherCAT slave that reads 3 Xsens IMU's connected to a Xbus Master

Dependencies:   MODSERIAL mbed KL25Z_ClockControl

Fork of EtherCAT by First Last

Revision:
31:d0532aa7f631
Parent:
23:2b2cdba08259
Child:
32:1f6a705cd794
--- a/EtherCAT/objectlist.h	Tue Mar 10 09:43:41 2015 +0000
+++ b/EtherCAT/objectlist.h	Tue Mar 10 11:30:44 2015 +0000
@@ -198,44 +198,44 @@
 };
 const _objd SDO1A00[]=                                              //TxPDO mapping (objects from slave to master)
 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
-  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000110},       //First Object, pointing to object  6000:01
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000210},       //Second Object, pointing to object 6000:02      //..
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000310},
-  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000410},
-  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000510},
-  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000610},
-  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000710},
-  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000810},
-  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000910},
-  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000A10}
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000120},       //First Object, pointing to object  6000:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000220},       //Second Object, pointing to object 6000:02      //..
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000320},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000420},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000520},
+  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000620},
+  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000720},
+  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000820},
+  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000920},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60000A20}
 };
 
 const _objd SDO1A01[]=                                              //TxPDO mapping (objects from slave to master)
 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
-  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010110},       //First Object, pointing to object  6001:01
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010210},       //Second Object, pointing to object 6001:02      //..
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010310},
-  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010410},
-  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010510},
-  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010610},
-  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010710},
-  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010810},
-  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010910},
-  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010A10}
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010120},       //First Object, pointing to object  6001:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010220},       //Second Object, pointing to object 6001:02      //..
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010320},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010420},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010520},
+  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010620},
+  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010720},
+  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010820},
+  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010920},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60010A20}
 };
 
 const _objd SDO1A02[]=                                              //TxPDO mapping (objects from slave to master)
 {{0x00,DTYPE_UNSIGNED8,8,ATYPE_R,&acNameNOE[0],0x0A},               //Number of TxPDOs
-  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020110},       //First Object, pointing to object  6002:01
-  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020210},       //Second Object, pointing to object 6002:02      //..
-  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020310},
-  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020410},
-  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020510},
-  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020610},
-  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020710},
-  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020810},
-  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020910},
-  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020A10}
+  {0x01,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020120},       //First Object, pointing to object  6002:01
+  {0x02,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020220},       //Second Object, pointing to object 6002:02      //..
+  {0x03,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020320},
+  {0x04,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020420},
+  {0x05,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020520},
+  {0x06,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020620},
+  {0x07,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020720},
+  {0x08,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020820},
+  {0x09,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020920},
+  {0x0A,DTYPE_UNSIGNED32,32,ATYPE_R,&acNameMO[0],0x60020A20}
 };
 
 const _objd SDO1A03[]=                                              //TxPDO mapping (objects from slave to master)
@@ -268,44 +268,44 @@
 
 const _objd SDO6000[]=                                                      //TxPDO module
 {{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
-  {0x01,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.first.acc[0])},//6000:01 is acc X
-  {0x02,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.first.acc[1])},//6000:02 is acc Y
-  {0x03,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.first.acc[2])},//6000:03 is acc Z
-  {0x04,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.first.gyr[0])},//6000:04 is gyr X
-  {0x05,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.first.gyr[1])},//6000:05 is gyr Y
-  {0x06,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.first.gyr[2])},//6000:06 is gyr Z
-  {0x07,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.first.mag[0])},//6000:07 is mag X
-  {0x08,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.first.mag[1])},//6000:08 is mag Y
-  {0x09,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.first.mag[2])},//6000:09 is mag Z
-  {0x0A,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.first.temp)}   //6000:0A is imu temperature
+  {0x01,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.first.acc[0])},//6000:01 is acc X
+  {0x02,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.first.acc[1])},//6000:02 is acc Y
+  {0x03,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.first.acc[2])},//6000:03 is acc Z
+  {0x04,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.first.gyr[0])},//6000:04 is gyr X
+  {0x05,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_05[0],0,&(Rb.first.gyr[1])},//6000:05 is gyr Y
+  {0x06,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_06[0],0,&(Rb.first.gyr[2])},//6000:06 is gyr Z
+  {0x07,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_07[0],0,&(Rb.first.mag[0])},//6000:07 is mag X
+  {0x08,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_08[0],0,&(Rb.first.mag[1])},//6000:08 is mag Y
+  {0x09,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_09[0],0,&(Rb.first.mag[2])},//6000:09 is mag Z
+  {0x0A,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_0A[0],0,&(Rb.first.temp)}   //6000:0A is imu temperature
 };
 
 const _objd SDO6001[]=                                                      //TxPDO module
 {{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
-  {0x01,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.second.acc[0])},//6001:01 is acc X
-  {0x02,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.second.acc[1])},//6001:02 is acc Y
-  {0x03,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.second.acc[2])},//6001:03 is acc Z
-  {0x04,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.second.gyr[0])},//6001:04 is gyr X
-  {0x05,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.second.gyr[1])},//6001:05 is gyr Y
-  {0x06,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.second.gyr[2])},//6001:06 is gyr Z
-  {0x07,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.second.mag[0])},//6001:07 is mag X
-  {0x08,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.second.mag[1])},//6001:08 is mag Y
-  {0x09,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.second.mag[2])},//6001:09 is mag Z
-  {0x0A,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.second.temp)}   //6001:0A is imu temperature
+  {0x01,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.second.acc[0])},//6001:01 is acc X
+  {0x02,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.second.acc[1])},//6001:02 is acc Y
+  {0x03,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.second.acc[2])},//6001:03 is acc Z
+  {0x04,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.second.gyr[0])},//6001:04 is gyr X
+  {0x05,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_05[0],0,&(Rb.second.gyr[1])},//6001:05 is gyr Y
+  {0x06,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_06[0],0,&(Rb.second.gyr[2])},//6001:06 is gyr Z
+  {0x07,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_07[0],0,&(Rb.second.mag[0])},//6001:07 is mag X
+  {0x08,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_08[0],0,&(Rb.second.mag[1])},//6001:08 is mag Y
+  {0x09,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_09[0],0,&(Rb.second.mag[2])},//6001:09 is mag Z
+  {0x0A,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_0A[0],0,&(Rb.second.temp)}   //6001:0A is imu temperature
 };
 
 const _objd SDO6002[]=                                                      //TxPDO module
 {{0x00,DTYPE_UNSIGNED8  ,8,ATYPE_R,&acNameNOE[0],0x0A},                     //Number of elements
-  {0x01,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_01[0],0,&(Rb.third.acc[0])},//6002:01 is acc X
-  {0x02,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_02[0],0,&(Rb.third.acc[1])},//6002:02 is acc Y
-  {0x03,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_03[0],0,&(Rb.third.acc[2])},//6002:03 is acc Z
-  {0x04,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_04[0],0,&(Rb.third.gyr[0])},//6002:04 is gyr X
-  {0x05,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_05[0],0,&(Rb.third.gyr[1])},//6002:05 is gyr Y
-  {0x06,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_06[0],0,&(Rb.third.gyr[2])},//6002:06 is gyr Z
-  {0x07,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_07[0],0,&(Rb.third.mag[0])},//6002:07 is mag X
-  {0x08,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_08[0],0,&(Rb.third.mag[1])},//6002:08 is mag Y
-  {0x09,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_09[0],0,&(Rb.third.mag[2])},//6002:09 is mag Z
-  {0x0A,DTYPE_UNSIGNED16  ,16,ATYPE_R,&acName6000_0A[0],0,&(Rb.third.temp)}   //6002:0A is imu temperature
+  {0x01,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_01[0],0,&(Rb.third.acc[0])},//6002:01 is acc X
+  {0x02,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_02[0],0,&(Rb.third.acc[1])},//6002:02 is acc Y
+  {0x03,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_03[0],0,&(Rb.third.acc[2])},//6002:03 is acc Z
+  {0x04,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_04[0],0,&(Rb.third.gyr[0])},//6002:04 is gyr X
+  {0x05,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_05[0],0,&(Rb.third.gyr[1])},//6002:05 is gyr Y
+  {0x06,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_06[0],0,&(Rb.third.gyr[2])},//6002:06 is gyr Z
+  {0x07,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_07[0],0,&(Rb.third.mag[0])},//6002:07 is mag X
+  {0x08,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_08[0],0,&(Rb.third.mag[1])},//6002:08 is mag Y
+  {0x09,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_09[0],0,&(Rb.third.mag[2])},//6002:09 is mag Z
+  {0x0A,DTYPE_REAL32  ,32,ATYPE_R,&acName6000_0A[0],0,&(Rb.third.temp)}   //6002:0A is imu temperature
 };
 
 const _objd SDO6003[]=                                                      //TxPDO module