' {$STAMP BS2pe} ' {$PBASIC 2.5} ' {$PORT COM5} '************************************** '* BalloonSat Extreme Pin Definitions * '************************************** CLK CON 0 CS CON 1 Dat CON 2 Commit CON 3 Servo1 CON 4 Servo2 CON 5 Servo3 CON 6 GPS CON 7 Camera2 CON 8 Camera3 CON 9 Camera1 CON 10 Digital5 CON 11 Digital4 CON 12 Digital3 CON 13 Digital2 CON 14 Digital1 CON 15 '************************************** '* BalloonSat Extreme Variables * '************************************** Record VAR Word ByteVariable VAR Byte WordVariable VAR Word Index VAR Nib MemoryBank VAR Nib MaxAnalog VAR Nib I4800 CON 16572 ' 4800 baud inverted logic I2400 CON 16780 ' 2400 baud inverted logic '************************************** '* Update These Variables * '************************************** MissionWait CON 10000 ' pause (in ms) between getting data Analogs CON 2 ' number of analog voltages being recorded '************************************** '* Experiment Specific Variables * '************************************** '************************************** '* BalloonSat Extreme Program * '************************************** BalloonSat_Extreme: PAUSE 1000 ' let things stablize '************************************** '* Mission Prep Code * '************************************** Prep_Code: ' things that must be done upon power-up '************************************** '* Wait to Launch * '************************************** Wait_for_Commit: IF IN3 = 0 THEN Wait_for_Commit '************************************** '* Mission Flight Code * '************************************** Mission: FOR Record = 0 TO 2047 MemoryBank = 0 GOSUB Altitude GOSUB Analog GOSUB Digital PAUSE MissionWait NEXT GOTO End_BalloonSat_Extreme '************************************** '* BalloonSat Extreme Subroutines * '************************************** Altitude: SERIN GPS,I4800,10000,NoGPS,[WAIT ("GGA"),SKIP 42, DEC WordVariable] 'Etrex GPS ByteVariable = WordVariable.BYTE1 GOSUB RecordData ByteVariable = WordVariable.BYTE0 GOSUB RecordData GOTO EndAltitude NoGPS: ByteVariable = 0 GOSUB RecordData ByteVariable = 0 GOSUB RecordData EndAltitude: RETURN Analog: FOR Index = 1 TO Analogs LOOKUP Index,[$00,$8C,$CC,$9C,$DC,$AC,$EC,$BC,$FC],ByteVariable LOW CS PAUSE 10 SHIFTOUT Dat,CLK,1,[ByteVariable ] SHIFTIN Dat,CLK,2,[WordVariable\12] HIGH CS PAUSE 10 ByteVariable = WordVariable.BYTE1 GOSUB RecordData ByteVariable = WordVariable.BYTE0 GOSUB RecordData NEXT RETURN Digital: End_Digital: RETURN RecordData: MemoryBank = MemoryBank + 1 STORE MemoryBank WRITE Record,ByteVariable RETURN End_BalloonSat_Extreme: END