18 /*****************************************************************************/ |
18 /*****************************************************************************/ |
19 |
19 |
20 ec_master_t *master = NULL; |
20 ec_master_t *master = NULL; |
21 ec_slave_t *s_in, *s_out; |
21 ec_slave_t *s_in, *s_out; |
22 |
22 |
23 int value; |
|
24 int dig1; |
|
25 |
|
26 struct timer_list timer; |
23 struct timer_list timer; |
27 unsigned long last_start_jiffies; |
|
28 |
24 |
29 ec_slave_init_t slaves[] = { |
25 ec_slave_init_t slaves[] = { |
30 // Zeiger, Index, Herstellername, Produktname, Domäne |
26 // Zeiger, Index, Herstellername, Produktname, Domäne |
31 { &s_out, 9, "Beckhoff", "EL2004", 1 }, |
27 { &s_out, 9, "Beckhoff", "EL2004", 1 }, |
32 { &s_in, 1, "Beckhoff", "EL3102", 1 } |
28 { &s_in, 1, "Beckhoff", "EL3102", 1 } |
36 |
32 |
37 /*****************************************************************************/ |
33 /*****************************************************************************/ |
38 |
34 |
39 void run(unsigned long data) |
35 void run(unsigned long data) |
40 { |
36 { |
41 static int ms = 0; |
37 // Klemmen-IO |
42 static unsigned long int k = 0; |
|
43 static int firstrun = 1; |
|
44 |
|
45 ms++; |
|
46 ms %= 1000; |
|
47 |
|
48 EC_WRITE_EL20XX(s_out, 3, EC_READ_EL31XX(s_in, 0) < 0); |
38 EC_WRITE_EL20XX(s_out, 3, EC_READ_EL31XX(s_in, 0) < 0); |
49 |
39 |
50 // Prozessdaten lesen und schreiben |
40 // Prozessdaten lesen und schreiben |
51 rdtscl(k); |
|
52 EtherCAT_rt_domain_xio(master, 1, 100); |
41 EtherCAT_rt_domain_xio(master, 1, 100); |
53 firstrun = 0; |
|
54 |
42 |
|
43 // Timer neu starten |
55 timer.expires += HZ / 1000; |
44 timer.expires += HZ / 1000; |
56 add_timer(&timer); |
45 add_timer(&timer); |
57 } |
46 } |
58 |
47 |
59 /*****************************************************************************/ |
48 /*****************************************************************************/ |
64 |
53 |
65 if ((master = EtherCAT_rt_request_master(0)) == NULL) { |
54 if ((master = EtherCAT_rt_request_master(0)) == NULL) { |
66 printk(KERN_ERR "EtherCAT master 0 not available!\n"); |
55 printk(KERN_ERR "EtherCAT master 0 not available!\n"); |
67 goto out_return; |
56 goto out_return; |
68 } |
57 } |
69 |
|
70 //EtherCAT_rt_debug_level(master, 2); |
|
71 |
58 |
72 if (EtherCAT_rt_register_slave_list(master, slaves, SLAVE_COUNT)) { |
59 if (EtherCAT_rt_register_slave_list(master, slaves, SLAVE_COUNT)) { |
73 printk(KERN_ERR "Could not register slaves!\n"); |
60 printk(KERN_ERR "Could not register slaves!\n"); |
74 goto out_release_master; |
61 goto out_release_master; |
75 } |
62 } |