author | Florian Pose <fp@igh-essen.com> |
Thu, 23 Feb 2006 13:54:27 +0000 | |
changeset 75 | aae1b9520e4d |
parent 74 | 9bf603942791 |
child 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 |
|
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 |
*/ |