summaryrefslogtreecommitdiff
path: root/FlightDataLv1Apr1999.mdwn
blob: b88da4f426db27e1c41398891142d77ac9972655 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# <a name="LV1 Flight Data from April 11th,"></a> LV1 Flight Data from April 11th, 1999

From the original flight of LV1, with the LV1 [[PIC17C74]] flight computer and no low pass filters (!) or anything on the LV1 IMU. Yeeeuch.

Here's some comments from the original assembly code on the raw data output:

    ; Whenever the TX buffer is empty, we simply fill it with the right byte for the
    ; data frame. The downlink uses the 1200bps modem chip run at 2x it's rated speed
    ; (using a 2x crystal). This gives us 2400bps which is actually 240Bps. We would like
    ; to send down status, pressure and temperature at a slow data rate (2 - 10 Hz) and
    ; the IMU data at as high a rate as possible. After struggling with the problem, this
    ; seems a pretty optimal solution for a single frame:
    ;
    ;   00 00 00 [T] [TP] [P] {IMU} {IMU} {IMU} {IMU} {IMU} {IMU}
    ;
    ; where {IMU} = [Z] [ZX] [X] [Y] [YA] [A] [B] [BG] [G]. Note that each sensor reading is
    ; 12 bits long so the upper nibbles are stored in a common byte ([ZX] for examples).
    ; Each frame is 60 bytes which gives a frame rate of 4 Hz. So we get header, Pressure
    ; and temperature at 4Hz. The IMU data we get at 6 IMU points * 4Hz = 24Hz. Note that
    ; this doesn't download FC status yet.

    ; The frame is 60 bytes long which at 2400bps, or 240bytes/sec, is 250ms
    ;
    ; NOTES: 1) ASSUMES BANK0.
    ;        2) UplinkFlg > 0 will cause the Uplink Command header to be sent
    ;           and at the end of ther header will set UplinkFlg = 0.
    ;    3) FCS = 1 sends down OneGee and BaseAlt. instead of P and T
    ;
    ; Normal: [00] [00] [0<FCS<F] [T]       [TP]         [P]       {IMU 1} ...   {IMU 6}

    First came the 6 byte header:

     Uplink command header:  00 00 [15] [OLD FCS] [UPLINK CMD] [NEW FCS]
     FCS = 1 (on pad, not armed) header: 00 00 [01] [OneGeeL] [OneGeeH:BaseAltH] [BaseAltL]
     NORMAL Header Frame - 00 00 [1<FCS<16] [T] [TP] [P]

    And then came the 54 byte IMU data:

     IMU Frame #1 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]
     IMU Frame #2 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]
     IMU Frame #3 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]
     IMU Frame #4 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]
     IMU Frame #5 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]
     IMU Frame #6 - [z] [zx] [x] [y] [ya] [a] [b] [bg] [g]