Free Flight Computer

Home

Introduction

Specification

Photographs

Screenshots

Hardware

Software

Utilities

Physics

HISTORY

2000
2001
2002
2003
2004

Traces

Links

21/01/00        Project created from weather station.


25/01/00        Continued to re-cycle old code from Mandy.  Introduced EEALLOC include
                file and planned EEPROM storage.  DATA module also now sensible.


29/01/00        Finished updating main.asm; concluded eealloc.inc.


30/01/00        Moved eeprom routines into own module, along with update_baro.
                Add barograph and airtime timers
                Implemented update_baro
                Concluded updating old code - now well stuck into writing new stuff!


03/02/00        Added intialisation of variables from eeprom
                Tidied up data structures and moved some stuff to bank 1


31/03/00        Started tidying up variable references and banks

01/04/00        Finished tidying up (banks sorted etc.)
                Replaced PG polar curve with a HG VB one!
                Calculated polar curve values from guess of HG performance
                Added variables for altitude, vario, tas and temperaure!
                Corrected some variable names and 24 bit code
                Added R8, R9, R10 to keep life easy!

03/04/00        Implemented cmd0

04/04/00        Made wait_10ms available globally (for use by engineering module)
                Replaced ENG_ERR and NUMBER with R11 and R12 in UART routines
                Added R11, R12 to bank 0
                Concluded UART routines

09/04/00        Add R13, R14, R15 and R16 to bank 0
                Turned PRS_C into a signed 16 bit number
                Integrated required maths routines and finished calibrate routine

12/04/00        Implemented measurement routines

22/04/00        Added 32 bit norm, multiply, divide, add and subract routines together
                with R17-R28 in bank 1.  Needed for ...


25/04/00        Started building measure.asm node.


29/04/00        Converted over to PIC16C76 and built all nodes, split maths into two
                and added pagesel as so big (over 2K).

                Built first hex file ready for testing non-MMI routines.


14/05/00        Tested following maths routines:
                        multiplyfloat           OK
                        dividefloat             OK
                        fpm32                   OK
                        fpd32                   OK
                        fps32                   OK
                        fpa32                   OK
                        ln                      OK for positive results, WRONG on neg
                        power                   FAIL

                Power was because of simple error and also exp not working.
                However, complaining that node had changed - may have as .asm was
                later (possibly) than object.  Recompiled math.asm and rebuilt.


13/06/00        Altered break in ln function so works.


14/06/00        Found true fault in ln function - had pagesel after a btfsc in
                conv2float_signed routine.  So it was in fact a conv2float_unsigned
                routine!

                Restored break to how microchip did it


15/06/00        Found another bug in my nrm2424 routine - was checking R11 instead
                of R6 for sign.  Hence ln was wrong sign sometimes etc..

                Corrected paging problem in exp24 with some pagesels and moving
                _math2 section.  May be worth a tidy of pagesel sometime actually.

                All maths routines seem to work!  Yet to explicitely try all the
                float/int conversion routines but these will soon become apparent if
                they don't work.


19/06/00        Corrected small bug in conv2float_unsigned, was factor of two out
                Corrected some serious bugs iun conv2int_signed & _unsigned.
                Add labels to measure routines to aid testing


23/06/00        Altered measurement routine to work using floating point numbers now
                have the capability for adding and subtracting.  Much more accurate
                as well - was hopeless before.


27/06/00        Correct asipressure calculation for zero floating case result.


04/07/00        Corrected scaling constant in altitude calculation.
                Corrected timing in wait routines.
                Rename read_byte in measure.asm to read_adc_byte to avoid confusion
                with read_byte in ee.asm.


24/07/00        Started work on LCD code


16/10/00        Added cmd and data write routines and first 'FFC' test ...


21/10/00        Commented out sections of code so get up and running easier
                Corrected LCD routines (quite radically)
                Corrected interrupt init (enabled timer0 instead of periph interrupts)
                Correct timer interrupt code (was using bank 0 instead of bank 1)
                Added test beep to interrupt code for now
                Correct UART baud rate so correct for 4MHz crystal and not 16MHz!


22/10/00        Max UART speed on P16C73A is 2400 baud!  Set to this for now.
                Dump runs out of room in buffer (only 16 chars) - sort this sometime
                Uncommented more code in get-up-and-running process


10/12/00        Finally concluded why wasn't reading from adc correctly.  Was
                trampling on open-collector i/o by using bsf / bcf ops!

                Also corrected read_eeprom and write_eeprom routines which were
                initialising SDA output latch to high and not low.  Would have
                same problem :)


17/12/00        ADC still buggered - possibly.  Think may know why (again).
                Removed interface reset from code, still does it.  So checked timings
                again.

                Self-cal takes 452ms for a 20Hz update rate.

                Watchdog timer set to 576ms (1:32 prescaler).  However the prescaler
                may be reset on CLRWDT?

                Removed unnecessary clrwdt from code and changed those in main.asm
                to use a new routine (kick_dog) to restore the prescale value.

Back to top ...