include/EtherCAT_si.h
author Florian Pose <fp@igh-essen.com>
Fri, 03 Feb 2006 16:23:52 +0000
changeset 64 ea6ccf12c612
parent 59 c8bd4fe3b38c
child 66 cab9cc6a2721
permissions -rw-r--r--
CANopen over EtherCAT.
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     1
/******************************************************************************
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     2
 *
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     3
 *  E t h e r C A T _ s i . h
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     4
 *
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     5
 *  EtherCAT Slave-Interface.
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     6
 *
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     7
 *  $Id$
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     8
 *
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
     9
 *****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    10
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    11
#define EC_PROC_DATA(SLAVE) ((unsigned char *) ((SLAVE)->process_data))
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    13
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    15
#define EC_READ_EL10XX(SLAVE, CHANNEL) \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
    ((EC_PROC_DATA(SLAVE)[0] >> (CHANNEL)) & 0x01)
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    17
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    19
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    20
#define EC_READ_EL31XX(SLAVE, CHANNEL) \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
    ((short int) ((EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 2] << 8) | \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
                   EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 1]))
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    23
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    24
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    25
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    26
#define EC_WRITE_EL20XX(SLAVE, CHANNEL, VALUE) \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    27
    do { \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    28
        if (VALUE) EC_PROC_DATA(SLAVE)[0] |=  (1 << (CHANNEL)); \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    29
        else       EC_PROC_DATA(SLAVE)[0] &= ~(1 << (CHANNEL)); \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    30
    } while (0)
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    31
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    32
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    33
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    34
#define EC_WRITE_EL41XX(SLAVE, CHANNEL, VALUE) \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    35
    do { \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    36
        EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 1] = ((VALUE) & 0xFF00) >> 8; \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    37
        EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 2] =  (VALUE) & 0xFF; \
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    38
    } while (0)
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    39
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    40
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    41
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    42
/* Emacs-Konfiguration
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    43
;;; Local Variables: ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    44
;;; c-basic-offset:4 ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    45
;;; End: ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    46
*/