Skip to content

F-41: Seesaw encoder read timing loses rotation #44

Open

Description

@bazauto

Severity: LOW · Effort: Small · Batch: 5 · Status: Code done in #21 (29b54d2), awaiting bench verification

Found in the second full review of the firmware. Recorded with the rest of the pass (F-19…F-44) in docs/REVIEW_REMEDIATION_PLAN_2.md, which is where its status is kept.

The double read compensates for a missing write → delay → read sequence (the Seesaw needs time
to prepare a response). Rotation during the 5 ms between reads is lost. Split each transaction
into a write, a short delay and a read, and drop the double read — bench-verify before merging.

Acceptance Criteria

  • Every Seesaw read is a write, a 500 µs wait (Adafruit's library uses 250 µs), and a
    read, each its own transaction. Every register is read once.
  • Bench, before merging: slow single clicks each register exactly one step, a fast
    spin tracks without lost steps, and the button still presses and releases. If reads
    fail or return garbage, the F-19 bound drops them, so the knob stays still rather than
    jumping.

Related: #9 (moving the display port off the legacy I2C driver). The encoder HAL uses the same legacy bus, so the two should be done with each other in mind.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions