ZombieVerter Software Overview
Firmware Version 2.30A-
The ZombieVerter firmware is written in C and C++. The main control loop runs off a hardware timer that triggers every millisecond. It then decides whether to run 1ms, 10ms or 100ms routines.
Support for different drive train components is provided through a number of base classes and derived "drivers" for specific components. Base classes include:
- Vehicle
- Inverter
- Charger
- Shunt (limited support)
- Gear Lever
- Transmission
- BMS
- On Board Charger
- DC to DC Converter
One Millisecond Routines
The 1ms routines are currently concerned with high speed software control of some drive-train components.
Ten Millisecond Routines
The 10ms routines provide the main vehicle operating mode (opcode) state machine, see below.
Calls are made here to the various supported components.
One Hundred Millisecond Routines
The 100ms routines are mainly concerned with managing the charging of the vehicle's traction battery pack(s).
Calls are made here to the various supported components.
Operating Mode State Machine
The main vehicle operating mode is run from a 10ms timer (derived from the 1ms hardware timer). The vehicle states are:
- MOD_OFF
- MOD_PRECHARGE
- MOD_PCHFAIL
- MOD_CHARGE
- MOD_RUN
The state transitions follow the state diagram overview shown below (this is an overview and not meant to describe some of the intricacies of the software flow).

Serial Interface
The ZombieVerter firmware provides control and reporting on a serial UART interface. One use of this interface is to connect to a web-interface ESP8266 form factor daughter board (EPS32 boards are also supported).
The serial interface provides a simple command and control protocol that includes:
- JSON send/receive of ZombieVerter parameters
- CANBus mapping configuration
- Firmware updates