diff --git a/DSTAT-temp/src/experiment.c b/DSTAT-temp/src/experiment.c index 87344442801786deecc5afadfcfb587a9740595f..5996432507244af007bc075a68283f2d9c4ce6f9 100644 --- a/DSTAT-temp/src/experiment.c +++ b/DSTAT-temp/src/experiment.c @@ -34,6 +34,7 @@ volatile uint16_t tcf0period = 0; uint32_t skip_samples = 0; //Private function declarations +uint16_t set_timer_period(uint32_t period, volatile void *tc); static void precond_rtc_callback(uint32_t time); static void porte_int0_lsv(void); static void tcf0_ovf_callback(void); @@ -52,29 +53,6 @@ typedef void (*port_callback_t) (void); static port_callback_t portd_int0_callback; static port_callback_t portd_int1_callback; -void send_data_uint16(uint16_t data){ - /** - * Sends uint16 data over USB in order in memory (should be LSB first for AVR - little endian) - * - * @param data 16-bit data - * @return Nothing. - */ - udi_cdc_putc(((unsigned char *)(&data))[0]); - udi_cdc_putc(((unsigned char *)(&data))[1]); -} -void send_data_int32(int32_t data){ - /** - * Sends int32 data over USB in order in memory (should be LSB first for AVR - little endian) - * - * @param data 32-bit data - * @return Nothing. - */ - udi_cdc_putc(((unsigned char *)(&data))[0]); - udi_cdc_putc(((unsigned char *)(&data))[1]); - udi_cdc_putc(((unsigned char *)(&data))[2]); - udi_cdc_putc(((unsigned char *)(&data))[3]); -} - uint16_t set_timer_period(uint32_t period, volatile void *tc) { /** @@ -595,14 +573,20 @@ static void porte_int0_lsv(void){ /** * ISR for taking LSV measurements. */ + struct + { + uint16_t index; + int32_t result; + } data; - int32_t result = ads1255_read_fast24(); + data.result = ads1255_read_fast24(); static uint16_t last_value = 0; uint32_t current = TCC1.CNT; + data.index = (current+last_value)>>1; //DAC value is average of current and last timer - approximation of center of averaging window + printf("B\n"); - send_data_uint16((current+last_value)>>1); //DAC value is average of current and last timer - approximation of center of averaging window - send_data_int32(result); + udi_cdc_write_buf(&data, 6); last_value = (uint16_t)current; printf("\n"); @@ -766,11 +750,19 @@ void ca_experiment(uint16_t steps, uint16_t step_dac[], uint16_t step_seconds[]) } static void portd_int0_ca(void){ - int32_t data = ads1255_read_fast24(); + struct + { + uint16_t time1; + uint16_t time2; + int32_t current; + } data; + + data.time1 = TCC0.CNT; + data.time2 = RTC.CNT; + data.current = ads1255_read_fast24(); + printf("B\n"); - send_data_uint16(TCC0.CNT); - send_data_uint16(RTC.CNT); - send_data_int32(data); + udi_cdc_write_buf(&data, 8); printf("\n"); } @@ -932,10 +924,19 @@ uint8_t _swv_singledir (uint16_t dacindex, uint16_t dacindex_stop, uint16_t daci } //data output + struct + { + uint16_t lastindex; + int32_t forward; + int32_t reverse; + } data; + + data.lastindex = lastindex; + data.forward = forward; + data.reverse = reverse; + printf("B\n"); - send_data_uint16(lastindex); - send_data_int32(forward); - send_data_int32(reverse); + udi_cdc_write_buf(&data, 10); printf("\n"); } @@ -1080,10 +1081,19 @@ uint8_t _dpv_singledir (uint16_t dacindex, uint16_t dacindex_stop, uint16_t daci } //data output + struct + { + uint16_t lastindex; + int32_t forward; + int32_t reverse; + } data; + + data.lastindex = lastindex; + data.forward = forward; + data.reverse = reverse; + printf("B\n"); - send_data_uint16(lastindex); - send_data_int32(forward); - send_data_int32(reverse); + udi_cdc_write_buf(&data, 10); printf("\n"); } diff --git a/DSTAT-temp/src/experiment.h b/DSTAT-temp/src/experiment.h index 8b1ab536fe44ad9f463583f0c3f33f49d8889cf9..6597f120bc597b89ba4f937bd4ebf0a4916a64c9 100644 --- a/DSTAT-temp/src/experiment.h +++ b/DSTAT-temp/src/experiment.h @@ -75,9 +75,6 @@ extern uint16_t g_gain; extern uint8_t autogain_enable; -void send_data_uint16(uint16_t data); -void send_data_int32(int32_t data); -uint16_t set_timer_period(uint32_t period, volatile void *tc); void pot_init(void); void pot_set_gain(void); void volt_exp_start(void); diff --git a/DSTAT1.atsuo b/DSTAT1.atsuo index c409dd7e0b88439dfd9d1cdd2b17f4b8fcedb73f..dfef140a11114d069f60d9ca34d5957f7bf3edfd 100644 Binary files a/DSTAT1.atsuo and b/DSTAT1.atsuo differ