libec/libec.c
author Florian Pose <fp@igh-essen.com>
Fri, 20 Jan 2006 17:50:35 +0000
changeset 57 bae4965439b8
permissions -rw-r--r--
LibEC
57
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/******************************************************************************
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
 *  l i b e c . c
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
 *  EtherCAT-Library fuer Echtzeitmodule
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
 *
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
 *  $Id$
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
 *
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
 *****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
#include "libec.h"
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
/*****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
int LEC_read_EL10XX(ec_slave_t *slave, unsigned int channel)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
{
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
    unsigned char *data = slave->process_data;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
    return (data[0] >> channel) & 0x01;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
}
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
/*****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
int LEC_read_EL31XX(ec_slave_t *slave, unsigned int channel)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
{
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
    unsigned char *data = slave->process_data;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
    return (short int) ((data[channel * 3 + 2] << 8) | data[channel * 3 + 1]);
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
}
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
/*****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
void LEC_write_EL20XX(ec_slave_t *slave, unsigned int channel, int value)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
{
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
    unsigned char *data = slave->process_data;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
    if (value) data[0] |= (1 << channel);
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
    else data[0] &= ~(1 << channel);
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
}
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
/*****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
void LEC_write_EL41XX(ec_slave_t *slave, unsigned int channel, int value)
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
{
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
    unsigned char *data = slave->process_data;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    47
    data[channel * 3 + 1] = (value & 0xFF00) >> 8;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    48
    data[channel * 3 + 2] = value & 0xFF;
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    49
}
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    50
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    51
/*****************************************************************************/
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    52
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    53
/* Emacs-Konfiguration
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    54
;;; Local Variables: ***
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    55
;;; c-basic-offset:4 ***
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    56
;;; End: ***
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    57
*/