Arianna autonomous DAQ firmware

Dependencies:   mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW

Committer:
uci1
Date:
Wed Jan 23 19:39:59 2013 +0000
Revision:
34:7b4c96e58b5f
Parent:
30:f869ed4bcc08
Child:
36:87865913ae6f
USB comms. Safety nets disabled. Afar and Iridium powered separately.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
uci1 1:e392595b4b76 1 #ifndef SN_SnConstants
uci1 1:e392595b4b76 2 #define SN_SnConstants
uci1 1:e392595b4b76 3
uci1 1:e392595b4b76 4 #include "SnBitUtils.h"
uci1 1:e392595b4b76 5
uci1 27:efc4d654b139 6 //#define CPUBAUD_SN 921600
uci1 27:efc4d654b139 7 #define CPUBAUD_SN 460800
uci1 25:57b2627fe756 8 //#define CPUBAUD_SN 115200
uci1 25:57b2627fe756 9
uci1 1:e392595b4b76 10 //
uci1 1:e392595b4b76 11 // constants
uci1 1:e392595b4b76 12 //
uci1 34:7b4c96e58b5f 13 static const bool kIridAfarPwrSame = false; // true if Iridium & Afar are on the same relay, false if not
uci1 1:e392595b4b76 14 static const uint32_t kBStime = 946684800u; // 1/1/2000 00:00:00 UTC
uci1 16:744ce85aede2 15 static const double kIridEpoch = 1173325835; // 2007-3-08 03:50:35 GMT (needs to be a double)
uci1 16:744ce85aede2 16 static const double kSecPerIridTick = 90e-3; // 90ms/tick
uci1 1:e392595b4b76 17 static const uint8_t kNchans = 4u;
uci1 1:e392595b4b76 18 static const uint8_t kNsamps = 128u;
uci1 1:e392595b4b76 19 static const uint8_t kNfpgaDacs = 4u;
uci1 3:24c5f0f50bf1 20 static const uint8_t kNplas = 5u;//72;
uci1 1:e392595b4b76 21 static const uint16_t kNoTrigPla = 0x0000u;
uci1 28:484943132bb0 22 static const uint8_t kNcomms = 2u;
uci1 8:95a325df1f6b 23 static const uint16_t kNvoltsAve = 500u; // must be greater than ~10 (but not checked. <2 will result in divide by 0)
uci1 16:744ce85aede2 24 static const float kAsfClkPrdUs = 8.535; // us -- change kAdcToMBtimeCut if this is <=2us
uci1 16:744ce85aede2 25
uci1 1:e392595b4b76 26 static const uint32_t kAbsMaxTimer = 1800u; // timers use integers counting us and can't go longer than ~ this many secs
uci1 1:e392595b4b76 27 // NOTE: these times below must be less than kAbsMaxTimer (this is not checked, however)
uci1 28:484943132bb0 28 static const uint32_t kDefTimeout = 120u; // seconds
uci1 28:484943132bb0 29 static const uint32_t kConnectTimeout = 120u; // seconds
uci1 28:484943132bb0 30 static const uint32_t kListenTimeout = 120u; // seconds
uci1 28:484943132bb0 31 static const uint32_t kConnectSBDTO = 180u; // seconds
uci1 1:e392595b4b76 32 static const uint32_t kCommWinLongPrdTk = 300u; // seconds
uci1 16:744ce85aede2 33 static const uint32_t kSecsPerDay = 3600u*24u;
uci1 16:744ce85aede2 34 static const uint32_t kSecsPerYear = kSecsPerDay*365u;
uci1 3:24c5f0f50bf1 35
uci1 28:484943132bb0 36 // safety nets
uci1 28:484943132bb0 37 static const float kMinForcePer = 0.05; // seconds -- safety net for max force trigger rate
uci1 28:484943132bb0 38 static const uint16_t kMaxThrottlePerMs = 60000; // ms -- max time between thermal triggers
uci1 28:484943132bb0 39 static const uint16_t kMaxBatVoltLowPwr = 25000; // ADCs -- probably futile, but try to prevent it from being in low power mode always
uci1 28:484943132bb0 40 static const uint32_t kMaxCommWinPeriod = 259200; // seconds -- max time between communication windows
uci1 28:484943132bb0 41 static const uint32_t kMinCommWinDur = 300; // seconds -- min communication window duration -- must be >= Ncomms*listen/connect timeout
uci1 28:484943132bb0 42 static const uint32_t kMaxWatchDogPer = 3600; // seconds -- max time before watchdog reset on idle
uci1 28:484943132bb0 43 static const uint32_t kMinWatchDogPer = 30; // seconds -- min time before watchdog reset on idle
uci1 28:484943132bb0 44
uci1 1:e392595b4b76 45 static const uint16_t kTotSamps = kNchans*kNsamps;
uci1 1:e392595b4b76 46 static const uint16_t kTotDacs = kNchans*kNfpgaDacs;
uci1 1:e392595b4b76 47
uci1 16:744ce85aede2 48 static const float kAdcToMBtimeCut = (kNsamps*kAsfClkPrdUs)+(kAsfClkPrdUs/2.0);
uci1 16:744ce85aede2 49
uci1 1:e392595b4b76 50 enum ESnTrgTypes {
uci1 16:744ce85aede2 51 kThmTrg=0,
uci1 16:744ce85aede2 52 kFrcTrg,
uci1 16:744ce85aede2 53 kExtTrg,
uci1 16:744ce85aede2 54 kAdcToMBflag,
uci1 16:744ce85aede2 55
uci1 1:e392595b4b76 56 kNumTrgs
uci1 1:e392595b4b76 57 };
uci1 16:744ce85aede2 58 // order must match ESnTrgTypes
uci1 16:744ce85aede2 59 static const uint8_t kTrgBW[kNumTrgs] = { BIT(0), BIT(1), BIT(2), BIT(7) };
uci1 1:e392595b4b76 60
uci1 1:e392595b4b76 61
uci1 1:e392595b4b76 62
uci1 0:664899e0b988 63 #endif // SN_SnConstants