@@ -267,12 +267,12 @@ static inline pio_sm_config pio_tdm_in_swap_program_get_default_config(uint offs
267
267
268
268
static const uint16_t pio_tdm_inout_program_instructions [] = {
269
269
// .wrap_target
270
- 0xa922 , // 0: mov x, y side 1 [1]
271
- 0x4001 , // 1: in pins, 1 side 0
272
- 0x6001 , // 2: out pins, 1 side 0
273
- 0x0941 , // 3: jmp x--, 1 side 1 [1]
274
- 0x5001 , // 4: in pins, 1 side 2
275
- 0x7001 , // 5: out pins, 1 side 2
270
+ 0xa122 , // 0: mov x, y side 0 [1]
271
+ 0x7801 , // 1: out pins, 1 side 3
272
+ 0x5801 , // 2: in pins, 1 side 3
273
+ 0x0141 , // 3: jmp x--, 1 side 0 [1]
274
+ 0x4801 , // 4: in pins, 1 side 1
275
+ 0x6801 , // 5: out pins, 1 side 1
276
276
// .wrap
277
277
};
278
278
@@ -737,10 +737,8 @@ static inline void pio_tdm_inout_program_init(PIO pio, uint sm, uint offset, uin
737
737
pio_sm_exec (pio , sm , pio_encode_pull (false, false));
738
738
pio_sm_exec (pio , sm , pio_encode_mov (pio_y , pio_osr ));
739
739
} else {
740
- pio_sm_exec (pio , sm , pio_encode_set (pio_y , bits * channels - 1 ));
740
+ pio_sm_exec (pio , sm , pio_encode_set (pio_y , bits * channels - 2 ));
741
741
}
742
- // Initialize input shift register
743
- pio_sm_exec (pio , sm , pio_encode_in (pio_pins , 32 )); // Shift in first TDM frame
744
742
// Need to make OSR believe there's nothing left to shift out
745
743
pio_sm_exec (pio , sm , pio_encode_out (pio_osr , 32 ));
746
744
}
0 commit comments