<map version="0.7.1">
<node TEXT="FreeEMS">
<edge WIDTH="thin"/>
<cloud/>
<font NAME="SansSerif" SIZE="12"/>
<node TEXT="Resource management" FOLDED="true" POSITION="right">
<node TEXT="On chip"/>
<node TEXT="Off chip external devices"/>
</node>
<node COLOR="#000000" TEXT="Engine/RPM IC ISRs" POSITION="left">
<edge WIDTH="thin"/>
<font NAME="SansSerif" SIZE="12"/>
<node TEXT="engine/RPM signal interpretation" FOLDED="true">
<node TEXT="Update Angular Position"/>
<node TEXT="Update Primary Sync flag"/>
<node TEXT="Update Secondary Sync flag"/>
<node TEXT="Update phase information"/>
<node TEXT="Update RPM valid flag"/>
<node TEXT="Update RPM value"/>
<node TEXT="Update Delta RPM value"/>
<node TEXT="Update Delta Delta RPM value">
<icon BUILTIN="help"/>
</node>
</node>
<node TEXT="Scheduling" FOLDED="true">
<node TEXT="Ignition event scheduler"/>
<node TEXT="Main Injector event scheduler"/>
<node COLOR="#000000" TEXT="ADC syncronous sampling scheduler"/>
</node>
</node>
<node TEXT="Injector OC IRSs" FOLDED="true" POSITION="right">
<node TEXT="Main Injector control"/>
<node TEXT="Staged Injector control"/>
</node>
<node TEXT="RTI ISR" FOLDED="true" POSITION="left">
<node TEXT="ADC periodic sampling"/>
<node TEXT="RTC counting/updating" FOLDED="true">
<node TEXT="Increment 1/8 millisecond counter"/>
<node TEXT="Increment millisecond counter">
<node TEXT="Increment 1/10 of a second counter ">
<node TEXT="Increment second counter">
<node TEXT="Increment minute counter"/>
</node>
</node>
</node>
</node>
<node TEXT="Critical Timeout checking"/>
</node>
<node TEXT="SWI ISR (currently in main function)" FOLDED="true" POSITION="left">
<node TEXT="Ignition angle calculation"/>
<node TEXT="Ignition dwell calculation"/>
<node TEXT="Injection angle calculation"/>
<node TEXT="Main Injection pulse width calculation"/>
<node TEXT="Staged Injection pulse width calculation"/>
<node TEXT="Staged required flag set/unset"/>
</node>
<node TEXT="Main function" POSITION="right">
<node TEXT="Init code" FOLDED="true">
<node TEXT="Set PLL up"/>
<node TEXT="Set timers up"/>
<node TEXT="Set IO up"/>
<node TEXT="Zero counters and timers"/>
<node TEXT="Initialise variables that need it"/>
<node TEXT="Calculate runtime config from stored config if required"/>
<node TEXT="Setup and enable interrupts"/>
<node TEXT="Set up PWM"/>
<node TEXT="Check code checksum">
<icon BUILTIN="help"/>
</node>
</node>
<node TEXT="Main Loop" FOLDED="true">
<node TEXT="Serial communications"/>
<node TEXT="Non critical timeout checking"/>
<node TEXT="Syncronous ADC timeout sampling"/>
<node TEXT="Accessory control code"/>
</node>
</node>
<node TEXT="Timer OverFlow ISR" FOLDED="true" POSITION="right">
<font NAME="SansSerif" SIZE="12"/>
<node TEXT="Increment the 16 bit timer extension"/>
</node>
<node TEXT="LVI ISR" FOLDED="true" POSITION="left">
<node TEXT="Increment Low Voltage counter"/>
</node>
<node TEXT="MDC UF ISR" FOLDED="true" POSITION="right">
<node TEXT="Toggle &quot;User LED&quot;"/>
</node>
</node>
</map>
