IEEE 802.15.4 subsystem
Sign in or create your account | Project List | Help
IEEE 802.15.4 subsystem Commit Details
Date: | 2010-11-11 06:25:54 (9 years 1 month ago) |
---|---|
Author: | Werner Almesberger |
Commit: | 2337557a8c8a68db49013b30759be9ac8ca8135b |
Message: | atusd firmware now supports setting the TST pin. - common/io.h: TST is connected to P0_7 - include/at86rf230.h: added test mode registers REG_CONT_TX_0 (0x36) and REG_CONT_TX_1 (0x3d), with their values - atspi/atspi.c (set_test_mode): set or reset TST and the LED - atspi/atspi.c (reset_rf): leave test mode - atspi/atspi.c (test_mode): enter test mode - atspi/atspi.c (main): flash the LED when in test mode - include/atspi/ep0.h (enum atspi_requests), atspi/ep0.c (my_setup): new command ATSPI_TEST to enter test mode - include/atspi/ep0.h (EP0ATSPI_MINOR): bumped protocol to version 0.1 - include/at86rf230.h: corrected comment before TRX_CMD field to indicate that the register is called TRX_STATE |
Files: |
atusb/fw/atspi/atspi.c (5 diffs) atusb/fw/atspi/ep0.c (2 diffs) atusb/fw/common/io.h (1 diff) atusb/fw/include/at86rf230.h (3 diffs) atusb/fw/include/atspi/ep0.h (3 diffs) |
Change Details
atusb/fw/atspi/atspi.c | ||
---|---|---|
18 | 18 | #include "version.h" |
19 | 19 | |
20 | 20 | |
21 | static int in_test_mode = 0; | |
22 | ||
23 | ||
24 | static void set_test_mode(int on) | |
25 | { | |
26 | in_test_mode = on; | |
27 | if (on) { | |
28 | TST_MODE |= 1 << TST_BIT; | |
29 | TST = 1; | |
30 | LED_MODE |= 1 << LED_BIT; | |
31 | } else { | |
32 | TST = 0; | |
33 | TST_MODE &= ~(1 << TST_BIT); | |
34 | LED_MODE &= ~(1 << LED_BIT); | |
35 | LED = 0; | |
36 | } | |
37 | } | |
38 | ||
39 | ||
21 | 40 | void reset_rf(void) |
22 | 41 | { |
23 | 42 | int i; |
24 | 43 | |
44 | set_test_mode(0); | |
45 | ||
25 | 46 | nRST_RF = 0; |
26 | 47 | /* |
27 | 48 | * 11.4.12: min 625 ns. |
... | ... | |
32 | 53 | } |
33 | 54 | |
34 | 55 | |
56 | void test_mode(void) | |
57 | { | |
58 | set_test_mode(1); | |
59 | } | |
60 | ||
61 | ||
35 | 62 | static void init_io(void) |
36 | 63 | { |
37 | 64 | /* |
... | ... | |
44 | 71 | * nRST_RF push-pull 1 |
45 | 72 | * IRQ_RF open drain 1 (input) |
46 | 73 | * SLP_TR push-pull 0 |
74 | * TST open drain 0 | |
47 | 75 | * |
48 | 76 | * LED push-pull 0 (set up by boot loader) |
49 | 77 | * |
... | ... | |
63 | 91 | SLP_TR = 0; |
64 | 92 | SLP_TR_MODE |= 1 << SLP_TR_BIT; |
65 | 93 | |
66 | P0 = 1; /* IRQ_RF = 1; LED = 0; the rest is unused */ | |
94 | P0 = 1; /* IRQ_RF = 1; LED = 0; TST = Z; the rest is unused */ | |
67 | 95 | P3 = 0; |
68 | 96 | |
69 | 97 | #if 0 |
... | ... | |
104 | 132 | ep0_init(); |
105 | 133 | |
106 | 134 | while (1) { |
135 | if (in_test_mode) { | |
136 | i++; | |
137 | LED = !(i >> 13); | |
138 | } | |
107 | 139 | usb_poll(); |
108 | 140 | } |
109 | 141 | } |
atusb/fw/atspi/ep0.c | ||
---|---|---|
26 | 26 | |
27 | 27 | |
28 | 28 | extern void reset_rf(void); |
29 | extern void test_mode(void); | |
29 | 30 | |
30 | 31 | |
31 | 32 | #define debug(...) |
... | ... | |
151 | 152 | usb_send(&ep0, buf, 1, NULL, NULL); |
152 | 153 | return 1; |
153 | 154 | |
155 | case ATSPI_TO_DEV(ATSPI_TEST): | |
156 | debug("ATSPI_TEST\n"); | |
157 | test_mode(); | |
158 | return 1; | |
159 | ||
154 | 160 | case ATSPI_TO_DEV(ATSPI_REG_WRITE): |
155 | 161 | debug("ATSPI_REG_WRITE\n"); |
156 | 162 | nSS = 0; |
atusb/fw/common/io.h | ||
---|---|---|
30 | 30 | #define nRST_RF P2_0 |
31 | 31 | #define IRQ_RF P0_0 |
32 | 32 | #define SLP_TR P2_1 |
33 | #define TST P0_7 | |
33 | 34 | |
34 | 35 | #endif /* !IO_H */ |
atusb/fw/include/at86rf230.h | ||
---|---|---|
67 | 67 | REG_XAH_CTRL = 0x2c, |
68 | 68 | REG_CSMA_SEED_0 = 0x2d, |
69 | 69 | REG_CSMA_SEED_1 = 0x2e, |
70 | ||
71 | REG_CONT_TX_0 = 0x36, | |
72 | REG_CONT_TX_1 = 0x3d, | |
70 | 73 | }; |
71 | 74 | |
72 | 75 | /* --- TRX_STATUS [7] ------------------------------------------------------ */ |
... | ... | |
113 | 116 | TRAC_STATUS_INVALID = 7 |
114 | 117 | }; |
115 | 118 | |
116 | /* --- TRX_CMD [4:0] ----------------------------------------------------- */ | |
119 | /* --- TRX_STATE [4:0] ----------------------------------------------------- */ | |
117 | 120 | |
118 | 121 | #define TRX_CMD_SHIFT 0 |
119 | 122 | #define TRX_CMD_MASK 7 |
... | ... | |
285 | 288 | #define CSMA_SEED_1_SHIFT 0 |
286 | 289 | #define CSMA_SEED_1_MASK 7 |
287 | 290 | |
291 | /* --- REG_CONT_TX_0 [7:0] ------------------------------------------------- */ | |
292 | ||
293 | #define CONT_TX_MAGIC 0x0f | |
294 | ||
295 | /* --- REG_CONT_TX_1 [7:0] ------------------------------------------------- */ | |
296 | ||
297 | #define CONT_TX_MOD 0x00 /* modulated */ | |
298 | #define CONT_TX_M2M 0x10 /* f_CH-2 MHz */ | |
299 | #define CONT_TX_M500K 0x80 /* f_CH-0.5 MHz */ | |
300 | #define CONT_TX_P500K 0xc0 /* f_CH+0.5 MHz */ | |
301 | ||
288 | 302 | #endif /* !AT86RF230_H */ |
atusb/fw/include/atspi/ep0.h | ||
---|---|---|
23 | 23 | * |
24 | 24 | * host-> ATSPI_RF_RESET - - 0 |
25 | 25 | * ->host ATSPI_POLL_INT - - 1 |
26 | * host-> ATSPI_TEST - - 0 | |
26 | 27 | * |
27 | 28 | * host-> ATSPI_REG_WRITE value addr 0 |
28 | 29 | * ->host ATSPI_REG_READ - addr 1 |
... | ... | |
36 | 37 | * EP0 protocol: |
37 | 38 | * |
38 | 39 | * 0.0 initial release |
40 | * 0.1 addition of ATSPI_TEST | |
39 | 41 | */ |
40 | 42 | |
41 | 43 | #define EP0ATSPI_MAJOR 0 /* EP0 protocol, major revision */ |
42 | #define EP0ATSPI_MINOR 0 /* EP0 protocol, minor revision */ | |
44 | #define EP0ATSPI_MINOR 1 /* EP0 protocol, minor revision */ | |
43 | 45 | |
44 | 46 | #define HW_TYPE_100813 0 /* 100813 */ |
45 | 47 | |
... | ... | |
65 | 67 | ATSPI_RESET, |
66 | 68 | ATSPI_RF_RESET = 0x10, |
67 | 69 | ATSPI_POLL_INT, |
70 | ATSPI_TEST, | |
68 | 71 | ATSPI_REG_WRITE = 0x20, |
69 | 72 | ATSPI_REG_READ, |
70 | 73 | ATSPI_BUF_WRITE, |