From c6f52963dab00dd26733d8f6c6f5cd81bf271734 Mon Sep 17 00:00:00 2001 From: "Michael D. M. Dryden" <mdryden@chem.utoronto.ca> Date: Tue, 2 Feb 2016 18:10:10 -0500 Subject: [PATCH] Add pmt idle mode. --- DSTAT/src/experiment.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/DSTAT/src/experiment.c b/DSTAT/src/experiment.c index cae2900..857f8a5 100644 --- a/DSTAT/src/experiment.c +++ b/DSTAT/src/experiment.c @@ -48,6 +48,7 @@ static void ca_cca_callback(void); static void portd_int0_ca(void); static uint8_t _swv_singledir(uint16_t dacindex, uint16_t dacindex_stop, uint16_t dacindex_pulse_height, uint16_t dacindex_step, uint8_t direction); static uint8_t _dpv_singledir(uint16_t dacindex, uint16_t dacindex_stop, uint16_t dacindex_pulse_height, uint16_t dacindex_step, uint8_t direction); +static void pmt_idle(void); //interrupt callback setup typedef void (*port_callback_t) (void); @@ -101,6 +102,10 @@ void experiment_handler(char command){ dpv_experiment(p1,p2,u1,u2,u3,u4); break; + case 'M': //PMT idle mode - holds voltage at 0 V with no data output + pmt_idle(); + break; + #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR >= 2 case 'P': //potentiometry - time, OCP/poteniometry scanf("%u%hhu",&pct1, &o1); @@ -787,6 +792,23 @@ void pot_experiment(uint16_t time_seconds, uint8_t exp_type){ } #endif +void pmt_idle(void){ + max5443_set_voltage1(65535); + ioport_set_pin_level(PIN_POT_2ELECTRODE, 1); + delay_ms(100); + ioport_set_pin_level(PIN_POT_CE, 1); + + while (1){ + if (udi_cdc_is_rx_ready()){ + if (getchar() == 'a'){ + printf("##ABORT\n\r"); + // Doesn't disconnect control line to minimize time this is floating + return; + } + } + } +} + void ca_experiment(uint16_t steps, uint16_t step_dac[], uint16_t step_seconds[]){ /** * Performs a chronoamperometry experiment. -- GitLab