Hi Peter,
I've used the default parameters for ADC_0, that are described in the
attached (RIOT/boards/samr21-xpro/include/periph_conf.h).

Hi Akshay,
Yes, i tried to let the sensor floats in air, with a 10bit precision, and
it gives me back a plausible value (less than 40/1024).
Than i tried to put it in mineral water, and it replied with a value next
to 1000/1024, that it seems to be correct.

Only in the soil (where it should works correctly) it gives back a no-sense
value...and i don't know why.


thanks a lot!

*best regards, *
*Alessandro*

2016-10-12 9:48 GMT+02:00 <devel-requ...@riot-os.org>:

> Send devel mailing list submissions to
>         devel@riot-os.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.riot-os.org/mailman/listinfo/devel
> or, via email, send a message with subject or body 'help' to
>         devel-requ...@riot-os.org
>
> You can reach the person managing the list at
>         devel-ow...@riot-os.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of devel digest..."
>
>
> Today's Topics:
>
>    1. Soil Moisture Sensor (ALESSANDRO NICOLI)
>    2. Re: Soil Moisture Sensor (Peter Kietzmann)
>    3. Re: Soil Moisture Sensor (Akshay Mishra)
>    4. I2C driver function to read a register with 16 bits       address
>       (Kees Bakker)
>    5. Re: alternative socket-api (Kaspar Schleiser)
>    6. Re: I2C driver function to read a register with 16 bits
>       address (Hauke Petersen)
>    7. Coding conventions amendment (Oleg Hahm)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Tue, 11 Oct 2016 16:32:22 +0200
> From: ALESSANDRO NICOLI <alessandro.nic...@studenti.unipr.it>
> To: RIoT Dev List <devel@riot-os.org>
> Subject: [riot-devel] Soil Moisture Sensor
> Message-ID:
>         <CAFsA-_2x_4gmfBn8KK7740SYFwx22hiCzpz2ayq
> ftkog6iw...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hi all,
> I'm trying to use a Soil moisture sensor with a Samr21-xpro and RIOT os.
> The sensor used is as follows :
>
> https://www.seeedstudio.com/Grove-Moisture-Sensor-p-955.html
>
>
> I have *4 soil jars (with different moisture concentrations)* that i'm
> gonna use for testing,  i've already tried to get moisture values with
> *Arduino
> Uno* and they seem to be acceptable.
> *For both, i used the built in ADC with 10 bits of resolution.*
>
> But when i try to use the samr21, it gets me always 330 as value (10 bits
> ADC).
> For the SAMR21* i used the default parameters for ADC_0*.
>
> There is a way to rectify the readings, or some kind of calibration to do?
>
>
> Thanks a lot,
> *best regards, *
> *Alessandro*
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.riot-os.org/pipermail/devel/attachments/
> 20161011/89c17d33/attachment-0001.html>
>
> ------------------------------
>
> Message: 2
> Date: Tue, 11 Oct 2016 16:46:21 +0200
> From: Peter Kietzmann <peter.kietzm...@haw-hamburg.de>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: Re: [riot-devel] Soil Moisture Sensor
> Message-ID: <f56b24b5-c67b-fac8-8321-0ced51274...@haw-hamburg.de>
> Content-Type: text/plain; charset="utf-8"
>
> Hi Alessandro,
>
> what are the default values for ADC_0 on the samr21-xpro board and which
> driver did you use?
>
> Best
> Peter
>
> Am 11.10.2016 um 16:32 schrieb ALESSANDRO NICOLI:
> > Hi all,
> > I'm trying to use a Soil moisture sensor with a Samr21-xpro and RIOT os.
> > The sensor used is as follows :
> >
> > https://www.seeedstudio.com/Grove-Moisture-Sensor-p-955.html
> >
> >
> > I have *4 soil jars (with different moisture concentrations)* that i'm
> > gonna use for testing,  i've already tried to get moisture values with
> *Arduino
> > Uno* and they seem to be acceptable.
> > *For both, i used the built in ADC with 10 bits of resolution.*
> >
> > But when i try to use the samr21, it gets me always 330 as value (10 bits
> > ADC).
> > For the SAMR21* i used the default parameters for ADC_0*.
> >
> > There is a way to rectify the readings, or some kind of calibration to
> do?
> >
> >
> > Thanks a lot,
> > *best regards, *
> > *Alessandro*
> >
> >
> >
> > _______________________________________________
> > devel mailing list
> > devel@riot-os.org
> > https://lists.riot-os.org/mailman/listinfo/devel
> >
>
> --
> Peter Kietzmann
>
> Hamburg University of Applied Sciences
> Dept. Informatik, Internet Technologies Group
> Berliner Tor 7, 20099 Hamburg, Germany
> Fon: +49-40-42875-8426
> Web: http://www.haw-hamburg.de/inet
>
>
> ------------------------------
>
> Message: 3
> Date: Tue, 11 Oct 2016 20:28:08 +0530
> From: Akshay Mishra <aks...@dspworks.in>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: Re: [riot-devel] Soil Moisture Sensor
> Message-ID:
>         <CABSY_Zsg8Q_x2-ADsCQQ9mAnR8FiPsBbAGDGPhfPBnn_
> 1ty...@mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Start with measuring the voltage value? Try giving some different analog
> input less than 3.3V
>
>
>
> On Tuesday, 11 October 2016, ALESSANDRO NICOLI <
> alessandro.nic...@studenti.unipr.it> wrote:
>
> > Hi all,
> > I'm trying to use a Soil moisture sensor with a Samr21-xpro and RIOT os.
> > The sensor used is as follows :
> >
> > https://www.seeedstudio.com/Grove-Moisture-Sensor-p-955.html
> >
> >
> > I have *4 soil jars (with different moisture concentrations)* that i'm
> > gonna use for testing,  i've already tried to get moisture values with
> *Arduino
> > Uno* and they seem to be acceptable.
> > *For both, i used the built in ADC with 10 bits of resolution.*
> >
> > But when i try to use the samr21, it gets me always 330 as value (10 bits
> > ADC).
> > For the SAMR21* i used the default parameters for ADC_0*.
> >
> > There is a way to rectify the readings, or some kind of calibration to
> do?
> >
> >
> > Thanks a lot,
> > *best regards, *
> > *Alessandro*
> >
>
>
> --
> *Akshay Mishra*
> *Chief Technology Officer*
> GSM: +91 98693 21611
> Skype: mishrakshay
> Office: +91 22 2500 3488
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.riot-os.org/pipermail/devel/attachments/
> 20161011/55e4b13d/attachment-0001.html>
>
> ------------------------------
>
> Message: 4
> Date: Tue, 11 Oct 2016 21:29:27 +0200
> From: Kees Bakker <k...@sodaq.com>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: [riot-devel] I2C driver function to read a register with 16
>         bits    address
> Message-ID: <ac4b8681-6b0e-3aeb-2f57-7be5d938f...@sodaq.com>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> Hi,
>
> The SHT2x I2C device has a register with a 16 bits address. If I'm correct
> we don't have a function in the I2C driver to do that. Right?
>
> Assuming we need to extend the driver API, what would be a good name
> for such a function?
>
> All I can come up with is i2c_read_regs2:
>
> /**
>   * @brief   Read multiple bytes from a register at the I2C slave with
> the given
>   *          address
>   *
>   * @param[in]  dev          I2C peripheral device
>   * @param[in]  address      bus address of the target device
>   * @param[in]  reg          the 16 bits register address on the
> targeted I2C device
>   * @param[out] data         array holding the received bytes
>   * @param[in]  length       the number of bytes to read into `data`
>   *
>   * @return                  the number of bytes that were read
>   * @return                  -1 on undefined device given
>   */
> int i2c_read_regs2(i2c_t dev, uint8_t address, uint16_t reg,
>                    char *data, int length);
>
> --
> Kees Bakker
> Founder
> SODAQ
> M. 0031617737165
> www.sodaq.com
>
>
>
> ------------------------------
>
> Message: 5
> Date: Tue, 11 Oct 2016 23:35:08 +0200
> From: Kaspar Schleiser <kas...@schleiser.de>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: Re: [riot-devel] alternative socket-api
> Message-ID: <ffaba4af-6161-02ce-1661-3adcfeb58...@schleiser.de>
> Content-Type: text/plain; charset=utf-8
>
> Hi,
>
> On 10/07/2016 03:49 PM, Alexander Aring wrote:
> > came across [0] today and remembers me that RIOT also plans some simple
> > "conn" API for a bsd socket alternative.
>
> Interesting concept.
>
> Unfortunately it relies on in-stack dynamic resource management (e.g.,
> "tcp_connect()" returns an integer as resource handle, which thus must
> be managed by the tcp implementation), which sock tries to avoid.
>
> Kaspar
>
>
> ------------------------------
>
> Message: 6
> Date: Wed, 12 Oct 2016 09:48:23 +0200
> From: Hauke Petersen <hauke.peter...@fu-berlin.de>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: Re: [riot-devel] I2C driver function to read a register with
>         16 bits address
> Message-ID: <41830aae-a9f4-3a05-5124-4c601df18...@fu-berlin.de>
> Content-Type: text/plain; charset=utf-8; format=flowed
>
> Hi Kees,
>
> you are right, the current interface does not support 16-bit registers.
> We are however overhauling the I2C interface as we speak, and the
> re-worked interface does have support for them (see [1]). Feel free to
> take a look and comment on the proposal!
>
> Cheers,
> Hauke
>
> [1] https://github.com/RIOT-OS/RIOT/pull/4926
>
>
> On 11.10.2016 21:29, Kees Bakker wrote:
> > Hi,
> >
> > The SHT2x I2C device has a register with a 16 bits address. If I'm
> > correct
> > we don't have a function in the I2C driver to do that. Right?
> >
> > Assuming we need to extend the driver API, what would be a good name
> > for such a function?
> >
> > All I can come up with is i2c_read_regs2:
> >
> > /**
> >  * @brief   Read multiple bytes from a register at the I2C slave with
> > the given
> >  *          address
> >  *
> >  * @param[in]  dev          I2C peripheral device
> >  * @param[in]  address      bus address of the target device
> >  * @param[in]  reg          the 16 bits register address on the
> > targeted I2C device
> >  * @param[out] data         array holding the received bytes
> >  * @param[in]  length       the number of bytes to read into `data`
> >  *
> >  * @return                  the number of bytes that were read
> >  * @return                  -1 on undefined device given
> >  */
> > int i2c_read_regs2(i2c_t dev, uint8_t address, uint16_t reg,
> >                   char *data, int length);
> >
>
>
>
> ------------------------------
>
> Message: 7
> Date: Wed, 12 Oct 2016 09:48:28 +0200
> From: Oleg Hahm <oliver.h...@inria.fr>
> To: RIOT OS kernel developers <devel@riot-os.org>
> Subject: [riot-devel] Coding conventions amendment
> Message-ID: <20161012074827.gf12...@hobbykeller.org>
> Content-Type: text/plain; charset="utf-8"
>
> Dear rolling IoTlers,
>
> as far I'm concerned it has been an undocumented coding convention so far
> to
> use `int` or `unsigned int` for iterator variables in a loop instead of
> fixed
> width integer types. Does anybody object to adding this to the coding
> conventions explicitly?
>
> Cheers,
> Oleg
> --
> The problem with a SQL security joke is that Sony don't get it.
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: signature.asc
> Type: application/pgp-signature
> Size: 801 bytes
> Desc: not available
> URL: <http://lists.riot-os.org/pipermail/devel/attachments/
> 20161012/c1f2f768/attachment.sig>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> devel mailing list
> devel@riot-os.org
> https://lists.riot-os.org/mailman/listinfo/devel
>
>
> ------------------------------
>
> End of devel Digest, Vol 44, Issue 10
> *************************************
>
/*
 * Copyright (C) 2014-2015 Freie Universit├Ąt Berlin
 *
 * This file is subject to the terms and conditions of the GNU Lesser
 * General Public License v2.1. See the file LICENSE in the top level
 * directory for more details.
 */

/**
 * @ingroup     boards_samr21-xpro
 * @{
 *
 * @file
 * @brief       Configuration of CPU peripherals for the Atmel SAM R21 Xplained
 *              Pro board
 *
 * @author      Thomas Eichinger <thomas.eichin...@fu-berlin.de>
 * @author      Hauke Petersen <hauke.peter...@fu-berlin.de>
 * @author      Peter Kietzmann <peter.kietzm...@haw-hamburg.de>
 */

#ifndef PERIPH_CONF_H_
#define PERIPH_CONF_H_

#include <stdint.h>

#include "cpu.h"
#include "periph_cpu.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief   External oscillator and clock configuration
 *
 * For selection of the used CORECLOCK, we have implemented two choices:
 *
 * - usage of the PLL fed by the internal 8MHz oscillator divided by 8
 * - usage of the internal 8MHz oscillator directly, divided by N if needed
 *
 *
 * The PLL option allows for the usage of a wider frequency range and a more
 * stable clock with less jitter. This is why we use this option as default.
 *
 * The target frequency is computed from the PLL multiplier and the PLL divisor.
 * Use the following formula to compute your values:
 *
 * CORECLOCK = ((PLL_MUL + 1) * 1MHz) / PLL_DIV
 *
 * NOTE: The PLL circuit does not run with less than 32MHz while the maximum PLL
 *       frequency is 96MHz. So PLL_MULL must be between 31 and 95!
 *
 *
 * The internal Oscillator used directly can lead to a slightly better power
 * efficiency to the cost of a less stable clock. Use this option when you know
 * what you are doing! The actual core frequency is adjusted as follows:
 *
 * CORECLOCK = 8MHz / DIV
 *
 * NOTE: A core clock frequency below 1MHz is not recommended
 *
 * @{
 */
#define CLOCK_USE_PLL       (1)

#if CLOCK_USE_PLL
/* edit these values to adjust the PLL output frequency */
#define CLOCK_PLL_MUL       (47U)               /* must be >= 31 & <= 95 */
#define CLOCK_PLL_DIV       (1U)                /* adjust to your needs */
/* generate the actual used core clock frequency */
#define CLOCK_CORECLOCK     (((CLOCK_PLL_MUL + 1) * 1000000U) / CLOCK_PLL_DIV)
#else
/* edit this value to your needs */
#define CLOCK_DIV           (1U)
/* generate the actual core clock frequency */
#define CLOCK_CORECLOCK     (8000000 / CLOCK_DIV)
#endif
/** @} */

/**
 * @name Timer peripheral configuration
 * @{
 */
#define TIMER_NUMOF         (2U)
#define TIMER_0_EN          1
#define TIMER_1_EN          1

/* Timer 0 configuration */
#define TIMER_0_DEV         TC3->COUNT16
#define TIMER_0_CHANNELS    2
#define TIMER_0_MAX_VALUE   (0xffff)
#define TIMER_0_ISR         isr_tc3

/* Timer 1 configuration */
#define TIMER_1_DEV         TC4->COUNT32
#define TIMER_1_CHANNELS    2
#define TIMER_1_MAX_VALUE   (0xffffffff)
#define TIMER_1_ISR         isr_tc4
/** @} */

/**
 * @name UART configuration
 * @{
 */
static const uart_conf_t uart_config[] = {
    /* device, RX pin, TX pin, mux */
    {&SERCOM0->USART, GPIO_PIN(PA,5), GPIO_PIN(PA,4), GPIO_MUX_D},
    {&SERCOM5->USART, GPIO_PIN(PA,23), GPIO_PIN(PA,22), GPIO_MUX_D},
};

/* interrupt function name mapping */
#define UART_0_ISR          isr_sercom0
#define UART_1_ISR          isr_sercom5

#define UART_NUMOF          (sizeof(uart_config) / sizeof(uart_config[0]))
/** @} */

/**
 * @name PWM configuration
 * @{
 */
#define PWM_0_EN            1
#define PWM_1_EN            1
#define PWM_MAX_CHANNELS    3
/* for compatibility with test application */
#define PWM_0_CHANNELS      PWM_MAX_CHANNELS
#define PWM_1_CHANNELS      PWM_MAX_CHANNELS

/* PWM device configuration */
static const pwm_conf_t pwm_config[] = {
#if PWM_0_EN
    {TCC1, {
        /* GPIO pin, MUX value, TCC channel */
        { GPIO_PIN(PA, 6), GPIO_MUX_E, 0 },
        { GPIO_PIN(PA, 7), GPIO_MUX_E, 1 },
        { GPIO_UNDEF, (gpio_mux_t)0, 2 }
    }},
#endif
#if PWM_1_EN
    {TCC0, {
        /* GPIO pin, MUX value, TCC channel */
        { GPIO_PIN(PA, 16), GPIO_MUX_F, 0 },
        { GPIO_PIN(PA, 18), GPIO_MUX_F, 2 },
        { GPIO_PIN(PA, 19), GPIO_MUX_F, 3 }
    }}
#endif
};

/* number of devices that are actually defined */
#define PWM_NUMOF           (2U)
/** @} */

/**
 * @name SPI configuration
 * @{
 */
#define SPI_NUMOF          (2)
#define SPI_0_EN           1
#define SPI_1_EN           1

/*      SPI0             */
#define SPI_0_DEV          SERCOM4->SPI
#define SPI_IRQ_0          SERCOM4_IRQn
#define SPI_0_DOPO         (1)
#define SPI_0_DIPO         (0)

//#define SPI_0_SCLK_DEV     PORT->Group[2]
//#define SPI_0_SCLK_PIN     (18)
#define SPI_0_SCLK_DEV     PORT->Group[0]
#define SPI_0_SCLK_PIN     (28)

//#define SPI_0_MISO_DEV     PORT->Group[2]
//#define SPI_0_MISO_PIN     (19)
#define SPI_0_MISO_DEV     PORT->Group[0]
#define SPI_0_MISO_PIN     (18)

//#define SPI_0_MOSI_DEV     PORT->Group[1]
//#define SPI_0_MOSI_PIN     (30)
#define SPI_0_MOSI_DEV     PORT->Group[0]
#define SPI_0_MOSI_PIN     (19)


/*      SPI1             */
#define SPI_1_DEV          SERCOM5->SPI
#define SPI_IRQ_1          SERCOM5_IRQn
#define SPI_1_DOPO         (1)
#define SPI_1_DIPO         (2)

#define SPI_1_SCLK_DEV     PORT->Group[1]
#define SPI_1_SCLK_PIN     (23)

#define SPI_1_MISO_DEV     PORT->Group[1]
#define SPI_1_MISO_PIN     (02)

#define SPI_1_MOSI_DEV     PORT->Group[1]
#define SPI_1_MOSI_PIN     (22)
/** @} */

/**
 * @name I2C configuration
 * @{
 */
#define I2C_NUMOF          (2U)
#define I2C_0_EN            1
#define I2C_1_EN            1
#define I2C_2_EN            0
#define I2C_3_EN            0
#define I2C_IRQ_PRIO        1

#define I2C_0_DEV           SERCOM3->I2CM
#define I2C_0_IRQ           SERCOM3_IRQn
#define I2C_0_ISR           isr_sercom3

/* I2C 0 pin configuration - Usati solo nella Master_init()*/
#define I2C_0_PORT          (PORT->Group[0])
#define I2C_SDA             PIN_PA16
#define I2C_SCL             PIN_PA17
#define I2C_0_PINS          (PORT_PA16 | PORT_PA17) //Fila EXT3


/* I2C 1 pin configuration */
#define I2C_1_PORT          (PORT->Group[0])
//#define I2C_SDA             PIN_PA13
//#define I2C_SCL             PIN_PA28
#define I2C_1_PINS          (PORT_PA13 | PORT_PA28)


/**
 * @name RTC configuration
 * @{
 */
#define RTC_NUMOF           (1U)
#define RTC_DEV             RTC->MODE2
/** @} */

/**
 * @name RTT configuration
 * @{
 */
#define RTT_NUMOF           (1U)
#define RTT_DEV             RTC->MODE0
#define RTT_IRQ             RTC_IRQn
#define RTT_IRQ_PRIO        10
#define RTT_ISR             isr_rtc
#define RTT_MAX_VALUE       (0xffffffff)
#define RTT_FREQUENCY       (32768U)    /* in Hz. For changes see `rtt.c` */
#define RTT_RUNSTDBY        (1)         /* Keep RTT running in sleep states */
/** @} */

#ifdef __cplusplus
}
#endif






/**
 * @ ADC Configuration
 * @{
 */

#define ADC_NUMOF                          (1U)
#define ADC_0_EN                           1
#define ADC_MAX_CHANNELS                   8

/* ADC 0 device configuration */
#define ADC_0_DEV                          ADC
#define ADC_0_PORT                         (PORT->Group[0])
#define ADC_0_IRQ                          ADC_IRQn
#define ADC_0_CHANNELS                     6 // ignore PA04 & PA05 due to EDBG UART conflict

typedef struct {
  PortGroup *port;
  uint8_t pin;
  uint8_t muxpos;                 /* see datasheet sec 30.8.8 */
} adc_channel_t;

/* ADC 0 Default values */
#define ADC_0_CLK_SOURCE                   0 /* GCLK_GENERATOR_0 */
#define ADC_0_PRESCALER                    ADC_CTRLB_PRESCALER_DIV4
#define ADC_0_WINDOW_MODE                  ADC_WINCTRL_WINMODE_DISABLE
#define ADC_0_WINDOW_LOWER                 0
#define ADC_0_WINDOW_HIGHER                0
#define SAMPLE_0_V_OFFSET									 170
#define SAMPLE_REF_V											 3541

#define ADC_0_CORRECTION_EN                0/*MODDED: 1  enabled */
#define ADC_0_GAIN_CORRECTION              ADC_GAINCORR_RESETVALUE/*MODDED: 3541*/
#define ADC_0_OFFSET_CORRECTION            ADC_OFFSETCORR_RESETVALUE/*MODDED: 170 */
#define ADC_0_SAMPLE_LENGTH                0
#define ADC_0_PIN_SCAN_OFFSET_START        0 /* disabled */
#define ADC_0_PIN_SCAN_INPUT_TO_SCAN       0 /* disabled */
#define ADC_0_LEFT_ADJUST                  0 /* disabled */
#define ADC_0_DIFFERENTIAL_MODE            0 /* disabled */
#define ADC_0_FREE_RUNNING                 0 /* disabled */
#define ADC_0_EVENT_ACTION                 0 /* disabled */
#define ADC_0_RUN_IN_STANDBY               0 /* disabled */

/* ADC 0 Module Status flags */
#define ADC_0_STATUS_RESULT_READY          (1UL << 0)
#define ADC_0_STATUS_WINDOW                (1UL << 1)
#define ADC_0_STATUS_OVERRUN               (1UL << 2)

#if ADC_0_CHANNELS
/*  An array listing all possible positive input
 *  ADC channels for the SAMR21-XPRO.
 *
 *  Note: Enabling PA04/PA05 will cause EDBG serial communication
 *  to freeze, so they are disabled by default!
 */
static const adc_channel_t adc_channels[] = {
    /* port, pin, muxpos */
    //{&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN4, 0x4},      // PA04
    //{&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN5, 0x5},      // PA05
    {&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN6, 0x6},      // PA06
		{&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN7, 0x7},      // PA07
    {&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN16, 0x10},    // PA08
    {&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN17, 0x11},    // PA09
    {&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN10, 0xA},     // PB02
    {&PORT->Group[0], ADC_INPUTCTRL_MUXPOS_PIN11, 0xB},     // PB03
};

/*  In differential mode, we can only pick one positive
 *  and one negative input.  These are the default values.
 */
#define ADC_0_POS_INPUT                    ADC_INPUTCTRL_MUXPOS_PIN6
#define ADC_0_NEG_INPUT                    ADC_INPUTCTRL_MUXNEG_IOGND
#endif

/* ADC 0 Gain Factor */
#define ADC_0_GAIN_FACTOR_1X               ADC_INPUTCTRL_GAIN_1X
#define ADC_0_GAIN_FACTOR_2X               ADC_INPUTCTRL_GAIN_2X
#define ADC_0_GAIN_FACTOR_4X               ADC_INPUTCTRL_GAIN_4X
#define ADC_0_GAIN_FACTOR_8X               ADC_INPUTCTRL_GAIN_8X
#define ADC_0_GAIN_FACTOR_16X              ADC_INPUTCTRL_GAIN_16X
/* Use this to define the value used */
#define ADC_0_GAIN_FACTOR_DEFAULT          ADC_0_GAIN_FACTOR_1X

/* ADC 0 Resolutions */
#define ADC_0_RES_8BIT                     ADC_CTRLB_RESSEL_8BIT
#define ADC_0_RES_10BIT                    ADC_CTRLB_RESSEL_10BIT
#define ADC_0_RES_12BIT                    ADC_CTRLB_RESSEL_12BIT
#define ADC_0_RES_16BIT                    ADC_CTRLB_RESSEL_16BIT

/* ADC 0 Voltage reference
 *
 * Note: ADC_0_REF_EXT_B is PA04 on the SAMR21-xpro.
 *       PA04 is also hardwired to the USB EDBG serial.
 *       If you use ADC_0_REF_EXT_B while also using
 *       EDBG serial, the serial connection will freeze.
 */
#define ADC_0_REF_INT_1V                   ADC_REFCTRL_REFSEL_INT1V
#define ADC_0_REF_EXT_B                    ADC_REFCTRL_REFSEL_AREFB
#define ADC_0_REF_COM_EN                   0
/* Use this to define the value used */
#define ADC_0_REF_DEFAULT                  ADC_0_REF_INT_1V

/* ADC 0 ACCUMULATE */
#define ADC_0_ACCUM_DISABLE                ADC_AVGCTRL_SAMPLENUM_1
#define ADC_0_ACCUM_2                      ADC_AVGCTRL_SAMPLENUM_2
#define ADC_0_ACCUM_4                      ADC_AVGCTRL_SAMPLENUM_4
#define ADC_0_ACCUM_8                      ADC_AVGCTRL_SAMPLENUM_8
#define ADC_0_ACCUM_16                     ADC_AVGCTRL_SAMPLENUM_16
#define ADC_0_ACCUM_32                     ADC_AVGCTRL_SAMPLENUM_32
#define ADC_0_ACCUM_64                     ADC_AVGCTRL_SAMPLENUM_64
#define ADC_0_ACCUM_128                    ADC_AVGCTRL_SAMPLENUM_128
#define ADC_0_ACCUM_256                    ADC_AVGCTRL_SAMPLENUM_256
#define ADC_0_ACCUM_512                    ADC_AVGCTRL_SAMPLENUM_512
#define ADC_0_ACCUM_1024                   ADC_AVGCTRL_SAMPLENUM_1024
/* Use this to define the value used */
#define ADC_0_ACCUM_DEFAULT                ADC_0_ACCUM_DISABLE

/* ADC 0 DIVIDE RESULT */
#define ADC_0_DIV_RES_DISABLE              0
#define ADC_0_DIV_RES_2                    1
#define ADC_0_DIV_RES_4                    2
#define ADC_0_DIV_RES_8                    3
#define ADC_0_DIV_RES_16                   4
#define ADC_0_DIV_RES_32                   5
#define ADC_0_DIV_RES_64                   6
#define ADC_0_DIV_RES_128                  7
/* Use this to define the value used */
#define ADC_0_DIV_RES_DEFAULT             ADC_0_DIV_RES_DISABLE

/*  Declare ADC Configuration object */
#define ADC_CONF_TYPE_DEFINED 1
typedef struct {
  uint32_t precision;
  uint32_t prescaler;
  uint32_t gain;
  uint32_t accumulate;
  uint8_t  divide;
  int vref;
  int differential_mode;
  int run_in_standby;
} adc_conf_t;

/** @} */



#endif /* PERIPH_CONF_H_ */
/** @} */
_______________________________________________
devel mailing list
devel@riot-os.org
https://lists.riot-os.org/mailman/listinfo/devel

Reply via email to