Changes to ADC API
authorNathael Pajani <nathael.pajani@ed3l.fr>
Tue, 27 Sep 2016 22:10:53 +0000 (00:10 +0200)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Tue, 27 Sep 2016 22:10:53 +0000 (00:10 +0200)
apps/base/adc/main.c
apps/base/ledstrip/main.c
drivers/adc.c
include/drivers/adc.h

index 24364e0..98b5167 100644 (file)
@@ -60,7 +60,7 @@ const struct pio_config common_pins[] = {
  * ADC must be initialised prior to calls to adc_display() (it means that adc_on()
  *    must be called before using this function.
  * adc_num is an ADC channel number (integer between 0 and 7)
- *    use LPC_ADC_NUM(x) for channel selection.
+ *    use LPC_ADC(x) for channel selection.
  * returns ADC convertion value or negative value on error.
  */
 int adc_display(int adc_num, int uart_num)
@@ -107,15 +107,15 @@ int main(void)
 
        /* ADC Setup */
        adc_on(NULL);
-       adc_prepare_conversion_on_event((LPC_ADC_CHANNEL(9) | LPC_ADC_CHANNEL(10)),
+       adc_prepare_conversion_on_event((ADC_MCH(9) | ADC_MCH(10)),
                                                                        LPC_ADC_START_CONV_SOFT, LPC_ADC_SEQA, 0, 0);
 
        while (1) {
                /* ADC Test */
                adc_trigger_sequence_conversion(LPC_ADC_SEQA);
                msleep(10);
-               adc_display(LPC_ADC_NUM(9), UART0);
-               adc_display(LPC_ADC_NUM(10), UART0);
+               adc_display(LPC_ADC(9), UART0);
+               adc_display(LPC_ADC(10), UART0);
        }
        return 0;
 }
index 7b2cec6..e6ceb0d 100644 (file)
@@ -100,9 +100,9 @@ void mode_adc_colors(void)
        uint16_t red = 0, green = 0, blue = 0;
 
        /* Get ADC values */
-       adc_get_value(&red, LPC_ADC_NUM(2));
-       adc_get_value(&green, LPC_ADC_NUM(9));
-       adc_get_value(&blue, LPC_ADC_NUM(10));
+       adc_get_value(&red, LPC_ADC(2));
+       adc_get_value(&green, LPC_ADC(9));
+       adc_get_value(&blue, LPC_ADC(10));
        /* Set one pixel */
        ws2812_set_pixel(pixel++, ((red >> 4) & 0xFF), ((green >> 4) & 0xFF), ((blue >> 4) & 0xFF));
        msleep(5);
@@ -125,7 +125,7 @@ int main(void)
 
        /* ADC for potentiometer color settings */
        adc_on(NULL);
-       adc_start_burst_conversion(LPC_ADC_CHANNEL(2) | LPC_ADC_CHANNEL(9) | LPC_ADC_CHANNEL(10), LPC_ADC_SEQB);
+       adc_start_burst_conversion(ADC_MCH(2) | ADC_MCH(9) | ADC_MCH(10), LPC_ADC_SEQB);
 
        /* Led strip configuration */
        ws2812_config(&ws2812_data_out_pin);
index 1306d68..ae9cdb4 100644 (file)
@@ -41,7 +41,7 @@
 void (*adc_int_callback)(uint32_t) = NULL;
 void ADC_Handler(void)
 {
-       volatile struct lpc_adc* adc = LPC_ADC;
+       volatile struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t flags = adc->flags;
 
        if (adc_int_callback != NULL) {
@@ -57,13 +57,13 @@ void ADC_OVR_Handler(void) __attribute__ ((alias ("ADC_Handler")));
  * This function reads the conversion value directly in the data register and
  * always returns a value.
  * Return 0 if the value is a new one and no overrun occured.
- * Return -1 if channel does not exist
+ * Return -EINVAL if channel does not exist
  * Retuen 1 if the value is an old one
  * Return 2 if an overrun occured
  */
 int adc_get_value(uint16_t * val, uint8_t channel)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t save_reg = 0;
 
        if (channel >= NB_ADC_CHANNELS)
@@ -85,7 +85,7 @@ int adc_get_value(uint16_t * val, uint8_t channel)
 /* Start a conversion on the given channel (0 to 7) */
 void adc_start_convertion_once(uint8_t channel, uint8_t seq_num, uint8_t use_int)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t reg_val = 0;
 
        if (channel >= NB_ADC_CHANNELS) {
@@ -96,12 +96,12 @@ void adc_start_convertion_once(uint8_t channel, uint8_t seq_num, uint8_t use_int
        }
        
        /* Set conversion channel bit */
-       reg_val = LPC_ADC_CHANNEL(channel);
+       reg_val = ADC_MCH(channel);
 
        /*  Use of interrupts for the specified channel ? */
        if (use_int) {
                /* Set interrupt Bit */
-               adc->int_en = LPC_ADC_CHANNEL(channel);
+               adc->int_en = ADC_MCH(channel);
        } else {
                adc->int_en = 0;
        }
@@ -114,11 +114,11 @@ void adc_start_convertion_once(uint8_t channel, uint8_t seq_num, uint8_t use_int
 
 /* Start burst conversions.
  * channels is a bit mask of requested channels.
- * Use LPC_ADC_CHANNEL(x) (x = 0 .. 7) for channels selection.
+ * Use ADC_MCH(x) (x = 0 .. 7) for channels selection.
  */
 void adc_start_burst_conversion(uint16_t channels, uint8_t seq_num)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t reg_val = 0;
 
        if (seq_num >= NB_ADC_SEQUENCES) {
@@ -126,7 +126,7 @@ void adc_start_burst_conversion(uint16_t channels, uint8_t seq_num)
        }
        
        /* Set conversion channel bits and burst mode */
-       reg_val = (channels & LPC_ADC_CHANNEL_MASK);
+       reg_val = (channels & ADC_MCH_MASK);
        reg_val |= LPC_ADC_BURST;
 
        /*  Do not use of interrupts in burst mode. */
@@ -143,7 +143,7 @@ void adc_start_burst_conversion(uint16_t channels, uint8_t seq_num)
 }
 void adc_stop_burst_conversion(uint8_t seq_num)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        if (seq_num >= NB_ADC_SEQUENCES) {
                return;
        }
@@ -157,7 +157,7 @@ void adc_stop_burst_conversion(uint8_t seq_num)
 void adc_prepare_conversion_on_event(uint16_t channels, uint8_t event, uint8_t seq_num,
                                                                                uint8_t use_int, uint32_t mode)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t reg_val = 0;
 
        if (seq_num >= NB_ADC_SEQUENCES) {
@@ -165,7 +165,7 @@ void adc_prepare_conversion_on_event(uint16_t channels, uint8_t event, uint8_t s
        }
 
        /* Set conversion channel bits and burst mode */
-       reg_val |= (channels & LPC_ADC_CHANNEL_MASK);
+       reg_val |= (channels & ADC_MCH_MASK);
        /* Set conversion condition bits */
        switch (event) {
                case LPC_ADC_START_CONV_ADC_PINTRIG_0:
@@ -202,7 +202,7 @@ void adc_prepare_conversion_on_event(uint16_t channels, uint8_t event, uint8_t s
 /* Software trigger of the given configured sequence */
 void adc_trigger_sequence_conversion(uint8_t seq_num)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
 
        if (seq_num >= NB_ADC_SEQUENCES) {
                return;
@@ -220,7 +220,7 @@ void adc_trigger_sequence_conversion(uint8_t seq_num)
  */
 void adc_set_low_power(int lowpower_en)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        if (lowpower_en) {
                adc->ctrl |= LPC_ADC_LOW_POWER_EN;
        } else {
@@ -230,7 +230,7 @@ void adc_set_low_power(int lowpower_en)
 
 void adc_clk_update(void)
 {
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
        uint32_t main_clock = get_main_clock();
        uint32_t clkdiv = 0;
 
@@ -244,7 +244,7 @@ void adc_clk_update(void)
 void adc_on(void (*adc_callback)(uint32_t))
 {
        struct lpc_sys_config* sys_config = LPC_SYS_CONFIG;
-       struct lpc_adc* adc = LPC_ADC;
+       struct lpc_adc* adc = LPC_ADC_REGS;
 
        /* Disable ADC Interrupts */
        NVIC_DisableIRQ(ADC_SEQA_IRQ);
index 0b682ef..8f74185 100644 (file)
@@ -44,7 +44,7 @@
  * This function reads the conversion value directly in the data register and
  * always returns a value.
  * Return 0 if the value is a new one and no overrun occured.
- * Return -1 if channel does not exist
+ * Return -EINVAL if channel does not exist
  * Return 1 if the value is an old one.
  * Return 2 if an overrun occured
  */
@@ -57,7 +57,7 @@ void adc_start_convertion_once(uint8_t channel, uint8_t seq_num, uint8_t use_int
 
 /* Start burst conversions.
  * channels is a bit mask of requested channels.
- * Use LPC_ADC_CHANNEL(x) (x = 0 .. 11) for channels selection.
+ * Use ADC_MCH(x) (x = 0 .. 11) for channels selection.
  */
 void adc_start_burst_conversion(uint16_t channels, uint8_t seq_num);
 void adc_stop_burst_conversion(uint8_t seq_num);
@@ -114,7 +114,7 @@ struct lpc_adc
        volatile const uint32_t flags;  /* 0x068 : A/D Flags Register (R/ ) */
        volatile uint32_t trim;         /* 0x06C : A/D Trim Register (R/W) */
 };
-#define LPC_ADC         ((struct lpc_adc *) LPC_ADC_BASE)
+#define LPC_ADC_REGS      ((struct lpc_adc *) LPC_ADC_BASE)
 
 /* ADC Control register bits */
 #define LPC_ADC_CLK_MASK      0x0FF
@@ -122,9 +122,9 @@ struct lpc_adc
 #define LPC_ADC_LOW_POWER_EN  (0x01 << 10)
 #define LPC_ADC_CALIBRATION   (0x01 << 30)
 
-/* LPC_ADC_CHANNEL_* are also used for interrupt register */
-#define LPC_ADC_CHANNEL_MASK (0xFFF << 0)
-#define LPC_ADC_CHANNEL(x)  (0x01 << (x))
+/* ADC_MCH_* are also used for interrupt register */
+#define ADC_MCH_MASK (0xFFF << 0)
+#define ADC_MCH(x)  (0x01 << (x))
 #define LPC_ADC_START_CONV_EVENT(x) (((x) & 0x7) << 12)
 #define LPC_ADC_START_EDGE_FALLING  (0x0 << 18)
 #define LPC_ADC_START_EDGE_RISING   (0x1 << 18)
@@ -154,7 +154,7 @@ struct lpc_adc
 #define LPC_ADC_THRESHOLD_LEVEL_1  1
 
 /* For more readability when selecting a channel number */
-#define LPC_ADC_NUM(x)    (x)
+#define LPC_ADC(x)    (x)