Arianna autonomous DAQ firmware
Dependencies: mbed SDFileSystemFilinfo AriSnProtocol NetServicesMin AriSnComm MODSERIAL PowerControlClkPatch DS1820OW
Diff: main.cpp
- Revision:
- 4:a91682e19d6b
- Parent:
- 3:24c5f0f50bf1
- Child:
- 5:9cea89700c66
diff -r 24c5f0f50bf1 -r a91682e19d6b main.cpp --- a/main.cpp Tue Jul 31 04:59:16 2012 +0000 +++ b/main.cpp Thu Aug 02 05:42:47 2012 +0000 @@ -43,6 +43,9 @@ DigitalIn PIN_rst_a_sf(p15); // afar power DigitalOut PIN_afar_power(p16); +// batter voltage/current measurement +AnalogIn PIN_vADC1(p19); +AnalogIn PIN_vADC2(p18); // Lock daughter card registeres (during data readout). DigitalOut PIN_lockRegisters( p20 ); // iridium (SBD) power @@ -77,6 +80,7 @@ void SetConfigAndMakeOutputFile(); SnCommWin::ECommWinResult OpenCommWin(); void MakeOutputFile(const bool stopRunning=false); +void SetPower(const bool isCommWin); // // globals @@ -173,9 +177,12 @@ gForceTicker.detach(); gFirstEvt = true; + // (probably) power down comms and power up cards,amps + SetPower(false); + printf("Using config %s\r\n",gConf.GetLabel()); SetConfigAndMakeOutputFile(); // setup defaults in case no communication - + // // get config // @@ -304,13 +311,40 @@ } } SnSDUtils::OpenNewOutputFile(gConf.GetMacAddress(), - gConf.GetRun()); + gConf.GetRun(), + PIN_vADC1.read_u16(), + PIN_vADC2.read_u16()); printf("made output file with run %u\r\n",gConf.GetRun()); printf("filename=%s\r\n",SnSDUtils::GetCurFileName()); SnSDUtils::WriteConfig(SnSDUtils::GetCurFile(), gConf); } // +// power stuff +// +void SetPower(const bool isCommWin) { + if (isCommWin) { + PIN_turn_on_system = gConf.IsPoweredFor(SnConfigFrame::kCardComWin); + wait_ms(10); + PIN_turn_on_amps = gConf.IsPoweredFor(SnConfigFrame::kAmpsComWin); + wait_ms(10); + PIN_iridSbd_power = gConf.IsPoweredFor(SnConfigFrame::kIridComWin); + wait_ms(10); + PIN_afar_power = gConf.IsPoweredFor(SnConfigFrame::kAfarComWin); + wait_ms(10); + } else { + PIN_turn_on_system = gConf.IsPoweredFor(SnConfigFrame::kCardDatTak); + wait_ms(10); + PIN_turn_on_amps = gConf.IsPoweredFor(SnConfigFrame::kAmpsDatTak); + wait_ms(10); + PIN_iridSbd_power = gConf.IsPoweredFor(SnConfigFrame::kIridDatTak); + wait_ms(10); + PIN_afar_power = gConf.IsPoweredFor(SnConfigFrame::kAfarDatTak); + wait_ms(10); + } +} + +// // set configuration // void SetConfigAndMakeOutputFile() { @@ -508,15 +542,8 @@ SnSDUtils::CloseOutputFile(SnSDUtils::GetCurFile()); SnSDUtils::OpenExistingFile(SnSDUtils::GetCurFileName(), true); - // power system down - PIN_turn_on_system = 1; - PIN_turn_on_amps = 1; - wait_ms(20); - // power up the comm systems - PIN_iridSbd_power = 1; - wait_ms(10); - PIN_afar_power = 1; - wait_ms(10); + // (probably) power down cards,amps and power up comms + SetPower(true); const uint32_t conto = (gConf.GetCommWinDuration() < kConnectTimeout) ? gConf.GetCommWinDuration() : kConnectTimeout; @@ -582,17 +609,11 @@ } - // power down the comm systems - PIN_iridSbd_power = 0; - wait_ms(10); - PIN_afar_power = 0; - wait_ms(10); - // power system back up + // (probably) power down comms and power up cards,amps + SetPower(false); + gFirstEvt = true; - PIN_turn_on_system = 0; - wait_ms(10); - PIN_turn_on_amps = 0; - wait_ms(10); + // reset config with system powered (for DAC/PLA setting) if (gotNewConfig) { printf("calling SetConfigAndMakeOutputFile\r\n");