rt/msr_module.c
changeset 61 cd014255f94f
parent 59 c8bd4fe3b38c
child 62 0fb2a690f4d0
equal deleted inserted replaced
60:2d2b120ba734 61:cd014255f94f
    55 ec_slave_t *s_in1, *s_out1, *s_out2, *s_out3;
    55 ec_slave_t *s_in1, *s_out1, *s_out2, *s_out3;
    56 
    56 
    57 double value;
    57 double value;
    58 int dig1;
    58 int dig1;
    59 
    59 
    60 /*****************************************************************************/
    60 ec_slave_init_t slaves[] = {
    61 
    61     {&s_in1, 1, "Beckhoff", "EL3102", 0},
    62 static int register_slaves(void)
    62     {&s_out1, 8, "Beckhoff", "EL2004", 0},
    63 {
    63     {&s_out2, 9, "Beckhoff", "EL2004", 0},
    64     s_in1 = EtherCAT_rt_register_slave(master, 1, "Beckhoff", "EL3102", 0);
    64     {&s_out3, 10, "Beckhoff", "EL2004", 0}
    65     s_out1 = EtherCAT_rt_register_slave(master, 8, "Beckhoff", "EL2004", 0);
    65 };
    66     s_out2 = EtherCAT_rt_register_slave(master, 9, "Beckhoff", "EL2004", 0);
    66 
    67     s_out3 = EtherCAT_rt_register_slave(master, 10, "Beckhoff", "EL2004", 0);
    67 #define SLAVE_COUNT (sizeof(slaves) / sizeof(ec_slave_init_t))
    68 
       
    69     return !s_in1 || !s_out1 || !s_out2 || !s_out3;
       
    70 }
       
    71 
    68 
    72 /******************************************************************************
    69 /******************************************************************************
    73  *
    70  *
    74  * Function: msr_controller_run()
    71  * Function: msr_controller_run()
    75  *
    72  *
   192     if ((master = EtherCAT_rt_request_master(0)) == NULL) {
   189     if ((master = EtherCAT_rt_request_master(0)) == NULL) {
   193         printk(KERN_ERR "Error requesting master 0!\n");
   190         printk(KERN_ERR "Error requesting master 0!\n");
   194         goto out_msr_cleanup;
   191         goto out_msr_cleanup;
   195     }
   192     }
   196 
   193 
   197     printk("Registering EtherCAT slaves.\n");
   194     if (EtherCAT_rt_register_slave_list(master, slaves, SLAVE_COUNT)) {
   198     if (register_slaves()) {
   195         printk(KERN_ERR "EtherCAT: Could not register slaves!\n");
   199         printk(KERN_ERR "EtherCAT: Could not init slaves!\n");
       
   200         goto out_release_master;
   196         goto out_release_master;
   201     }
   197     }
   202 
   198 
   203     printk("Activating all EtherCAT slaves.\n");
       
   204 
       
   205     if (EtherCAT_rt_activate_slaves(master) < 0) {
   199     if (EtherCAT_rt_activate_slaves(master) < 0) {
   206       printk(KERN_ERR "EtherCAT: Could not activate slaves!\n");
   200         printk(KERN_ERR "EtherCAT: Could not activate slaves!\n");
   207       goto out_release_master;
   201         goto out_release_master;
   208     }
   202     }
   209 
   203 
   210     do_gettimeofday(&process_time);
   204     do_gettimeofday(&process_time);
   211     msr_time_increment.tv_sec=0;
   205     msr_time_increment.tv_sec = 0;
   212     msr_time_increment.tv_usec=(unsigned int)(1000000/MSR_ABTASTFREQUENZ);
   206     msr_time_increment.tv_usec = (unsigned int) (1000000 / MSR_ABTASTFREQUENZ);
   213 
   207 
   214     ipipe_init_attr (&attr);
   208     ipipe_init_attr(&attr);
   215     attr.name     = "IPIPE-MSR-MODULE";
   209     attr.name = "IPIPE-MSR-MODULE";
   216     attr.priority = IPIPE_ROOT_PRIO + 1;
   210     attr.priority = IPIPE_ROOT_PRIO + 1;
   217     attr.entry    = &domain_entry;
   211     attr.entry = &domain_entry;
   218     ipipe_register_domain(&this_domain,&attr);
   212     ipipe_register_domain(&this_domain, &attr);
   219 
   213 
   220     return 0;
   214     return 0;
   221 
   215 
   222  out_release_master:
   216  out_release_master:
   223     EtherCAT_rt_release_master(master);
   217     EtherCAT_rt_release_master(master);