diff -r 39364fbcd069 -r d417dd9bdc2f mini/ec_mini.c --- a/mini/ec_mini.c Fri Nov 25 16:43:46 2005 +0000 +++ b/mini/ec_mini.c Fri Dec 02 09:03:32 2005 +0000 @@ -9,6 +9,8 @@ ******************************************************************************/ #include +//#include +#include #include #include "../drivers/ec_master.h" @@ -44,22 +46,21 @@ ECAT_INIT_SLAVE(Beckhoff_EL4102), ECAT_INIT_SLAVE(Beckhoff_EL3162), ECAT_INIT_SLAVE(Beckhoff_EL1014), - ECAT_INIT_SLAVE(Beckhoff_EL2004), - ECAT_INIT_SLAVE(Beckhoff_EL3102), + ECAT_INIT_SLAVE(Beckhoff_EL4102), ECAT_INIT_SLAVE(Beckhoff_EL4102), ECAT_INIT_SLAVE(Beckhoff_EL4102), + ECAT_INIT_SLAVE(Beckhoff_EL3162), ECAT_INIT_SLAVE(Beckhoff_EL3162), ECAT_INIT_SLAVE(Beckhoff_EL3162), ECAT_INIT_SLAVE(Beckhoff_EL3102), ECAT_INIT_SLAVE(Beckhoff_EL3102), - ECAT_INIT_SLAVE(Beckhoff_EL2004), - ECAT_INIT_SLAVE(Beckhoff_EL2004), - ECAT_INIT_SLAVE(Beckhoff_EL2004), - ECAT_INIT_SLAVE(Beckhoff_EL2004), -#endif - + ECAT_INIT_SLAVE(Beckhoff_EL3102), + +#endif + +#if 1 // Block 2 ECAT_INIT_SLAVE(Beckhoff_EK1100), ECAT_INIT_SLAVE(Beckhoff_EL4102), @@ -67,6 +68,11 @@ ECAT_INIT_SLAVE(Beckhoff_EL3162), ECAT_INIT_SLAVE(Beckhoff_EL2004), ECAT_INIT_SLAVE(Beckhoff_EL3102), + ECAT_INIT_SLAVE(Beckhoff_EL2004), + ECAT_INIT_SLAVE(Beckhoff_EL2004), + ECAT_INIT_SLAVE(Beckhoff_EL2004), + ECAT_INIT_SLAVE(Beckhoff_EL2004), + ECAT_INIT_SLAVE(Beckhoff_EL2004), // Block 3 ECAT_INIT_SLAVE(Beckhoff_EK1100), @@ -82,6 +88,7 @@ ECAT_INIT_SLAVE(Beckhoff_EL1014), ECAT_INIT_SLAVE(Beckhoff_EL1014), ECAT_INIT_SLAVE(Beckhoff_EL1014) +#endif }; #define ECAT_SLAVES_COUNT (sizeof(ecat_slaves) / sizeof(EtherCAT_slave_t)) @@ -92,6 +99,7 @@ #ifdef ECAT_CYCLIC_DATA +int value; int dig1; struct timer_list timer; @@ -152,7 +160,7 @@ static unsigned long int k = 0; static int firstrun = 1; - static int klemme = 12; + static int klemme = 0; static int kanal = 0; static int up_down = 0; int wrap = 0; @@ -174,14 +182,15 @@ // Prozessdaten lesen if (!firstrun) { + EtherCAT_read_process_data(ecat_master); + + // Daten lesen und skalieren +// value = EtherCAT_read_value(&ecat_master->slaves[5], 0) / 3276; //.7; FIXME kein FP im Kernel ohne Schutz !! +// dig1 = EtherCAT_read_value(&ecat_master->slaves[3], 0); + } + else klemme = next2004(&wrap); - EtherCAT_read_process_data(ecat_master); - - // Daten lesen und skalieren - //value = EtherCAT_read_value(&ecat_master->slaves[5], 0) / 3276.7; - dig1 = EtherCAT_read_value(&ecat_master->slaves[3], 0); - } #if 0 // Daten schreiben @@ -208,8 +217,10 @@ } } - if (klemme >= 0) + if (klemme >= 0) { EtherCAT_write_value(&ecat_master->slaves[klemme], kanal,up_down); + //printk("ECAT write: Klemme: %d, Kanal: %d, Wert: %d\n",klemme,kanal,up_down); + } #if 0 EtherCAT_write_value(&ecat_master->slaves[13], 1, ms > 500 ? 0 : 1); @@ -223,7 +234,7 @@ firstrun = 0; #endif - timer.expires += HZ / 100; + timer.expires += HZ / 1000; add_timer(&timer); } @@ -308,11 +319,14 @@ #ifdef ECAT_CYCLIC_DATA EC_DBG("Starting cyclic sample thread.\n"); + schedule(); + mdelay(1000); + schedule(); init_timer(&timer); timer.function = run; timer.data = 0; - timer.expires = jiffies; // Das erste Mal sofort feuern + timer.expires = jiffies+10; // Das erste Mal sofort feuern last_start_jiffies = timer.expires; add_timer(&timer);