rp2: Correct bit access for rp2_state_machine_init. #18625
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If you call
rp2.StateMachine.init()withpull_thresh=32it will overwrite theFJOIN_TXbit in theSMx_SHIFTCTRLregister. This PR fixes that issue.Summary
I had a PIO program in which the RXFIFO was not working. I traced it down to
asm_pio_override_shiftctrl()shifting the high bit of mypull_threshargument of 32 into the adjoining bit 30 (FJOIN_TX) of theSMx_SHIFTCTRLregister. A threshold of 32 should be encoded as a 0 in bits 29:25 of this register.This PR uses the bit mask provided as an argument to
asm_pio_override_shiftctrl()to ensure that bits outside the field don't get stepped on.Testing
I tested this with an RP2350 board and a Segger JLINK to ensure that the values in the register were correct.