EasyCAT LAB - EtherCAT master very simple example

Dependencies:   SOEM

  • This repository contains a very basic 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, to keep things as simple as possible, only two bytes of data are exchanged between the slaves and the TFT display is not used .

Files at this revision

API Documentation at this revision

Comitter:
EasyCAT
Date:
Wed Oct 25 15:38:52 2023 +0000
Parent:
1:971b4897a4c5
Commit message:
Bug fix

Changed in this revision

config.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
--- a/config.h	Fri May 07 10:19:40 2021 +0000
+++ b/config.h	Wed Oct 25 15:38: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;
--- a/main.cpp	Fri May 07 10:19:40 2021 +0000
+++ b/main.cpp	Wed Oct 25 15:38:52 2023 +0000
@@ -254,11 +254,11 @@
                                                                     //----- slaves  data management -----------            
                                                                 
                                                                                                                                                                                       
-        out_LAB_2_1->Segments = in_LAB_2_2->Buttons;                // send to the slave LAB_2_1 the buttons status
+        out_LAB_1->Segments = in_LAB_2->Buttons;                    // send to the slave LAB_2_1 the buttons status
                                                                     // from the slave LAB_2_2    
                                                                     
                                                                                   
-        out_LAB_2_2->Segments = in_LAB_2_1->Buttons;                // send to the slave LAB_2_2 the buttons status
+        out_LAB_2->Segments = in_LAB_1->Buttons;                    // send to the slave LAB_2_2 the buttons status
                                                                     // from the slave LAB_2_1   
                                                                     
                                                                     
--- a/mbed-os.lib	Fri May 07 10:19:40 2021 +0000
+++ b/mbed-os.lib	Wed Oct 25 15:38:52 2023 +0000
@@ -1,1 +1,1 @@
-https://github.com/ARMmbed/mbed-os/#b1796dedeb8accde1cbaecf136fab96895e23d81
+https://github.com/ARMmbed/mbed-os/#17dc3dc2e6e2817a8bd3df62f38583319f0e4fed
\ No newline at end of file