Subject: EFI/IFIS packaging Mov Map
From: paul
Date: 2/10/2015, 10:31 PM
To: AAA-rotaryengine



     I decided the Maximite is too slow to do both the EFI and the EFIS job
     so I intend to use two Maximites and one aux card for the sensors
     and injector transistors. The two Max's can share sensor data.

     The EFI is time critical so that is demanding
     of program execution time. The EFIS Maximite has all the time
     in the world as all it has to do is up date the VGA display every half
     second.


     Here is the BASIC source code for a simple EFIS program that update
     the VGA  every half second. This is just a clock but I hope you get
the idea.

     Mode 1 ' sets the screen rez

     SetTick 500, doit 'set the interrupt to every half second AKA 500 msec

     twiddle: ' The EFIS work would be done in here.
     Print " "; 'the half second hardware interrupt  occurs in here
     GoTo twiddle

     doit: 'upon half second hardware interrupt
     CLS                  'clear the VGA screen
     Locate 30, 30 'Put the clock at column 30 row 30 on the VGA
     Print Time$  'Print the battery backed up real time clock on the VGA
     IReturn  'interrupt routine done. go back to twiddle


     Pretty simple.

     The easiest hard ware package to build  is just a 4 inch length of
six by six aluminium extrusion
     with 3/16 wall that can be drilled and taped for end covers.

     Over kill on volume but lots of room for expansion.

     Paul Lamar



As you make progress I expect you will find that the only way to ensure
the efi works correctly will be to use an RTOS real time operating
system like other modern time critical systems use. An RTOS schedules
each event and makes sure everything happens on time. Your current
system waits for a signal to calculate rpm , map etc. If one signal
isn't there because of component failure, rmi or anything else the
system fails and you stop flying.

Kevin Alderman


I think it is cheaper in terms of programming time  and easier to use
multiple processors.  In fact I am thinking of adding a third Maximite and
run my moving map software on that.  I'll have a selector switch to see
which processor gets the VGA display.  This is the way they do it in
airliners.  I have plenty of room in the box.

There can be horns for things like low oil pressure. You switch off the
moving map and switch to the EFIS to assess the problem.  Each Maximite will
have 64 gig of storage on an SD card so a comprehensive history will be
available.  BTW that is tens times the size of the FAA Airport data base.

Robin got mad at me when I wrote this back in 1990. I had a booth at OSH and
was totally ignored other than by the FAA dropping by and telling me not to
sell it as people could use it to land in IFR conditions at non IFR airports
with out talking to a controller.  :) Of course it would behove you to
monitor the radio to make sure nobody else was landing on the same runway :)


Paul Lamar

Here is the Maximite GPS sentence parser source.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Demonstration of parsing the NMEA string produced by a GPS module
' Geoff Graham - July 2013
'
' All GPS modules are guaranteed to produce the GPRMC string
' See http://home.mira.net/~gnb/gps/nmea.html for details of the string
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'

max = 20                                  ' maximum nbr of params

DIM arg$(max)                             ' used to hold the data fields



OPEN "COM1:4800" AS #1



DO                                        ' loop forever

  GetGPSData                              ' get the next line

  IF arg$(0) = "GPRMC" THEN               ' GPRMC contains lat/long

    IF arg$(2) = "A" THEN                 ' "A" means locked on to satellites

      PRINT "Latitude = ";  LEFT$(arg$(3), 2); " "; MID$(arg$(3), 3);

      PRINT " "; arg$(4);

      PRINT "   Longitude = "; LEFT$(arg$(5), 3); " "; MID$(arg$(5), 4);

      PRINT " "; arg$(6)

    ELSE

      PRINT "GPS searching..."

    ENDIF

  ENDIF

LOOP





''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' subroutine to load the GPS data fields into the array arg$()

' returns with the array populated

SUB GetGPSData

  DO

    DO WHILE INPUT$(1, #1) <> "$" : LOOP  ' wait for the start

    FOR i = 0 TO max

      arg$(i) = ""                        ' clear ready for data

      DO                                  ' loops until a specific exit

        x$ = INPUT$(1, #1)                ' get the character

        IF x$ = "," THEN EXIT             ' new data item, increment i

        IF x$ = "*" THEN EXIT SUB         ' we have all the data so exit

        arg$(i) = arg$(i) + x$            ' add to the data

      LOOP                                ' keep going

    NEXT i                                ' increment i

  LOOP

END SUB

This is from the MMBASIC library.
http://geoffg.net/maximite.html


Paul Lamar

     The Rotary Engine News Letter. Powered by Linux.
     ACRE NL web site. http://www.rotaryeng.net/
     You Tube http://tinyurl.com/beqqxas
     Copyright 1998-2015 All world wide rights reserved.