rt/msr_module.c
changeset 82 30d0708229b9
parent 81 28b1defdcc88
child 83 e8b76a509bc9
equal deleted inserted replaced
81:28b1defdcc88 82:30d0708229b9
    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)