fix(pa01): Optimize key matrix polling with split-cycle scanning (v2.11)#7409
Open
richardclli wants to merge 5 commits into
Open
fix(pa01): Optimize key matrix polling with split-cycle scanning (v2.11)#7409richardclli wants to merge 5 commits into
richardclli wants to merge 5 commits into
Conversation
…interrupt-driven caching Split the 4-column matrix scan across 4 poll cycles (1 I2C read + 1 write per cycle instead of 4 reads + 4 writes). The output for each column is set in one cycle and read in the next (10ms later), eliminating the 10us settling delay. Interrupt-driven caching: when no pin-change interrupt occurs between polls, the I2C read is skipped and per-column cached results are reused. A forced full rescan every 250ms catches key releases that may not trigger an interrupt.
… to bus-only reset Add _track_i2c_error() helper used by both read and write paths. _Recover_i2c now only resets the I2C bus (deinit/init) — the AW9523B retains its register state, so chip re-config is unnecessary.
The bootloader calls pollKeys() only once (bl_keys.cpp:9) to detect held trims for entry condition. Split-scan approach needs 4 calls to populate all cached columns, so bootloader never sees the trims. Add #if defined(BOOT) guard: bootloader path does a synchronous 4-column scan in one call (same as original code). Firmware path keeps the split-scan optimization.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
V2.11 version of #7405