50 // EtherCAT |
50 // EtherCAT |
51 ec_master_t *master = NULL; |
51 ec_master_t *master = NULL; |
52 ec_domain_t *domain1 = NULL; |
52 ec_domain_t *domain1 = NULL; |
53 |
53 |
54 // Prozessdaten |
54 // Prozessdaten |
55 uint8_t *dig_out1; |
55 void *r_ssi; |
56 uint16_t *ssi_value; |
56 void *r_inc; |
57 uint16_t *inc_value; |
57 |
58 |
58 uint32_t k_angle; |
59 uint32_t angle0; |
59 uint32_t k_pos; |
60 |
60 |
61 ec_field_init_t domain1_fields[] = { |
61 ec_field_init_t domain1_fields[] = { |
62 {}, |
62 {(void **) &r_ssi, "1", "Beckhoff", "EL5001", ec_ipvalue, 0, 1}, |
63 {(void **) &ssi_value, "1", "Beckhoff", "EL5001", ec_ipvalue, 0, 1}, |
63 {(void **) &r_inc, "0:3", "Beckhoff", "EL5101", ec_ipvalue, 0, 1}, |
64 {(void **) &dig_out1, "2", "Beckhoff", "EL2004", ec_opvalue, 0, 1}, |
|
65 {(void **) &inc_value, "0:4", "Beckhoff", "EL5101", ec_ipvalue, 0, 1}, |
|
66 {} |
64 {} |
67 }; |
65 }; |
68 |
66 |
69 /*****************************************************************************/ |
67 /*****************************************************************************/ |
70 |
68 |
71 static void msr_controller_run(void) |
69 static void msr_controller_run(void) |
72 { |
70 { |
73 // Prozessdaten lesen und schreiben |
71 // Prozessdaten lesen und schreiben |
74 EtherCAT_rt_domain_xio(domain1); |
72 EtherCAT_rt_domain_xio(domain1); |
75 |
73 |
76 //angle0 = (uint32_t) *inc_value; |
74 k_angle = EC_READ_U16(r_inc); |
|
75 k_pos = EC_READ_U32(r_ssi); |
|
76 } |
|
77 |
|
78 /*****************************************************************************/ |
|
79 |
|
80 int msr_globals_register(void) |
|
81 { |
|
82 msr_reg_kanal("/angle0", "", &k_angle, TUINT); |
|
83 msr_reg_kanal("/pos0", "", &k_pos, TUINT); |
|
84 |
|
85 return 0; |
77 } |
86 } |
78 |
87 |
79 /*****************************************************************************/ |
88 /*****************************************************************************/ |
80 |
89 |
81 void msr_run(unsigned irq) |
90 void msr_run(unsigned irq) |
100 ipipe_get_sysinfo(&sys_info); |
109 ipipe_get_sysinfo(&sys_info); |
101 ipipe_virtualize_irq(ipipe_current_domain,sys_info.archdep.tmirq, |
110 ipipe_virtualize_irq(ipipe_current_domain,sys_info.archdep.tmirq, |
102 &msr_run, NULL, IPIPE_HANDLE_MASK); |
111 &msr_run, NULL, IPIPE_HANDLE_MASK); |
103 |
112 |
104 ipipe_tune_timer(1000000000UL / MSR_ABTASTFREQUENZ, 0); |
113 ipipe_tune_timer(1000000000UL / MSR_ABTASTFREQUENZ, 0); |
105 } |
|
106 |
|
107 /*****************************************************************************/ |
|
108 |
|
109 int msr_globals_register(void) |
|
110 { |
|
111 msr_reg_kanal("/angle0", "", &angle0, TUINT); |
|
112 |
|
113 return 0; |
|
114 } |
114 } |
115 |
115 |
116 /*****************************************************************************/ |
116 /*****************************************************************************/ |
117 |
117 |
118 int __init init_rt_module(void) |
118 int __init init_rt_module(void) |