6 * |
6 * |
7 * $Id$ |
7 * $Id$ |
8 * |
8 * |
9 *****************************************************************************/ |
9 *****************************************************************************/ |
10 |
10 |
11 #define EC_PROC_DATA(SLAVE) ((unsigned char *) ((SLAVE)->process_data)) |
|
12 |
|
13 /*****************************************************************************/ |
11 /*****************************************************************************/ |
14 |
12 |
15 #define EC_READ_EL10XX(SLAVE, CHANNEL) \ |
13 // Bitwise read/write macros |
16 ((EC_PROC_DATA(SLAVE)[0] >> (CHANNEL)) & 0x01) |
|
17 |
14 |
18 /*****************************************************************************/ |
15 #define EC_READ_BIT(PD, CH) (*((uint8_t *) (PD)) >> (CH)) & 0x01) |
19 |
16 |
20 #define EC_WRITE_EL200X(SLAVE, CHANNEL, VALUE) \ |
17 #define EC_WRITE_BIT(PD, CH, VAL) \ |
21 do { \ |
18 do { \ |
22 if (VALUE) EC_PROC_DATA(SLAVE)[0] |= (1 << (CHANNEL)); \ |
19 if (VAL) *((uint8_t *) (PD)) |= (1 << (CH)); \ |
23 else EC_PROC_DATA(SLAVE)[0] &= ~(1 << (CHANNEL)); \ |
20 else *((uint8_t *) (PD)) &= ~(1 << (CH)); \ |
24 } while (0) |
21 } while (0) |
25 |
22 |
26 /*****************************************************************************/ |
23 /*****************************************************************************/ |
27 |
24 |
28 #define EC_READ_EL310X(SLAVE, CHANNEL) \ |
25 // Read macros |
29 ((signed short int) ((EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 2] << 8) | \ |
|
30 EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 1])) |
|
31 |
26 |
32 #define EC_READ_EL316X(SLAVE, CHANNEL) \ |
27 #define EC_READ_U8(PD) \ |
33 ((unsigned short int) ((EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 2] << 8) | \ |
28 (*((uint8_t *) (PD))) |
34 EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 1])) |
29 |
|
30 #define EC_READ_S8(PD) \ |
|
31 ((int8_t) *((uint8_t *) (PD))) |
|
32 |
|
33 #define EC_READ_U16(PD) \ |
|
34 ((uint16_t) (*((uint8_t *) (PD) + 0) << 0 | \ |
|
35 *((uint8_t *) (PD) + 1) << 8)) |
|
36 |
|
37 #define EC_READ_S16(PD) \ |
|
38 ((int16_t) (*((uint8_t *) (PD) + 0) << 0 | \ |
|
39 *((uint8_t *) (PD) + 1) << 8)) |
|
40 |
|
41 #define EC_READ_U32(PD) \ |
|
42 ((uint32_t) (*((uint8_t *) (PD) + 0) << 0 | \ |
|
43 *((uint8_t *) (PD) + 1) << 8 | \ |
|
44 *((uint8_t *) (PD) + 2) << 16 | \ |
|
45 *((uint8_t *) (PD) + 3) << 24)) |
|
46 |
|
47 #define EC_READ_S32(PD) \ |
|
48 ((int32_t) (*((uint8_t *) (PD) + 0) << 0 | \ |
|
49 *((uint8_t *) (PD) + 1) << 8 | \ |
|
50 *((uint8_t *) (PD) + 2) << 16 | \ |
|
51 *((uint8_t *) (PD) + 3) << 24)) |
35 |
52 |
36 /*****************************************************************************/ |
53 /*****************************************************************************/ |
37 |
54 |
38 #define EC_WRITE_EL410X(SLAVE, CHANNEL, VALUE) \ |
55 // Write macros |
|
56 |
|
57 #define EC_WRITE_U8(PD, VAL) \ |
39 do { \ |
58 do { \ |
40 EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 1] = ((VALUE) & 0xFF00) >> 8; \ |
59 *((uint8_t *)(PD)) = ((uint8_t) (VAL)); \ |
41 EC_PROC_DATA(SLAVE)[(CHANNEL) * 3 + 2] = (VALUE) & 0xFF; \ |
|
42 } while (0) |
60 } while (0) |
43 |
61 |
44 /*****************************************************************************/ |
62 #define EC_WRITE_S8(PD, VAL) EC_WRITE_U8(PD, VAL) |
45 |
63 |
46 #define EC_CONF_EL5001_BAUD (0x4067) |
64 #define EC_WRITE_U16(PD, VAL) \ |
|
65 do { \ |
|
66 *((uint8_t *) (PD) + 0) = ((uint16_t) (VAL) >> 0) & 0xFF; \ |
|
67 *((uint8_t *) (PD) + 1) = ((uint16_t) (VAL) >> 8) & 0xFF; \ |
|
68 } while (0) |
47 |
69 |
48 #define EC_READ_EL5001_STATE(SLAVE) \ |
70 #define EC_WRITE_S16(PD, VAL) EC_WRITE_U16(PD, VAL) |
49 ((unsigned char) EC_PROC_DATA(SLAVE)[0]) |
|
50 |
71 |
51 #define EC_READ_EL5001_VALUE(SLAVE) \ |
72 #define EC_WRITE_U32(PD, VAL) \ |
52 ((unsigned int) (EC_PROC_DATA(SLAVE)[1] | \ |
73 do { \ |
53 (EC_PROC_DATA(SLAVE)[2] << 8) | \ |
74 *((uint8_t *) (PD) + 0) = ((uint32_t) (VAL) >> 0) & 0xFF; \ |
54 (EC_PROC_DATA(SLAVE)[3] << 16) | \ |
75 *((uint8_t *) (PD) + 1) = ((uint32_t) (VAL) >> 8) & 0xFF; \ |
55 (EC_PROC_DATA(SLAVE)[4] << 24))) |
76 *((uint8_t *) (PD) + 2) = ((uint32_t) (VAL) >> 16) & 0xFF; \ |
|
77 *((uint8_t *) (PD) + 3) = ((uint32_t) (VAL) >> 24) & 0xFF; \ |
|
78 } while (0) |
56 |
79 |
57 /*****************************************************************************/ |
80 #define EC_WRITE_S32(PD, VAL) EC_WRITE_U32(PD, VAL) |
58 |
|
59 #define EC_READ_EL5101_STATE(SLAVE) \ |
|
60 ((unsigned char) EC_PROC_DATA(SLAVE)[0]) |
|
61 |
|
62 #define EC_READ_EL5101_VALUE(SLAVE) \ |
|
63 ((unsigned int) (EC_PROC_DATA(SLAVE)[1] | \ |
|
64 (EC_PROC_DATA(SLAVE)[2] << 8))) |
|
65 |
|
66 #define EC_READ_EL5101_LATCH(SLAVE) \ |
|
67 ((unsigned int) (EC_PROC_DATA(SLAVE)[3] | \ |
|
68 (EC_PROC_DATA(SLAVE)[4] << 8))) |
|
69 |
81 |
70 /*****************************************************************************/ |
82 /*****************************************************************************/ |
71 |
83 |
72 /* Emacs-Konfiguration |
84 /* Emacs-Konfiguration |
73 ;;; Local Variables: *** |
85 ;;; Local Variables: *** |