diff -r 2346e2963087 -r 9963537ec776 mini/mini.c --- a/mini/mini.c Mon Mar 20 08:36:08 2006 +0000 +++ b/mini/mini.c Mon Mar 20 11:02:39 2006 +0000 @@ -29,19 +29,22 @@ ec_domain_t *domain1 = NULL; // Datenfelder +void *r_ssi_input, *r_ssi_status; void *r_field[9]; void *r_4102[3]; // Kanäle uint32_t k_pos; +uint8_t k_stat; ec_field_init_t domain1_fields[] = { - {&r_field[0], "1", "Beckhoff", "EL5001", "InputValue", 0, 1}, + {&r_ssi_input, "1", "Beckhoff", "EL5001", "InputValue", 0, 1}, + {&r_ssi_status, "1", "Beckhoff", "EL5001", "Status", 0, 1}, {&r_field[1], "2", "Beckhoff", "EL4132", "OutputValue", 0, 1}, - {&r_field[2], "3", "Beckhoff", "EL3162", "InputValue", 0, 1}, - {r_4102, "4", "Beckhoff", "EL4102", "OutputValue", 0, 3}, - {&r_field[4], "5", "Beckhoff", "EL5001", "InputValue", 0, 1}, - {&r_field[5], "6", "Beckhoff", "EL1014", "InputValue", 0, 1}, + {&r_field[2], "3", "Beckhoff", "EL3162", "InputValue", 0, 1}, + {r_4102, "4", "Beckhoff", "EL4102", "OutputValue", 0, 2}, + {&r_field[4], "5", "Beckhoff", "EL5001", "InputValue", 0, 1}, + {&r_field[5], "6", "Beckhoff", "EL1014", "InputValue", 0, 1}, {&r_field[6], "7", "Beckhoff", "EL2004", "OutputValue", 0, 1}, {&r_field[7], "8", "Beckhoff", "EL4132", "OutputValue", 0, 1}, {&r_field[8], "9", "Beckhoff", "EL4132", "OutputValue", 0, 1}, @@ -60,7 +63,8 @@ ecrt_domain_process(domain1); // Prozessdaten verarbeiten - // k_pos = EC_READ_U32(r_ssi); + k_pos = EC_READ_U32(r_ssi_input); + k_stat = EC_READ_U8(r_ssi_status); // Prozessdaten senden ecrt_domain_queue(domain1); @@ -80,7 +84,8 @@ } else { counter = ABTASTFREQUENZ; - printk(KERN_INFO "k_pos = %i\n", k_pos); + printk(KERN_INFO "k_pos = %i\n", k_pos); + printk(KERN_INFO "k_stat = 0x%02X\n", k_stat); } // Timer neu starten @@ -123,6 +128,23 @@ goto out_release_master; } + //ecrt_master_debug(master, 2); + + if (ecrt_master_sdo_write(master, "1", 0x4061, 1, 0, 1) || + ecrt_master_sdo_write(master, "1", 0x4061, 2, 1, 1) || + ecrt_master_sdo_write(master, "1", 0x4061, 3, 1, 1) || + ecrt_master_sdo_write(master, "1", 0x4066, 0, 0, 1) || + ecrt_master_sdo_write(master, "1", 0x4067, 0, 4, 1) || + ecrt_master_sdo_write(master, "1", 0x4068, 0, 0, 1) || + ecrt_master_sdo_write(master, "1", 0x4069, 0, 25, 1) || + ecrt_master_sdo_write(master, "1", 0x406A, 0, 25, 1) || + ecrt_master_sdo_write(master, "1", 0x406B, 0, 50, 1)) { + printk(KERN_ERR "EtherCAT: Failed to configure SSI!\n"); + goto out_deactivate; + } + + //ecrt_master_debug(master, 0); + #ifdef ASYNC // Einmal senden und warten... ecrt_master_prepare_async_io(master); @@ -139,11 +161,14 @@ return 0; + out_deactivate: + ecrt_master_deactivate(master); + out_release_master: - ecrt_release_master(master); + ecrt_release_master(master); out_return: - return -1; + return -1; } /*****************************************************************************/