EasyCAT LAB - EtherCAT master simple example

Dependencies:   SOEM SPI_TFT_ILI9341 TFT_fonts

  • This repository contains a simple example for the EasyCAT LAB , a complete educational and experimental EtherCAT® system, composed of one master and two slaves.

Note

  • This example uses two LAB 2 slaves.

Note

  • In this example only two bytes of data are exchanged between the slaves and are also visualized on the TFT display.
Revision:
4:cbef7fa67d5f
Parent:
0:13be39911caf
--- a/config.h	Wed Oct 25 13:44:06 2023 +0000
+++ b/config.h	Wed Oct 25 14:42:52 2023 +0000
@@ -6,8 +6,8 @@
 
 //------------------------------------------------------------------------------
 
-#define LAB_2_1             1
-#define LAB_2_2             2
+#define LAB_1             1
+#define LAB_2             2
 
 #define SLAVE_NUM           2
 
@@ -22,13 +22,13 @@
 typedef struct __attribute__((__packed__))
 {
     uint8_t     Segments;
-}out_LAB_2_1t;
+}out_LAB_1t;
 
 typedef struct __attribute__((__packed__))
 {
     uint16_t    Potentiometer;              // in this example we don't use the    
     uint8_t     Buttons;                    // potentiometer but we have to 
-}in_LAB_2_1t;                               // declare it in the data structure
+}in_LAB_1t;                                 // declare it in the data structure
 
 
 //------------------------------------------------------------------------------
@@ -36,22 +36,22 @@
 typedef struct __attribute__((__packed__))
 {
     uint8_t     Segments;
-}out_LAB_2_2t;
+}out_LAB_2t;
 
 typedef struct __attribute__((__packed__))
 {
     uint16_t    Potentiometer;              // in this example we don't use the 
     uint8_t     Buttons;                    // potentiometer but we have to 
-}in_LAB_2_2t;                               // declare it in the data structure
+}in_LAB_2t;                                 // declare it in the data structure
 
 
 //------------------------------------------------------------------------------
 
-out_LAB_2_1t    *out_LAB_2_1;
-in_LAB_2_1t     *in_LAB_2_1;
+out_LAB_1t    *out_LAB_1;
+in_LAB_1t     *in_LAB_1;
 
-out_LAB_2_2t    *out_LAB_2_2;
-in_LAB_2_2t     *in_LAB_2_2;
+out_LAB_2t    *out_LAB_2;
+in_LAB_2t     *in_LAB_2;
 
 
 //------------------------------------------------------------------------------
@@ -62,11 +62,11 @@
 
 void MapLocalStructures (void)
 {
-    out_LAB_2_1 = (out_LAB_2_1t*)((char *)ec_slave[LAB_2_1].outputs - &IOmap[0] + &IOmapSafe[0]);
-    in_LAB_2_1 =  (in_LAB_2_1t*)((char *)ec_slave[LAB_2_1].inputs - &IOmap[0] + &IOmapSafe[0]);                
+    out_LAB_1 = (out_LAB_1t*)((char *)ec_slave[LAB_1].outputs - &IOmap[0] + &IOmapSafe[0]);
+    in_LAB_1 =  (in_LAB_1t*)((char *)ec_slave[LAB_1].inputs - &IOmap[0] + &IOmapSafe[0]);                
     
-    out_LAB_2_2 = (out_LAB_2_2t*)((char *)ec_slave[LAB_2_2].outputs - &IOmap[0] + &IOmapSafe[0]);
-    in_LAB_2_2 =  (in_LAB_2_2t*)((char *)ec_slave[LAB_2_2].inputs - &IOmap[0] + &IOmapSafe[0]);                
+    out_LAB_2 = (out_LAB_2t*)((char *)ec_slave[LAB_2].outputs - &IOmap[0] + &IOmapSafe[0]);
+    in_LAB_2 =  (in_LAB_2t*)((char *)ec_slave[LAB_2].inputs - &IOmap[0] + &IOmapSafe[0]);                
 }
 
 
@@ -79,10 +79,10 @@
    if (ec_slavecount != SLAVE_NUM)                          // check if the number of slaves matches what we expect
       return 0;                                             
                                                             
-   if (strcmp(ec_slave[LAB_2_1].name,"LAB_2"))              // verify slave by slave that the slave names are correct  
+   if (strcmp(ec_slave[LAB_1].name,"LAB_1"))              // verify slave by slave that the slave names are correct  
       return 0;
    
-   else if (strcmp(ec_slave[LAB_2_2].name,"LAB_2"))
+   else if (strcmp(ec_slave[LAB_2].name,"LAB_2"))
       return 0;
       
   return 1;