mini/mini.c
changeset 83 e8b76a509bc9
parent 73 9f4ea66d89a3
child 98 f564d0929292
equal deleted inserted replaced
82:30d0708229b9 83:e8b76a509bc9
    25 
    25 
    26 // EtherCAT
    26 // EtherCAT
    27 ec_master_t *master = NULL;
    27 ec_master_t *master = NULL;
    28 ec_domain_t *domain1 = NULL;
    28 ec_domain_t *domain1 = NULL;
    29 
    29 
    30 // Prozessdaten
    30 // Datenfelder
    31 uint8_t *dig_out1;
    31 void *r_ssi;
    32 uint16_t *ssi_value;
    32 void *r_inc;
    33 uint16_t *inc_value;
       
    34 
    33 
    35 uint32_t angle0;
    34 // Kanäle
       
    35 uint32_t k_angle, k_pos;
    36 
    36 
    37 ec_field_init_t domain1_fields[] = {
    37 ec_field_init_t domain1_fields[] = {
    38     {(void **) &dig_out1,    "2", "Beckhoff", "EL2004", ec_opvalue, 0, 1},
    38     {&r_ssi,   "1", "Beckhoff", "EL5001", ec_ipvalue, 0, 1},
    39     {(void **) &ssi_value,   "3", "Beckhoff", "EL5001", ec_ipvalue, 0, 1},
    39     {&r_inc, "0:3", "Beckhoff", "EL5101", ec_ipvalue, 0, 1},
    40     {(void **) &inc_value, "0:4", "Beckhoff", "EL5101", ec_ipvalue, 0, 1},
       
    41     {}
    40     {}
    42 };
    41 };
    43 
    42 
    44 /*****************************************************************************/
    43 /*****************************************************************************/
    45 
    44 
    48     static unsigned int counter = 0;
    47     static unsigned int counter = 0;
    49 
    48 
    50     // Prozessdaten lesen und schreiben
    49     // Prozessdaten lesen und schreiben
    51     EtherCAT_rt_domain_xio(domain1);
    50     EtherCAT_rt_domain_xio(domain1);
    52 
    51 
    53     angle0 = (uint32_t) *inc_value;
    52     k_angle = EC_READ_U16(r_inc);
       
    53     k_pos   = EC_READ_U32(r_ssi);
    54 
    54 
    55     if (counter) {
    55     if (counter) {
    56         counter--;
    56         counter--;
    57     }
    57     }
    58     else {
    58     else {
    59         counter = ABTASTFREQUENZ;
    59         counter = ABTASTFREQUENZ;
    60         printk(KERN_INFO "angle0 = %i\n", angle0);
    60         printk(KERN_INFO "k_angle = %i\n", k_angle);
       
    61         printk(KERN_INFO "k_pos   = %i\n", k_pos);
    61     }
    62     }
    62 
    63 
    63     // Timer neu starten
    64     // Timer neu starten
    64     timer.expires += HZ / ABTASTFREQUENZ;
    65     timer.expires += HZ / ABTASTFREQUENZ;
    65     add_timer(&timer);
    66     add_timer(&timer);