diff -r 80d493917205 -r a03a684cac89 rt/msr_module.c --- 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;