diff --git a/DSTAT-temp/src/ads1255.c b/DSTAT-temp/src/ads1255.c index 2150910a6519425c1c66aec99d7d8aa3b62fcc1e..da80579ace3303be0fb5b9d458542e242573bb31 100644 --- a/DSTAT-temp/src/ads1255.c +++ b/DSTAT-temp/src/ads1255.c @@ -9,6 +9,7 @@ #include uint8_t buffer_iter = 0; +uint16_t sample_delay_ms_100div = 0; struct usart_spi_device spi_device_conf = { .id = IOPORT_CREATE_PIN(PORTE, 4) @@ -93,6 +94,64 @@ void ads1255_setup(uint8_t buff, uint8_t rate, uint8_t pga){ #if BOARD_VER_MAJOR == 1 && BOARD_VER_MINOR == 2 uint8_t command_buffer[6] = {0x50,0x03,buff,0x08,pga,rate}; // write reg 0, write 4 registers, analog buffer, MUX AIN0-AINCOM, pga, rate #endif + + //Stores propagation delay of current ADC sample rate in sample_delay_ms_100div in .01 ms + + switch (rate) + { + case ADS_DR_2_5: + sample_delay_ms_100div = 40022; + break; + case ADS_DR_5: + sample_delay_ms_100div = 20022; + break; + case ADS_DR_10: + sample_delay_ms_100div = 10022; + break; + case ADS_DR_15: + sample_delay_ms_100div = 6688; + break; + case ADS_DR_25: + sample_delay_ms_100div = 4022; + break; + case ADS_DR_30: + sample_delay_ms_100div = 3355; + break; + case ADS_DR_50: + sample_delay_ms_100div = 2022; + break; + case ADS_DR_60: + sample_delay_ms_100div = 1688; + break; + case ADS_DR_100: + sample_delay_ms_100div = 1022; + break; + case ADS_DR_500: + sample_delay_ms_100div = 222; + break; + case ADS_DR_1000: + sample_delay_ms_100div = 122; + break; + case ADS_DR_2000: + sample_delay_ms_100div = 72; + break; + case ADS_DR_3750: + sample_delay_ms_100div = 48; + break; + case ADS_DR_7500: + sample_delay_ms_100div = 35; + break; + case ADS_DR_15000: + sample_delay_ms_100div = 29; + break; + case ADS_DR_30000: + sample_delay_ms_100div = 25; + break; + default: + printf("#ERR: Invalid ADC data rate specified.\n\r"); + break; + } + usart_spi_select_device(&USARTE1, &spi_device_conf); usart_spi_transmit(&USARTE1, ADS_SDATAC); diff --git a/DSTAT-temp/src/ads1255.h b/DSTAT-temp/src/ads1255.h index 630ced5c3c55d11eb7ac3e3345f131427e7912bd..3b4cbe088b37f906a953e3e09af12ea496bf8ed8 100644 --- a/DSTAT-temp/src/ads1255.h +++ b/DSTAT-temp/src/ads1255.h @@ -62,6 +62,8 @@ #define ADS_MUX_VOLT 0x08 #define ADS_MUX_POT 0x18 +extern uint16_t sample_delay_ms_100div; + void ads1255_sync(void); void ads1255_init_pins(void); void ads1255_init_module(void);