From 2f87e182d9f0b3c2856f62149371ad70b16148cf Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sun, 24 Feb 2019 10:49:47 -0700 Subject: [PATCH] altos: ADS124S0X driver compiles now --- src/drivers/ao_ads124s0x.c | 33 +++++++++++---------------------- src/telefireone-v2.0/ao_pins.h | 2 ++ 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/src/drivers/ao_ads124s0x.c b/src/drivers/ao_ads124s0x.c index 9ead34c1..299b519c 100644 --- a/src/drivers/ao_ads124s0x.c +++ b/src/drivers/ao_ads124s0x.c @@ -46,7 +46,6 @@ ao_ads124s0x_stop(void) { AO_ADS124S0X_SPI_BUS); } -/* static uint8_t ao_ads124s0x_reg_read(uint8_t addr) { @@ -55,14 +54,16 @@ ao_ads124s0x_reg_read(uint8_t addr) d[0] = addr | AO_ADS124S0X_RREG; d[1] = 0; ao_ads124s0x_start(); - ao_spi_duplex(d, d, 2, AO_ADS124S0X_SPI_BUS); + ao_spi_send(d, 2, AO_ADS124S0X_SPI_BUS); + ao_spi_recv(d, 1, AO_ADS124S0X_SPI_BUS); ao_ads124s0x_stop(); - PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d); + PRINTD(DEBUG_LOW, "read %x = %x\n", addr, d[0]); - return d[1]; + return d[0]; } +/* static void ao_ads124s0x_reg_write(uint8_t addr, uint8_t value) { @@ -76,21 +77,14 @@ ao_ads124s0x_reg_write(uint8_t addr, uint8_t value) ao_spi_send(d, 3, AO_ADS124S0X_SPI_BUS); ao_ads124s0x_stop(); -#if DEBUG & DEBUG_LOW - d[0] = addr | AO_ADS124S0X_RREG - d[1] = 0; - ao_ads124s0x_start(); - ao_spi_duplex(d, d, 2, AO_ADS124S0X_SPI_BUS); - ao_ads124s0x_stop(); - PRINTD(DEBUG_LOW, "readback %x %x\n", d[0], d[1]); -#endif } */ -// FIXME -// We need to be in continuous conversion mode, and use the WREG -// command to set the next conversion input while reading each -// which I don't see an example for elsewhere? +static void +ao_ads124s0x_isr(void) +{ + ao_wakeup(&ao_ads124s0x_drdy); +} static void ao_ads124s0x_setup(void) @@ -101,7 +95,7 @@ ao_ads124s0x_setup(void) if (devid != AO_ADS124S0X_ID_ADS124S06) ao_panic(AO_PANIC_SELF_TEST_ADS124S0X); - ao_exti_setup(AO_ADS124S0x_DRDY_PORT, AO_ADS124S0X_DRDY_PIN, + ao_exti_setup(AO_ADS124S0X_DRDY_PORT, AO_ADS124S0X_DRDY_PIN, AO_EXTI_MODE_FALLING|AO_EXTI_PRIORITY_HIGH, ao_ads124s0x_isr); @@ -166,11 +160,6 @@ ao_ads124s0x(void) } } -void ao_ads124s0x_isr(void) -{ - ao_wakeup(&ao_ads124s0x_drdy); -} - static struct ao_task ao_ads124s0x_task; static void diff --git a/src/telefireone-v2.0/ao_pins.h b/src/telefireone-v2.0/ao_pins.h index f6ee7c4b..a4b50617 100644 --- a/src/telefireone-v2.0/ao_pins.h +++ b/src/telefireone-v2.0/ao_pins.h @@ -123,6 +123,8 @@ #define AO_ADS124S0X_RESET_PORT (&stm_gpioc) #define AO_ADS124S0X_RESET_PIN 15 +#define AO_ADS124S0X_CHANNELS 4 /* how many inputs in use */ + /* * SPI Flash memory */ -- 2.30.2