What the Race Timer gives you
The Race Timer is a stopwatch inside the ECU. It writes to a channel called Race Time, in seconds with millisecond resolution, and you can use that channel anywhere a table or function lets you pick an input. Drag racers use it most, because boost, timing and traction strategies often need to follow time down the track rather than RPM or gear. Nothing stops you using it for circuit racing or anything else that benefits from an event clock.
How the timer behaves
- At ECU power-up the timer is stopped, reading 0.
- When your start conditions become true, it begins counting.
- If pause is enabled and its conditions become true, it freezes. When they stop being true, it carries on.
- When the reset conditions become true, it stops and returns to 0.
Two details trip people up. First, a value of 0 always means stopped. Second, if the start and reset conditions are both true at once, reset wins and the timer stays stopped. Design your conditions so they can't overlap by accident.
Building a condition
The Start, Pause and Reset tabs all work the same way.
| Setting | What it does | Our advice |
|---|---|---|
| Number of Operations | How many checks make up the condition. Unused ones are greyed out | Use as few as possible. Simple conditions are easier to debug |
| Channel | Click Select to search every ECU channel | Pick channels that change cleanly, like switches or speed |
| Comparison type | Equal, not equal, greater, less, or the "or equal to" versions | Greater-than on a small threshold avoids noise at exactly zero |
| Comparison value | The number the channel is compared with | Leave margin above sensor noise |
| Joiners (And / Or) | Link the operations together | Remember And is evaluated before Or |
And comes before Or
If you mix joiners, the ECU groups the And terms first, the same way multiplication comes before addition in math. So "A Or B And C" is read as "A, or both B and C". If you meant "(A or B), and C", restructure the operations so the logic can't be misread.
Pause and reset
The pause condition is off by default, since most people never need it. Tick Enable Pause Condition on the Pause tab if you do, and build it like a start condition. The Reset tab is set up identically, just with conditions that mean the run is over.
Worked example: a drag car
Here's the kind of logic we'd use. The exact channels depend on how your car is wired.
- Start: the car has left the line. For example, vehicle speed greater than a few mph, or your transbrake or launch button input switching off.
- Reset: the run is over and the car is stopped. For example, vehicle speed back near zero and engine speed down near idle.
With Race Time counting from the launch, you can put it on the axis of a boost target or ignition table and taper power in during the first second or two, then let it build as the tires hook. Pair it with launch control on the line and traction control down the track, and use boost control tables with time as an input.
Before you let Race Time drive anything important, make a few passes with it only logged. Confirm it starts where you expect and resets every time. A timer that fails to reset will start your next run partway down its tables.
Troubleshooting
| Symptom | Usually |
|---|---|
| Timer never starts | Reset condition is also true at the line, so reset wins |
| Timer starts in the staging lanes | Start threshold too low or triggered by sensor noise |
| Timer never returns to 0 | Reset condition can never be met, or uses the wrong channel |
| Logic behaves unexpectedly | Mixed And/Or joiners being evaluated And-first |
For other time-based logic, look at generic timers. Want help building a strategy for your car? Talk to us.




