diff -r bc89e3fba1a5 -r 5fcbd29151d2 examples/mini/mini.c --- a/examples/mini/mini.c Tue Feb 13 13:36:31 2007 +0000 +++ b/examples/mini/mini.c Tue Feb 13 13:42:37 2007 +0000 @@ -32,7 +32,6 @@ *****************************************************************************/ #include -#include #include #include #include @@ -42,7 +41,7 @@ #define FREQUENCY 100 -#define KBUS +//#define KBUS /*****************************************************************************/ @@ -59,11 +58,11 @@ void *r_outputs; #endif -void *r_ana_in; +void *r_dig_out; #if 1 ec_pdo_reg_t domain1_pdos[] = { - {"2", Beckhoff_EL3102_Input1, &r_ana_in}, + {"4", Beckhoff_EL2004_Outputs, &r_dig_out}, {} }; #endif @@ -73,33 +72,40 @@ void run(unsigned long data) { static unsigned int counter = 0; - static unsigned int einaus = 0; - - spin_lock(&master_lock); + static unsigned int blink = 0; // receive + spin_lock(&master_lock); ecrt_master_receive(master); ecrt_domain_process(domain1); + spin_unlock(&master_lock); // process data - //k_pos = EC_READ_U32(r_ssi); -#ifdef KBUS - EC_WRITE_U8(r_outputs + 2, einaus ? 0xFF : 0x00); -#endif - - // send - ecrt_master_run(master); - ecrt_master_send(master); - - spin_unlock(&master_lock); + // k_pos = EC_READ_U32(r_ssi); + EC_WRITE_U8(r_dig_out, blink ? 0x0F : 0x00); if (counter) { counter--; } else { counter = FREQUENCY; - einaus = !einaus; - } + blink = !blink; + } + +#ifdef KBUS + EC_WRITE_U8(r_outputs + 2, blink ? 0xFF : 0x00); +#endif + + // send + spin_lock(&master_lock); + ecrt_domain_queue(domain1); + spin_unlock(&master_lock); + + ecrt_master_run(master); + + spin_lock(&master_lock); + ecrt_master_send(master); + spin_unlock(&master_lock); // restart timer timer.expires += HZ / FREQUENCY; @@ -110,7 +116,7 @@ int request_lock(void *data) { - spin_lock_bh(&master_lock); + spin_lock(&master_lock); return 0; // access allowed } @@ -118,20 +124,20 @@ void release_lock(void *data) { - spin_unlock_bh(&master_lock); + spin_unlock(&master_lock); } /*****************************************************************************/ int __init init_mini_module(void) { -#if 1 +#if 0 ec_slave_t *slave; #endif printk(KERN_INFO "=== Starting Minimal EtherCAT environment... ===\n"); - if ((master = ecrt_request_master(0)) == NULL) { + if (!(master = ecrt_request_master(0))) { printk(KERN_ERR "Requesting master 0 failed!\n"); goto out_return; } @@ -139,8 +145,7 @@ ecrt_master_callbacks(master, request_lock, release_lock, NULL); printk(KERN_INFO "Registering domain...\n"); - if (!(domain1 = ecrt_master_create_domain(master))) - { + if (!(domain1 = ecrt_master_create_domain(master))) { printk(KERN_ERR "Domain creation failed!\n"); goto out_release_master; } @@ -166,7 +171,7 @@ } #endif -#if 1 +#if 0 if (!(slave = ecrt_master_get_slave(master, "2"))) goto out_release_master; @@ -180,8 +185,6 @@ goto out_release_master; } - ecrt_master_prepare(master); - printk("Starting cyclic sample thread.\n"); init_timer(&timer); timer.function = run; @@ -213,11 +216,10 @@ /*****************************************************************************/ MODULE_LICENSE("GPL"); -MODULE_AUTHOR ("Florian Pose "); -MODULE_DESCRIPTION ("EtherCAT minimal test environment"); +MODULE_AUTHOR("Florian Pose "); +MODULE_DESCRIPTION("EtherCAT minimal test environment"); module_init(init_mini_module); module_exit(cleanup_mini_module); /*****************************************************************************/ -