|
16 | 16 | #define ws2812_wrap 3 |
17 | 17 | #define ws2812_pio_version 0 |
18 | 18 |
|
19 | | -#define ws2812_T1 2 |
20 | | -#define ws2812_T2 5 |
21 | | -#define ws2812_T3 3 |
| 19 | +#define ws2812_T1 3 |
| 20 | +#define ws2812_T2 3 |
| 21 | +#define ws2812_T3 4 |
22 | 22 |
|
23 | 23 | static const uint16_t ws2812_program_instructions[] = { |
24 | 24 | // .wrap_target |
25 | | - 0x6221, // 0: out x, 1 side 0 [2] |
26 | | - 0x1123, // 1: jmp !x, 3 side 1 [1] |
27 | | - 0x1400, // 2: jmp 0 side 1 [4] |
28 | | - 0xa442, // 3: nop side 0 [4] |
| 25 | + 0x6321, // 0: out x, 1 side 0 [3] |
| 26 | + 0x1223, // 1: jmp !x, 3 side 1 [2] |
| 27 | + 0x1200, // 2: jmp 0 side 1 [2] |
| 28 | + 0xa242, // 3: nop side 0 [2] |
29 | 29 | // .wrap |
30 | 30 | }; |
31 | 31 |
|
@@ -72,16 +72,16 @@ static inline void ws2812_program_init(PIO pio, uint sm, uint offset, uint pin, |
72 | 72 | #define ws2812_parallel_wrap 3 |
73 | 73 | #define ws2812_parallel_pio_version 0 |
74 | 74 |
|
75 | | -#define ws2812_parallel_T1 2 |
76 | | -#define ws2812_parallel_T2 5 |
77 | | -#define ws2812_parallel_T3 3 |
| 75 | +#define ws2812_parallel_T1 3 |
| 76 | +#define ws2812_parallel_T2 3 |
| 77 | +#define ws2812_parallel_T3 4 |
78 | 78 |
|
79 | 79 | static const uint16_t ws2812_parallel_program_instructions[] = { |
80 | 80 | // .wrap_target |
81 | 81 | 0x6020, // 0: out x, 32 |
82 | | - 0xa10b, // 1: mov pins, !null [1] |
83 | | - 0xa401, // 2: mov pins, x [4] |
84 | | - 0xa103, // 3: mov pins, null [1] |
| 82 | + 0xa20b, // 1: mov pins, !null [2] |
| 83 | + 0xa201, // 2: mov pins, x [2] |
| 84 | + 0xa203, // 3: mov pins, null [2] |
85 | 85 | // .wrap |
86 | 86 | }; |
87 | 87 |
|
@@ -111,7 +111,6 @@ static inline void ws2812_parallel_program_init(PIO pio, uint sm, uint offset, u |
111 | 111 | pio_sm_config c = ws2812_parallel_program_get_default_config(offset); |
112 | 112 | sm_config_set_out_shift(&c, true, true, 32); |
113 | 113 | sm_config_set_out_pins(&c, pin_base, pin_count); |
114 | | - sm_config_set_set_pins(&c, pin_base, pin_count); |
115 | 114 | sm_config_set_fifo_join(&c, PIO_FIFO_JOIN_TX); |
116 | 115 | int cycles_per_bit = ws2812_parallel_T1 + ws2812_parallel_T2 + ws2812_parallel_T3; |
117 | 116 | float div = clock_get_hz(clk_sys) / (freq * cycles_per_bit); |
|
0 commit comments