author | Florian Pose <fp@igh-essen.com> |
Thu, 02 Mar 2006 11:19:27 +0000 | |
changeset 96 | 080b46eb6e2d |
parent 77 | 677967864795 |
permissions | -rw-r--r-- |
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 |
|
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
11 |
#include <asm/byteorder.h> |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
12 |
|
59
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 |
|
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 |
// Bitwise read/write macros |
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_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
|
18 |
|
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 |
#define EC_WRITE_BIT(PD, CH, VAL) \ |
59
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
20 |
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
|
21 |
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
|
22 |
else *((uint8_t *) (PD)) &= ~(1 << (CH)); \ |
59
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
23 |
} while (0) |
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 |
|
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 |
// Read macros |
71
79d7b9cfdeb9
Slave interface und Makefile ge?ndert.
Florian Pose <fp@igh-essen.com>
parents:
67
diff
changeset
|
28 |
|
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
29 |
#define EC_READ_U8(PD) ((uint8_t) *((uint8_t *) (PD))) |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
30 |
#define EC_READ_S8(PD) ((int8_t) *((uint8_t *) (PD))) |
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
31 |
|
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
32 |
#define EC_READ_U16(PD) ((uint16_t) le16_to_cpup((void *) (PD))) |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
33 |
#define EC_READ_S16(PD) ((int16_t) le16_to_cpup((void *) (PD))) |
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
34 |
|
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
35 |
#define EC_READ_U32(PD) ((uint32_t) le32_to_cpup((void *) (PD))) |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
36 |
#define EC_READ_S32(PD) ((int32_t) le32_to_cpup((void *) (PD))) |
67
56964b20c15d
EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents:
66
diff
changeset
|
37 |
|
56964b20c15d
EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents:
66
diff
changeset
|
38 |
/*****************************************************************************/ |
56964b20c15d
EL5101-Inkrementalgeberklemme hinzugef?gt.
Florian Pose <fp@igh-essen.com>
parents:
66
diff
changeset
|
39 |
|
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
40 |
// 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
|
41 |
|
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
42 |
#define EC_WRITE_U8(PD, VAL) \ |
59
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
43 |
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
|
44 |
*((uint8_t *)(PD)) = ((uint8_t) (VAL)); \ |
59
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
45 |
} while (0) |
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
46 |
|
74
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_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
|
48 |
|
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
49 |
#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
|
50 |
do { \ |
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
51 |
*((uint16_t *) (PD)) = (uint16_t) (VAL); \ |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
52 |
cpu_to_le16s(PD); \ |
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
53 |
} while (0) |
67
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 |
#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
|
56 |
|
74
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_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
|
58 |
do { \ |
77
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
59 |
*((uint32_t *) (PD)) = (uint32_t) (VAL); \ |
677967864795
EC_READ/WRITE-Makros verwenden Makros aud asm/byteorder.h und werden konsequent verwendet.
Florian Pose <fp@igh-essen.com>
parents:
74
diff
changeset
|
60 |
cpu_to_le16s(PD); \ |
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
61 |
} while (0) |
66
cab9cc6a2721
SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents:
59
diff
changeset
|
62 |
|
74
9bf603942791
Neues Slave-Interface, CRC-Pr?fung und mehrfaches Scannen nun ungef?hrlich.
Florian Pose <fp@igh-essen.com>
parents:
71
diff
changeset
|
63 |
#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
|
64 |
|
66
cab9cc6a2721
SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents:
59
diff
changeset
|
65 |
/*****************************************************************************/ |
cab9cc6a2721
SSI-Klemmen-Interface und kleinere ?nderungen.
Florian Pose <fp@igh-essen.com>
parents:
59
diff
changeset
|
66 |
|
59
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
67 |
/* Emacs-Konfiguration |
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
68 |
;;; Local Variables: *** |
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
69 |
;;; c-basic-offset:4 *** |
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
70 |
;;; End: *** |
c8bd4fe3b38c
EtherCAT-Slave-Interface als Makros implementiert.
Florian Pose <fp@igh-essen.com>
parents:
diff
changeset
|
71 |
*/ |