|
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