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); |