Here ya go :
- ------------ Current Core Vars ------------
- 2 IAT
- 2 CHT
- 2 TPS
- 2 EGO (lambda actual)
- 2 MAP
- 2 AAP
- 2 BRV
- 2 MAT
- 2 EGO2 (lambda actual)
- 2 IAP
- 2 MAF
- 2 DMAP
- 2 DTPS
- 2 RPM
- 2 DRPM
- 2 DDRPM
- ------------ Current Derived Vars ------------
- 2 LoadMain
- 2 VEMain
- 2 Lambda (target)
- 2 AirFlow
- 2 densityAndFuel
- 2 BasePW
- 2 IDT
- 2 ETE
- 2 TFCTotal
- 2 FinalPW
- 2 RefPW
- ------------ Suggested Definites --------------
- Ignition advance base
- Dwell
- Time - See below
- Datalog sequence number incremented per log sent - 8 bits is enough, only looking for discontinuity anyway
- Spare variable fields to be somehow user configurable without code change 4 x 16 bits enough?)
- Flag vars = bit fields = on/off or yes/no or 0/1 for specific states of various things
- ----------- Specific Flags ------------
- Fully closed throttle on/off
- Fully open throttle on/off
- Fuel pump on/off
- AC input on/off
- AC output on/off
- Brake on/off
- Clutch on/off
- Idle bypass on/off
- Box in neutral on/off
- VVT - fixed - on/off
- VICS - fixed - on/off
- Power steer on/off
- Fans (1 or 2?) on/off
- CEL (how many) on/off
- Primary sync on/off
- Secondary sync on/off
- What else? Go nuts... I can only say no :-)
- Bank left/right of a V engine for the entire log
- ------------ Suggested To Be Discussed ------------
- Injection advance figures - v twin, siamese, standard, all to be considered, may require two fields.
- TFC - per algorithm ?
- ------------ Non core, but desirable ---------------
- Idle valve Duty - should be generic enough to cover stepper and pwm, ie, not sure if duty is the right term
- Knock count
- Knock level
- Vehicle speed sensor
- Boost control duty
- Cooling fan duty (1 or 2)
- VVT angle value or duty value or both
- EGT sensor
- Fuel pressure
- Fuel temperature
- All fuel pulsewidths
- All ign advances
- Staged pulsewidth
- Timing error
- O2 Correction level
- Trigger input angle logging - primary and secondary
- What else? Go nuts... I can only say no :-)
Bit fields are cheap, so there should be more than enough of those to cater into the future. Word fields are expensive, so we should think carefully about what to include and what not to include.
I think the structures used need some rework. I'd like to migrate the rpms and delta map out of core vars and replace them with ADC figures that correspond to the raw ADC array. I think some of the stuff in derived vars doesn't belong there too... We will also need some sort of accessory output struct or similar. Finally, I think it would be nice to have them all 16 fields long such that it is easy to mask them off on an individual basis for the configurable log.
Some sort of internal running time stamp - perhaps add another clock that incs when some other rolls over? or perhaps just use the 32 bit ECT for this? Or maybe we should use a real time value from the clocks section so we have a time frame for everything.
Additionally, the following fields are also available :
RAW ADCs (useful to see noise pre averaging) :
- 2 IAT
- 2 CHT
- 2 TPS
- 2 EGO
- 2 BRV
- 2 MAP
- 2 AAP
- 2 MAT
- 2 EGO2
- 2 IAP
- 2 MAF
- 2 SpareADC3
- 2 SpareADC4
- 2 SpareADC5
- 2 SpareADC6
- 2 SpareADC7
Clocks :
- 2 realTimeClockMain
- 2 realTimeClockMillis
- 2 realTimeClockTenths
- 2 realTimeClockSeconds
- 2 realTimeClockMinutes
- 2 millisToTenths
- 2 tenthsToSeconds
- 2 secondsToMinutes
- 2 timeoutADCreadingClock
ISR Latencies :
- 2 primaryInputLatency
- 2 secondaryInputLatency
- 2 Injector1Latency
- 2 Injector2Latency
- 2 Injector3Latency
- 2 Injector4Latency
- 2 Injector5Latency
- 2 Injector6Latency
- 2 DwellLatency
- 2 IgniteLatency
- 2 mathLatency ??
- 2 mathSampleTimeStamp [2] ??
(Can't remember what the story with those last math ones is)
Runtimes :
- 2 primaryInputLeadingRuntime
- 2 primaryInputTrailingRuntime
- 2 secondaryInputLeadingRuntime
- 2 secondaryInputTrailingRuntime
- 2 calcsRuntime
- 2 genCoreVarsRuntime
- 2 genDerivedVarsRuntime
- 2 mathTotalRuntime
- 2 mathSumRuntime
- 2 RTCRuntime
- 2 mainLoopRuntime
- 2 logSendingRuntime
- 2 serialISRRuntime
Counters :
- 2 UISRCounter
- 2 lowVoltISRCounter
- 2 lostCrankSyncCounter
- 2 lostCamSyncCounter
- 2 lostRPMValidityCounter
- 2 primaryTeethDroppedFromLackOfSync
- 2 primaryTeethCounter
- 2 secondaryTeethCounter
- 2 syncedADCreadingCounter
- 2 timeoutADCreadingCounter
- 2 calcsPerformedCounter
- 2 logsSentCounter
- 2 serialPacketOverLengthCounter
- 2 serialStartInsidePacketCounter
- 2 serialEscapePairMismatchCounter
- 2 serialChecksumMismatchCounter
- 2 serialNoiseErrorCounter
- 2 serialOverrunErrorCounter
- 2 serialFramingErrorCounter
- 2 serialParityErrorCounter
- 2 serialDebugUnsentCounter
Many thanks to Jared's doxygen efforts which made creating this post a lot easier!!
Many thanks to everyone that put ideas in too, keep them coming :-)
Fred.