diff --git a/DSTAT/src/experiment.c b/DSTAT/src/experiment.c index e5ac5c92999177ecd33a930c47e51e632456a2df..e2dde886719a675d66828b4ed4bfff7bbdd10fd5 100644 --- a/DSTAT/src/experiment.c +++ b/DSTAT/src/experiment.c @@ -22,6 +22,7 @@ //Public variable definitions uint16_t g_gain = POT_GAIN_30k; +uint8_t g_short = 0; uint8_t autogain_enable = 1; //Private variables @@ -71,8 +72,8 @@ void experiment_handler(char command){ break; case 'G': //Gain - scanf("%u",&g_gain); - printf("#G: %u\r\n", g_gain); + scanf("%u%hhu",&g_gain, &g_short); + printf("#G: %u %u\r\n", g_gain, g_short); pot_set_gain(); //uses global g_gain, so no params break; @@ -225,16 +226,16 @@ void pot_init(void){ * @return Nothing. */ #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 1 - arch_ioport_set_port_dir(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, IOPORT_DIR_OUTPUT); - arch_ioport_set_port_dir(IOPORT_PORTD, PIN4_bm, IOPORT_DIR_OUTPUT); - arch_ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_dir(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, IOPORT_DIR_OUTPUT); + ioport_set_port_dir(IOPORT_PORTD, PIN4_bm, IOPORT_DIR_OUTPUT); + ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, PIN3_bm|PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); #endif #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 2 - arch_ioport_set_port_dir(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, IOPORT_DIR_OUTPUT); - arch_ioport_set_port_dir(IOPORT_PORTD, PIN4_bm, IOPORT_DIR_OUTPUT); - arch_ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, PIN3_bm|PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_dir(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, IOPORT_DIR_OUTPUT); + ioport_set_port_dir(IOPORT_PORTD, PIN4_bm, IOPORT_DIR_OUTPUT); + ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm|PIN6_bm|PIN7_bm, PIN3_bm|PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); #endif } @@ -247,101 +248,101 @@ void pot_set_gain(void){ switch (g_gain){ #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 1 case POT_GAIN_500M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 500M\n\r"); break; case POT_GAIN_30M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 30M\n\r"); break; case POT_GAIN_3M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 3M\n\r"); break; case POT_GAIN_300k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 300k\n\r"); break; case POT_GAIN_30k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 30k\n\r"); break; case POT_GAIN_3k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 3k\n\r"); break; case POT_GAIN_300: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 300\n\r"); break; case POT_GAIN_100: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 100\n\r"); break; #endif #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 2 case POT_GAIN_100M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 100M\n\r"); break; case POT_GAIN_30M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 30M\n\r"); break; case POT_GAIN_3M: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 3M\n\r"); break; case POT_GAIN_300k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, 0); printf("#INFO: 300k\n\r"); break; case POT_GAIN_30k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, 0); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 30k\n\r"); break; case POT_GAIN_3k: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 3k\n\r"); break; case POT_GAIN_0: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 0\n\r"); break; case POT_GAIN_100: - arch_ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); - arch_ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN6_bm|PIN7_bm, PIN6_bm|PIN7_bm); + ioport_set_port_level(IOPORT_PORTD, PIN4_bm, PIN4_bm); printf("#INFO: 100\n\r"); break; #endif @@ -359,13 +360,17 @@ void volt_exp_start(void){ * Connects measurement cell to rest of circuit. */ #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 1 - arch_ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm, PIN3_bm|PIN4_bm|PIN5_bm); + ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm, PIN3_bm|PIN4_bm|PIN5_bm); #endif #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 2 - arch_ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, PIN2_bm|PIN4_bm|PIN5_bm); + ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, PIN2_bm|PIN4_bm|PIN5_bm); #endif + if (g_short == 1) + ioport_set_port_level(IOPORT_PORTB, PIN3_bm, PIN3_bm); + else + ioport_set_port_level(IOPORT_PORTB, PIN3_bm, 0); } void volt_exp_stop(void){ @@ -373,11 +378,13 @@ void volt_exp_stop(void){ * Disconnects measurement cell. */ #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 1 - arch_ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN3_bm|PIN4_bm|PIN5_bm, 0); #endif #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 2 - arch_ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, 0); #endif + + ioport_set_port_level(IOPORT_PORTB, PIN3_bm, PIN3_bm); } #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR >= 2 @@ -385,7 +392,7 @@ void pot_exp_start(void){ /** * All switches open. */ - arch_ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, 0); + ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, 0); } @@ -393,7 +400,7 @@ void ocp_exp_start(void){ /** * U3C closed */ - arch_ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, PIN4_bm); + ioport_set_port_level(IOPORT_PORTB, PIN2_bm|PIN3_bm|PIN4_bm|PIN5_bm, PIN4_bm); } #endif diff --git a/DSTAT/src/experiment.h b/DSTAT/src/experiment.h index 75d5bda20a158e4c12cf1bcd4edf9385196283fe..7c171aea2be798167f29b4689a9807aecced69b7 100644 --- a/DSTAT/src/experiment.h +++ b/DSTAT/src/experiment.h @@ -73,6 +73,7 @@ #define RTC_COMPARE_INT_LEVEL RTC_COMPINTLVL_HI_gc extern uint16_t g_gain; +extern uint8_t g_short; extern uint8_t autogain_enable; void experiment_handler(char command);