A spark-ignition engine only makes power if every cylinder gets a strong spark at exactly the right moment. Modern ignition systems leave that job entirely to the ECU: it decides how long to charge each coil, when to fire it, and whether the combustion that followed actually happened. This guide walks through coil-on-plug hardware, dwell and timing control, how the ECU detects misfires from crankshaft speed, and how to diagnose the P0300 and ignition-coil code families on cars, motorcycles, gas trucks and small agricultural or utility engines.
From distributor to coil-on-plug
Older engines used one coil and a mechanical distributor to route high voltage to each plug. Wasted-spark systems then paired cylinders on a double-ended coil, firing both plugs at once (one on compression, one on exhaust). Today most engines use coil-on-plug (COP): a dedicated coil sits directly on each spark plug, removing plug leads and letting the ECU control every cylinder individually.
Each coil is a small transformer. The primary winding has relatively few turns and is fed from the battery or ignition supply. The secondary winding has many more turns and connects to the plug. A switching transistor, typically an IGBT, grounds the primary. It may sit inside the ECU or inside the coil itself (a “smart” coil with an integrated driver that only needs a low-current trigger signal).
Dwell: charging the coil
When the driver switches on, current builds up in the primary and stores energy in the coil’s magnetic field. The time the driver stays on is called dwell. When the driver switches off, the field collapses, the secondary produces a high-voltage pulse, and the spark jumps the plug gap.
The ECU calculates dwell from a map, mainly against battery voltage and engine speed. At low voltage (cranking) current rises more slowly, so dwell gets longer. At high rpm there is less time between events, so the ECU has to balance spark energy against available time. Too little dwell gives a weak spark and misfires under load; too much overheats the coil and driver. Dwell values are calibration-specific, so always use OEM data rather than “typical” numbers.

Spark timing: when to fire
Dwell ends at the spark advance angle, the number of crank degrees before top dead centre at which the plug fires. The air-fuel mixture needs time to burn, so the ECU fires early enough for peak cylinder pressure to arrive shortly after TDC. Base advance comes from maps indexed by rpm and load (air mass or manifold pressure), then corrections are applied for coolant and intake air temperature, knock control, idle-speed control, torque reduction for gear shifts or traction control, and catalyst heating after a cold start.
The ECU knows where the crank is from the crankshaft position sensor (CKP) and which stroke each cylinder is on from the camshaft position sensor (CMP). Without valid sync it cannot schedule sequential sparks, which is why a crank sensor fault often stops the engine completely.
How the ECU detects a misfire
OBD regulations require continuous misfire monitoring on road vehicles. The most common method uses the same crank sensor. The ECU measures how long each cylinder’s firing segment of the reluctor wheel takes to pass. A healthy combustion stroke accelerates the crankshaft, so its segment is short. If a cylinder misfires, the crank slows and that segment takes longer.

The ECU counts these events per cylinder over a fixed number of revolutions and compares them with two kinds of threshold:
- Emission-relevant misfire: enough to raise emissions above the legal limit. A code is stored and the MIL comes on, usually after the fault is confirmed on more than one drive cycle.
- Catalyst-damaging misfire: a rate high enough to overheat the catalytic converter. The MIL flashes and many ECUs cut fuel to the affected cylinder.
Rough roads, driveline shunt and flywheel tolerances can make the crank speed look uneven, so ECUs learn wheel variation (the “crank variation learn” behind P0315) and suspend detection on rough roads or during heavy deceleration. Some systems also sense ionisation current through the spark plug after the spark to confirm combustion directly.
Diagnosing misfires and coil faults
- Read freeze-frame data. Note rpm, load, coolant temperature and fuel trims when the misfire was recorded. Misfires only under load point toward ignition; misfires at idle with lean trims point toward air leaks or injectors.
- Use the misfire counters. Most scan tools show live per-cylinder counts (Mode $06 data on many vehicles). One cylinder repeating suggests a component on that cylinder; random misfires across all cylinders suggest something shared, such as fuel pressure, a vacuum leak, a MAF fault or low compression on several cylinders.
- Swap test. On COP engines, swap the coil (and then the plug) from the misfiring cylinder to another. If the misfire follows the part, you have found it. If it stays put, check the injector, compression and valve train.
- Inspect plugs and boots. Worn or wrongly gapped plugs need more voltage. Cracked boots and oil in the plug well let the spark track to ground, especially under boost.
- Coil circuit codes. P0351–P0362 and P2300-series codes mean the ECU has seen an electrical problem in the coil control circuit. Check power, ground and the trigger wire, and look for chafed harnesses before replacing the ECU.
Cars, bikes, gas trucks and machines
Passenger cars almost all use COP or smart coils. Motorcycles often use stick coils or twin-spark heads, and their high revs make dwell and plug condition critical. CNG and LNG trucks use spark ignition with high-energy coils, because gaseous fuel needs more ignition voltage. Small petrol engines on utility vehicles and garden or agricultural machinery may use magneto or simple inductive systems without misfire monitoring. Diesels have no spark, but many diesel ECUs use the same crank-speed analysis for cylinder balance and injector correction, and some report P030x codes as well.
Related fault codes (DTCs)
Generic SAE J2012 codes. Coil lettering, cylinder numbering and enabling conditions depend on the manufacturer, so confirm with service data.
| Code | Meaning | Typical causes |
|---|---|---|
| P0300 | Random/Multiple Cylinder Misfire Detected | Vacuum leak, low fuel pressure, MAF fault, worn plugs on several cylinders, low compression |
| P0301–P0312 | Cylinder 1–12 Misfire Detected | Faulty coil or plug on that cylinder, injector fault, low compression, valve problem |
| P0313 | Misfire Detected with Low Fuel | Fuel starvation at low tank level, weak pump pickup |
| P0314 | Single Cylinder Misfire (Cylinder Not Specified) | Same causes as a cylinder-specific misfire; ECU could not identify the cylinder |
| P0315 | Crankshaft Position System Variation Not Learned | Crank variation relearn not done after ECU, sensor or flywheel replacement |
| P0316 | Engine Misfire Detected on Startup (First 1000 Revolutions) | Fouled plugs, cold-start fuel delivery, coil weak at low voltage |
| P0320 | Ignition/Distributor Engine Speed Input Circuit | Speed signal wiring, failed sensor, interference |
| P0335 | Crankshaft Position Sensor “A” Circuit | Failed CKP sensor, wiring, damaged reluctor wheel |
| P0350 | Ignition Coil Primary/Secondary Circuit | Coil supply or control circuit fault |
| P0351–P0362 | Ignition Coil “A”–”L” Primary/Secondary Circuit | Open or shorted coil, broken trigger wire, poor connector, driver fault |
| P2300 / P2301 | Ignition Coil “A” Primary Control Circuit Low / High | Control wire shorted to ground / to voltage, internal coil fault |
| P2302 | Ignition Coil “A” Secondary Circuit | Cracked boot, carbon tracking, open secondary winding |
The P2300–P2329 range repeats the same three-code pattern (control low, control high, secondary) for coils A to J.
What it means for tuning
More boost or load means denser charge, which needs higher ignition voltage to jump the plug gap. Before a Stage 1 or Stage 2 file, fit plugs in good condition at the correct gap and heat range, check coils and boots, and clear any misfire history. A good calibration keeps misfire monitoring and knock control active and adjusts advance carefully against knock-sensor feedback instead of chasing a number. If misfires appear only after a tune, look at plug gap and coil condition before blaming the file.
Want a remap built around healthy ignition and safe timing? Order your tuning file from ECUFileMarket.