From 81cbe23ab653bb96f58651f211753fda2c5c94aa Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Mon, 8 Jan 2007 15:02:05 +0000 Subject: [PATCH] Adjusted examples to EtherLab starter kit hardware. --- examples/mini/mini.c | 19 ++++++++++++------- examples/rtai/rtai_sample.c | 22 +++++++++++++++------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/examples/mini/mini.c b/examples/mini/mini.c index 59bd9c09..26ca8acf 100644 --- a/examples/mini/mini.c +++ b/examples/mini/mini.c @@ -41,7 +41,7 @@ #define FREQUENCY 100 -#define KBUS +//#define KBUS /*****************************************************************************/ @@ -58,11 +58,11 @@ void *r_inputs; 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}, + {"2", Beckhoff_EL2004_Outputs, &r_dig_out}, {} }; #endif @@ -82,6 +82,7 @@ void run(unsigned long data) // process data // k_pos = EC_READ_U32(r_ssi); + EC_WRITE_U8(r_dig_out, blink ? 0x0F : 0x00); if (counter) { counter--; @@ -98,7 +99,11 @@ void run(unsigned long data) // 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); @@ -111,7 +116,7 @@ void run(unsigned long data) int request_lock(void *data) { - spin_lock_bh(&master_lock); + spin_lock(&master_lock); return 0; // access allowed } @@ -119,14 +124,14 @@ int request_lock(void *data) 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 @@ -166,7 +171,7 @@ int __init init_mini_module(void) } #endif -#if 1 +#if 0 if (!(slave = ecrt_master_get_slave(master, "2"))) goto out_release_master; diff --git a/examples/rtai/rtai_sample.c b/examples/rtai/rtai_sample.c index f6b95f13..9c68f7ae 100644 --- a/examples/rtai/rtai_sample.c +++ b/examples/rtai/rtai_sample.c @@ -47,7 +47,7 @@ /*****************************************************************************/ // RTAI task frequency in Hz -#define FREQUENCY 10000 +#define FREQUENCY 4000 #define INHIBIT_TIME 20 #define TIMERTICKS (1000000000 / FREQUENCY) @@ -64,13 +64,10 @@ ec_master_t *master = NULL; ec_domain_t *domain1 = NULL; // data fields -void *r_ana_out; - -// channels -uint32_t k_pos; +void *r_dig_out; ec_pdo_reg_t domain1_pdos[] = { - {"2", Beckhoff_EL4132_Output1, &r_ana_out}, + {"2", Beckhoff_EL2004_Outputs, &r_dig_out}, {} }; @@ -78,6 +75,9 @@ ec_pdo_reg_t domain1_pdos[] = { void run(long data) { + static unsigned int blink = 0; + static unsigned int counter = 0; + while (1) { t_last_cycle = get_cycles(); @@ -87,13 +87,21 @@ void run(long data) rt_sem_signal(&master_sem); // process data - //k_pos = EC_READ_U32(r_ssi_input); + EC_WRITE_U8(r_dig_out, blink ? 0x0F : 0x00); rt_sem_wait(&master_sem); ecrt_domain_queue(domain1); ecrt_master_run(master); ecrt_master_send(master); rt_sem_signal(&master_sem); + + if (counter) { + counter--; + } + else { + counter = FREQUENCY; + blink = !blink; + } rt_task_wait_period(); } -- GitLab