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.
While debugging, I found that on RP2040 the first looped background write on a StateMachine would be garbled: It the first few outputs would be as expected, but then the data would go back to the start of the buffer.
I realized that this could be due to there already being a pending interrupt on this DMA channel that had occurred previously but never been acknowledged. In fact, by printing the value of
dma_hw->intr
before this, I could see that it was the case.After this change, both my special case reproducer from the related issue works, and the odd gaps in LED data transmission seen in the WIP code for TM1814 LEDs was fixed.
I never saw this problem on Feather RP2350, only on Metro RP2040, but I don't know why. It would depend on what had previously happened to the DMA channel that ends up allocated to this PIO state machine. Less likely, it could depend on details of the DMA peripheral that changed between the chips.
Closes: #9678
This PR was prepared so that 9.1.x could be selected as the base branch if desired, but I'm opening this PR with the base branch set to main.
Ping @ladyada