Hi, from my understanding, for a multi-cylinder upgrade, the NanoEFI would need the following additions:
Fuel injector 16-bit timer + control pin + driver + connector & CDI 16-bit timer + control pin + driver + connector.
These all have a cost in terms of component count & PCB space, and are needed for each additional cylinder.
No single NanoEFI version would satisfy all users if it designed for too many or too few cylinders for their purpose.
I propose dedicating the NanoEFI's outputs to drive the common components such as fuel pump + something else.
Then use a daughter-board for each cylinder, with a PIC16F18424 (2 x 16-bit timers @ 32MHz for under 1 USD) with drivers for the fuel injector & CDI.
On boot, the NanoEFI just needs to look-up a config for the relative delay each cylinder has from main timing pulse, then send that 'offset' to each daughter board to incorporate that offset in its timers.
The NanoEFI does the calculations as at present then sends the same fuel_delay, fuel_duration, spark_delay, spark_duration numbers to each daughter-board by I2C or SPI.
Then sends the timing pulse to them all when appropriate. The NanoEFI does not need to be interrupted by the fuel/spark timing.
If desired, it can send updated numbers at any time.
Each daughter board just listens for new numbers, adds its offset, runs its timers & outputs when appropriate.
This will scale to any number of cylinders (W16?) without any additional stress or compromise of the NanoEFI board.
It also means you only need to make one version of the NanoEFI and one version of the daughter board.
Users only need to pay for the components their configuration needs & they can have odd firing orders like staggered-big-bang.
You can migrate your EFI from a one machine to another. Any accidental frying of a daughter board won't write-off the whole NanoEFI.
Lastly, you can easily just add another daughter board for common injectors like boost fuel, H2O, N2O etc.
Fuel injector 16-bit timer + control pin + driver + connector & CDI 16-bit timer + control pin + driver + connector.
These all have a cost in terms of component count & PCB space, and are needed for each additional cylinder.
No single NanoEFI version would satisfy all users if it designed for too many or too few cylinders for their purpose.
I propose dedicating the NanoEFI's outputs to drive the common components such as fuel pump + something else.
Then use a daughter-board for each cylinder, with a PIC16F18424 (2 x 16-bit timers @ 32MHz for under 1 USD) with drivers for the fuel injector & CDI.
On boot, the NanoEFI just needs to look-up a config for the relative delay each cylinder has from main timing pulse, then send that 'offset' to each daughter board to incorporate that offset in its timers.
The NanoEFI does the calculations as at present then sends the same fuel_delay, fuel_duration, spark_delay, spark_duration numbers to each daughter-board by I2C or SPI.
Then sends the timing pulse to them all when appropriate. The NanoEFI does not need to be interrupted by the fuel/spark timing.
If desired, it can send updated numbers at any time.
Each daughter board just listens for new numbers, adds its offset, runs its timers & outputs when appropriate.
This will scale to any number of cylinders (W16?) without any additional stress or compromise of the NanoEFI board.
It also means you only need to make one version of the NanoEFI and one version of the daughter board.
Users only need to pay for the components their configuration needs & they can have odd firing orders like staggered-big-bang.
You can migrate your EFI from a one machine to another. Any accidental frying of a daughter board won't write-off the whole NanoEFI.
Lastly, you can easily just add another daughter board for common injectors like boost fuel, H2O, N2O etc.