rt/msr_module.c
changeset 136 a03a684cac89
parent 135 80d493917205
child 137 3fb18812871a
--- a/rt/msr_module.c	Tue Mar 28 13:42:50 2006 +0000
+++ b/rt/msr_module.c	Tue Mar 28 15:45:19 2006 +0000
@@ -38,6 +38,7 @@
 #include "../include/ecrt.h"
 
 #define ASYNC
+//#define BLOCK1
 
 // Defines/Makros
 #define HZREDUCTION (MSR_ABTASTFREQUENZ / HZ)
@@ -52,30 +53,33 @@
 // EtherCAT
 ec_master_t *master = NULL;
 ec_domain_t *domain1 = NULL;
-ec_domain_t *domain2 = NULL;
 
 // Prozessdaten
+#ifdef BLOCK1
 void *r_ssi, *r_ssi_st;
-void *r_ssi2;
+#else
 void *r_inc;
-
-uint32_t k_angle;
+#endif
+
 uint32_t k_ssi_pos;
 uint32_t k_ssi_status;
+uint32_t k_angle;
 uint32_t k_preio;
 uint32_t k_postio;
 uint32_t k_finished;
 
+#ifdef BLOCK1
 ec_field_init_t domain1_fields[] = {
     {&r_ssi,    "1", "Beckhoff", "EL5001", "InputValue", 0},
     {&r_ssi_st, "1", "Beckhoff", "EL5001", "Status",     0},
     {}
 };
-
-ec_field_init_t domain2_fields[] = {
-    {&r_ssi2,  "1", "Beckhoff", "EL5001", "InputValue", 0},
+#else
+ec_field_init_t domain1_fields[] = {
+    {&r_inc,    "4", "Beckhoff", "EL5101", "InputValue", 0},
     {}
 };
+#endif
 
 /*****************************************************************************/
 
@@ -98,28 +102,33 @@
     // Empfangen
     ecrt_master_async_receive(master);
     ecrt_domain_process(domain1);
-    ecrt_domain_process(domain2);
 
     // Prozessdaten verarbeiten
+#ifdef BLOCK1
     k_ssi_pos = EC_READ_U32(r_ssi);
     k_ssi_status = EC_READ_U32(r_ssi_st);
+#else
+    k_angle = EC_READ_U16(r_inc);
+#endif
 
     // Senden
     ecrt_domain_queue(domain1);
-    ecrt_domain_queue(domain2);
     ecrt_master_async_send(master);
 #else
     // Senden und empfangen
     ecrt_domain_queue(domain1);
-    ecrt_domain_queue(domain2);
     ecrt_master_sync_io(master);
     ecrt_domain_process(domain1);
-    ecrt_domain_process(domain2);
 
     // Prozessdaten verarbeiten
+#ifdef BLOCK1
     k_ssi_pos = EC_READ_U32(r_ssi);
     k_ssi_status = EC_READ_U32(r_ssi_st);
-#endif
+#else
+    k_angle = EC_READ_U16(r_inc);
+#endif
+
+#endif // ASYNC
 
     k_postio = (uint32_t) (get_cycles() - offset) * 1e6 / cpu_khz;
 
@@ -195,11 +204,6 @@
         goto out_release_master;
     }
 
-    if (!(domain2 = ecrt_master_create_domain(master))) {
-        printk(KERN_ERR "Could not register domain!\n");
-        goto out_release_master;
-    }
-
     printk(KERN_INFO "Registering domain fields...\n");
 
     if (ecrt_domain_register_field_list(domain1, domain1_fields)) {
@@ -207,11 +211,6 @@
         goto out_release_master;
     }
 
-    if (ecrt_domain_register_field_list(domain2, domain2_fields)) {
-        printk(KERN_ERR "Failed to register domain fields.\n");
-        goto out_release_master;
-    }
-
     printk(KERN_INFO "Activating master...\n");
 
     if (ecrt_master_activate(master)) {
@@ -219,6 +218,8 @@
         goto out_release_master;
     }
 
+    ecrt_master_print(master);
+
     //ecrt_master_debug(master, 2);
     if (ecrt_master_fetch_sdo_lists(master)) {
         printk(KERN_ERR "Failed to fetch SDO lists!\n");
@@ -228,7 +229,7 @@
 
     ecrt_master_print(master);
 
-#if 1
+#ifdef BLOCK1
     if (ecrt_master_sdo_read(master, "1", 0x100A, 1, &version)) {
         printk(KERN_ERR "Could not read SSI version!\n");
         goto out_deactivate;