include/EtherCAT_si.h
author Florian Pose <fp@igh-essen.com>
Thu, 23 Feb 2006 13:38:54 +0000
changeset 74 9bf603942791
parent 71 79d7b9cfdeb9
child 77 677967864795
permissions -rw-r--r--
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
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
/*****************************************************************************/
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    12
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    13
// Bitwise read/write macros
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    14
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    15
#define EC_READ_BIT(PD, CH) (*((uint8_t *) (PD)) >> (CH)) & 0x01)
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    16
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    17
#define EC_WRITE_BIT(PD, CH, VAL) \
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    18
    do { \
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    19
        if (VAL) *((uint8_t *) (PD)) |=  (1 << (CH)); \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    20
        else     *((uint8_t *) (PD)) &= ~(1 << (CH)); \
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    21
    } while (0)
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    22
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
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    25
// Read macros
71
79d7b9cfdeb9 Slave interface und Makefile ge?ndert.
Florian Pose <fp@igh-essen.com>
parents: 67
diff changeset
    26
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    27
#define EC_READ_U8(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    28
    (*((uint8_t *) (PD)))
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    29
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    30
#define EC_READ_S8(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    31
    ((int8_t) *((uint8_t *) (PD)))
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    32
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    33
#define EC_READ_U16(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    34
    ((uint16_t) (*((uint8_t *) (PD) + 0) << 0 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    35
                 *((uint8_t *) (PD) + 1) << 8))
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    36
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    37
#define EC_READ_S16(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    38
    ((int16_t) (*((uint8_t *) (PD) + 0) << 0 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    39
                *((uint8_t *) (PD) + 1) << 8))
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    40
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    41
#define EC_READ_U32(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    42
    ((uint32_t) (*((uint8_t *) (PD) + 0) <<  0 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    43
                 *((uint8_t *) (PD) + 1) <<  8 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    44
                 *((uint8_t *) (PD) + 2) << 16 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    45
                 *((uint8_t *) (PD) + 3) << 24))
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    46
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    47
#define EC_READ_S32(PD) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    48
    ((int32_t) (*((uint8_t *) (PD) + 0) <<  0 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    49
                *((uint8_t *) (PD) + 1) <<  8 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    50
                *((uint8_t *) (PD) + 2) << 16 | \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    51
                *((uint8_t *) (PD) + 3) << 24))
67
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    52
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    53
/*****************************************************************************/
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    54
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    55
// Write macros
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    56
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    57
#define EC_WRITE_U8(PD, VAL) \
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    58
    do { \
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    59
        *((uint8_t *)(PD)) = ((uint8_t) (VAL)); \
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    60
    } while (0)
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    61
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    62
#define EC_WRITE_S8(PD, VAL) EC_WRITE_U8(PD, VAL)
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    63
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    64
#define EC_WRITE_U16(PD, VAL) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    65
    do { \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    66
        *((uint8_t *) (PD) + 0) = ((uint16_t) (VAL) >> 0) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    67
        *((uint8_t *) (PD) + 1) = ((uint16_t) (VAL) >> 8) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    68
    } while (0)
67
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    69
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    70
#define EC_WRITE_S16(PD, VAL) EC_WRITE_U16(PD, VAL)
67
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    71
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    72
#define EC_WRITE_U32(PD, VAL) \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    73
    do { \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    74
        *((uint8_t *) (PD) + 0) = ((uint32_t) (VAL) >>  0) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    75
        *((uint8_t *) (PD) + 1) = ((uint32_t) (VAL) >>  8) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    76
        *((uint8_t *) (PD) + 2) = ((uint32_t) (VAL) >> 16) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    77
        *((uint8_t *) (PD) + 3) = ((uint32_t) (VAL) >> 24) & 0xFF; \
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    78
    } while (0)
66
cab9cc6a2721 SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents: 59
diff changeset
    79
74
9bf603942791 Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents: 71
diff changeset
    80
#define EC_WRITE_S32(PD, VAL) EC_WRITE_U32(PD, VAL)
67
56964b20c15d EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents: 66
diff changeset
    81
66
cab9cc6a2721 SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents: 59
diff changeset
    82
/*****************************************************************************/
cab9cc6a2721 SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents: 59
diff changeset
    83
59
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    84
/* Emacs-Konfiguration
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    85
;;; Local Variables: ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    86
;;; c-basic-offset:4 ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    87
;;; End: ***
c8bd4fe3b38c EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff changeset
    88
*/