Contiki-NG
arch
platform
zoul
dev
adc-zoul.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015, Zolertia - http://www.zolertia.com
3
* Copyright (c) 2015, University of Bristol - http://www.bristol.ac.uk
4
* All rights reserved.
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* 3. Neither the name of the copyright holder nor the names of its
16
* contributors may be used to endorse or promote products derived
17
* from this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
30
* OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
/*---------------------------------------------------------------------------*/
33
/**
34
* \addtogroup zoul-sensors
35
* @{
36
*
37
* \defgroup zoul-adc-interface Zoul Generic ADC interface
38
*
39
* Driver for the Zoul ADC interface
40
*
41
* This driver supports analogue sensors connected to ADC1, ADC2, ADC3,
42
* ADC4, ADC5 and ADC6 inputs. ADC6 is shared with the user button, so disable
43
* user button if ADC6 is needed.
44
* This is controlled by the type argument of the value() function. Possible
45
* choices are:
46
*
47
* - ZOUL_SENSORS_ADC1
48
* - ZOUL_SENSORS_ADC2
49
* - ZOUL_SENSORS_ADC3
50
* - ZOUL_SENSORS_ADC4
51
* - ZOUL_SENSORS_ADC5
52
* - ZOUL_SENSORS_ADC6
53
*
54
* To initialize the ADC sensors use the configure() function, using as first
55
* argument SENSORS_HW_INIT, and choose which ADC channels to enable passing as
56
* second argument any single or combined (sum) values as below:
57
*
58
* - Either use multiple values (i.e ZOUL_SENSORS_ADC1 + ZOUL_SENSORS_ADC2)
59
* - ZOUL_SENSORS_ADC_ALL (all channels above)
60
*
61
* Using an invalid combination will return ZOUL_SENSORS_ERROR.
62
*
63
* The decimation rate can be set by passing
64
* ZOUL_SENSORS_CONFIGURE_TYPE_DECIMATION_RATE as the type argument to the
65
* configure() function and then specifying the rate through the value
66
* argument. Valid values are:
67
*
68
* - SOC_ADC_ADCCON_DIV_64 (64 bit rate)
69
* - SOC_ADC_ADCCON_DIV_128 (128 bit rate)
70
* - SOC_ADC_ADCCON_DIV_256 (256 bit rate)
71
* - SOC_ADC_ADCCON_DIV_512 (512 bit rate)
72
* @{
73
*
74
* \file
75
* Header file for the Zoul ADC interface
76
*/
77
/*---------------------------------------------------------------------------*/
78
#ifndef ADC_ZOUL_H_
79
#define ADC_ZOUL_H_
80
/*---------------------------------------------------------------------------*/
81
#include "lib/sensors.h"
82
#include "
dev/soc-adc.h
"
83
/*---------------------------------------------------------------------------*/
84
/**
85
* \name Generic ADC sensors
86
* @{
87
*/
88
#define ADC_ZOUL "ADC sensor interface"
89
#define ADC_SENSORS_PORT_BASE GPIO_PORT_TO_BASE(ADC_SENSORS_PORT)
90
91
#ifdef ADC_SENSORS_CONF_REFERENCE
92
#define ADC_SENSORS_REFERENCE ADC_SENSORS_CONF_REFERENCE
93
#else
94
#define ADC_SENSORS_REFERENCE SOC_ADC_ADCCON_REF_AVDD5
95
#endif
96
97
/*
98
* PA0-PA3 are hardcoded to UART0 and the user button for most Zolertia
99
* platforms, the following assumes PA0-1 shall not be used as ADC input, else
100
* re-write the below definitions
101
*/
102
#define ZOUL_SENSORS_ADC_MIN 2
/**< PA1 pin mask */
103
104
/* ADC phidget-like connector ADC1 */
105
#if ADC_SENSORS_ADC1_PIN >= ZOUL_SENSORS_ADC_MIN
106
#define ZOUL_SENSORS_ADC1 GPIO_PIN_MASK(ADC_SENSORS_ADC1_PIN)
107
#else
108
#define ZOUL_SENSORS_ADC1 0
109
#endif
110
/* ADC phidget-like connector ADC2 */
111
#if ADC_SENSORS_ADC2_PIN >= ZOUL_SENSORS_ADC_MIN
112
#define ZOUL_SENSORS_ADC2 GPIO_PIN_MASK(ADC_SENSORS_ADC2_PIN)
113
#else
114
#define ZOUL_SENSORS_ADC2 0
115
#endif
116
/* ADC phidget-like connector ADC3 */
117
#if ADC_SENSORS_ADC3_PIN >= ZOUL_SENSORS_ADC_MIN
118
#define ZOUL_SENSORS_ADC3 GPIO_PIN_MASK(ADC_SENSORS_ADC3_PIN)
119
#else
120
#define ZOUL_SENSORS_ADC3 0
121
#endif
122
/* ADC phidget-like connector ADC4 */
123
#if ADC_SENSORS_ADC4_PIN >= ZOUL_SENSORS_ADC_MIN
124
#define ZOUL_SENSORS_ADC4 GPIO_PIN_MASK(ADC_SENSORS_ADC4_PIN)
125
#else
126
#define ZOUL_SENSORS_ADC4 0
127
#endif
128
/* ADC phidget-like connector ADC5 */
129
#if ADC_SENSORS_ADC5_PIN >= ZOUL_SENSORS_ADC_MIN
130
#define ZOUL_SENSORS_ADC5 GPIO_PIN_MASK(ADC_SENSORS_ADC5_PIN)
131
#else
132
#define ZOUL_SENSORS_ADC5 0
133
#endif
134
135
/* ADC phidget-like connector ADC6 */
136
#if ADC_SENSORS_ADC6_PIN >= ZOUL_SENSORS_ADC_MIN
137
#define ZOUL_SENSORS_ADC6 GPIO_PIN_MASK(ADC_SENSORS_ADC6_PIN)
138
#else
139
#define ZOUL_SENSORS_ADC6 0
140
#endif
141
/*
142
* This is safe as the disabled sensors should have a zero value thus not
143
* affecting the mask operations
144
*/
145
#define ZOUL_SENSORS_ADC_ALL (ZOUL_SENSORS_ADC1 + ZOUL_SENSORS_ADC2 + \
146
ZOUL_SENSORS_ADC3 + ZOUL_SENSORS_ADC4 + \
147
ZOUL_SENSORS_ADC5 + ZOUL_SENSORS_ADC6)
148
/** @} */
149
/*---------------------------------------------------------------------------*/
150
extern
const
struct
sensors_sensor adc_zoul;
151
/*---------------------------------------------------------------------------*/
152
#endif
/* ADC_ZOUL_H_ */
153
/*---------------------------------------------------------------------------*/
154
/**
155
* @}
156
* @}
157
*/
158
soc-adc.h
Header file with register declarations for the cc2538 ADC and H/W RNG.
Generated on Sat May 30 2020 17:57:35 for Contiki-NG by
1.8.13