Skip to main content
Firmware Stable

Enabling and Disabling

The system as a whole is enabled and disabled by a start request. While a start request is active, the engine is started and kept running — the ignition relay is closed, failed starts are retried, and the generation follows the demand. When the request is released, the engine stops immediately: the ignition opens and the motor is released.

Start request sources

The request can come from a GPIO switch, from the CAN control message, or be permanently active (auto-start on power-up). The start_sel parameter selects which sources are honored; when both are selected they are combined with AND — both must request the start, and either one can stop the engine.

start_sel

  • 1 — CAN control message only
  • 2 — GPIO input (IN_gen) only
  • 3 — both, combined with AND

IN_gen

Selects the GPIO input for the start switch (wiring).

  • 0 — no input, the request is permanently active: the engine starts automatically when the controller powers up
  • 16–20 — GDIN0 through GDIN4
  • 32–39 — din1 through din8
  • 255 — no automatic start; the engine is started only by the gen command
Multi-master pairs

Each controller evaluates its own inputs — the start request is not forwarded between the peers. With GPIO in the start selection, the start switch must therefore be wired to both controllers (and IN_gen configured on both); a controller without the switch signal stays stopped. The CAN control message needs no such duplication — it is a broadcast that both controllers receive. See wiring.

Enabling from CAN

With CAN selected as a start source, the start request is bit 0 of the control message 0x560. The message must be sent periodically: it expires after /can/can_ctrl_tim (1 s by default), and by default an expired request stops the engine — see Multi-Master Operation for the timeout parameters and the high-availability option of keeping the last command instead.

Note that the charging limitation in the same message applies always, even when CAN is not a selected start source — start_sel gates only the starting.

Enabled is not the same as generating

Enabling runs the engine; how hard it generates is decided separately by the generation demand. With the system enabled and the demand at zero — for example a start request with charging limit 0 — the engine idles unloaded (MODE_IDLE, the motor freewheels). Raising the demand ramps the load up; dropping it to zero ramps the load away and returns to idle.

This is how a host keeps the ICE running while drawing no power, without stopping and restarting it.

tip

Releasing the start request stops the engine immediately, at whatever load it currently runs. For a gentle shutdown, first drop the demand to zero, let the rampdown finish (the engine reaches idle), and then release the request.

warning

There is no arming interlock: a start request that is already active is honored as soon as nothing blocks it. Powering up with the request active starts the engine, and the engine restarts automatically after a transient fault clears. Only the MODE_OVERVOLTAGE and MODE_MAX_TRIALS lockouts require the request to be released before a new start.