diff --git a/DSTAT-temp/src/ads1255.c b/DSTAT-temp/src/ads1255.c index 745271fee42579e1564cc351ac045cc13f1e0a5a..2150910a6519425c1c66aec99d7d8aa3b62fcc1e 100644 --- a/DSTAT-temp/src/ads1255.c +++ b/DSTAT-temp/src/ads1255.c @@ -244,6 +244,45 @@ int32_t ads1255_read_fast24(void){ input_buffer.uint[3] = 0x0; // printf("%x %x %x\n\r", input_buffer.uint[2],input_buffer.uint[1], input_buffer.uint[0]); + cpu_irq_restore(flags); + return input_buffer.int32; +} + +int32_t ads1255_read_single24(void){ + + union{ + uint8_t uint[4]; + int32_t int32; + } input_buffer; + + input_buffer.int32 = 0; + + irqflags_t flags; + flags = cpu_irq_save(); + + usart_spi_select_device(&USARTE1, &spi_device_conf); + usart_spi_transmit(&USARTE1, ADS_RDATA); + delay_us(6.5); + + for (int i = 2; i >= 0; --i){ + while (usart_data_register_is_empty(&USARTE1) == false) + ; + usart_put(&USARTE1, CONFIG_USART_SPI_DUMMY); + while (usart_rx_is_complete(&USARTE1) == false) + ; + input_buffer.uint[i] = usart_get(&USARTE1); + } + + while (!usart_tx_is_complete(&USARTE1)) + ; + usart_clear_tx_complete(&USARTE1); + usart_spi_deselect_device(&USARTE1, &spi_device_conf); + + if (input_buffer.uint[2] > 0x7F) + input_buffer.uint[3] = 0xFF; + else + input_buffer.uint[3] = 0x0; + cpu_irq_restore(flags); return input_buffer.int32; } \ No newline at end of file diff --git a/DSTAT-temp/src/ads1255.h b/DSTAT-temp/src/ads1255.h index f01d2d59895fd6a926af2332ffccf87d10a40f56..630ced5c3c55d11eb7ac3e3345f131427e7912bd 100644 --- a/DSTAT-temp/src/ads1255.h +++ b/DSTAT-temp/src/ads1255.h @@ -68,6 +68,7 @@ void ads1255_init_module(void); int16_t ads1255_read_fast(void); int16_t ads1255_read_fast_single(void); int32_t ads1255_read_fast24(void); +int32_t ads1255_read_single24(void); void ads1255_reg_read(uint8_t address); void ads1255_reset(void); void ads1255_setup(uint8_t buff, uint8_t rate, uint8_t pga); diff --git a/DSTAT-temp/src/config/conf_usart_spi.h b/DSTAT-temp/src/config/conf_usart_spi.h index b5360e4bebd36bb7f96271ee6d93506f7db1ffdd..a7593371de5af5d20c914ebdef32c19cb044591f 100644 --- a/DSTAT-temp/src/config/conf_usart_spi.h +++ b/DSTAT-temp/src/config/conf_usart_spi.h @@ -43,5 +43,6 @@ #ifndef CONF_USART_SPI_H_INCLUDED #define CONF_USART_SPI_H_INCLUDED +#define CONFIG_USART_SPI_DUMMY 0xFE #endif /* CONF_USART_SPI_H_INCLUDED */