Embedded Timing Libs
Overview
Use this skill for lightweight software timer libraries such as MultiTimer. The agent should confirm tick source, callback context, time units, wraparound behavior, and scheduler frequency before relying on timer callbacks.
When To Use
Use this skill when:
- The user wants to add or debug MultiTimer, software timers, timeout lists, periodic callbacks, or one-shot timers.
- Timers drift, fire too early/late, stop firing, fire repeatedly, or break across tick overflow.
Do not use this skill for hardware PWM/timer peripheral bring-up. Use embedded-peripheral-bringup for register-level timer issues.
First Questions
Ask for:
- Timer library and target runtime.
- Tick source and frequency.
- Callback context: main loop, RTOS task, ISR, or scheduler hook.
- Time units used by the library and application.
- Number of timers and longest expected uptime.
- Whether callbacks may start/stop other timers.
Integration Checklist
-
Confirm tick monotonicity. Timer logic needs a stable increasing timebase or explicit wraparound handling.
-
Match units. Milliseconds, ticks, microseconds, and RTOS ticks must not be mixed silently.
-
Define callback context. Timer callbacks must not block if they run in ISR or scheduler critical context.
-
Test one-shot and periodic behavior. Verify start, stop, restart, and callback ordering.
-
Test wraparound. Use simulated ticks or shortened counters to prove overflow behavior.
Common Failures
- Tick function returns seconds while timer expects milliseconds.
- Callback blocks in interrupt context.
- Timer list is modified while iterating without protection.
- Drift accumulates because periodic timers restart from callback time instead of scheduled time.
- Wraparound breaks after long uptime.
Verification
Before claiming timer integration works:
- State tick source, frequency, unit, callback context, and protection strategy.
- Confirm one-shot, periodic, cancel, restart, and wraparound behavior.
- Confirm callback execution time is acceptable.
- Confirm timer operations are safe from ISR/task contexts in use.
Example
User:
MultiTimer 定时回调偶尔不准。
Agent:
- Asks for tick source, units, callback context, and scheduling frequency.
- Checks unit conversion and whether callbacks block.
- Tests periodic drift and tick wraparound with a small counter.