Adjusted examples to EtherLab starter kit hardware.

This commit is contained in:
Florian Pose 2007-01-08 15:02:05 +00:00
parent ed70ae4999
commit f8ff14458d
2 changed files with 27 additions and 14 deletions

View File

@ -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;

View File

@ -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();
}