aboutsummaryrefslogtreecommitdiff
path: root/drivers/avr/analog.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/avr/analog.h')
-rw-r--r--drivers/avr/analog.h37
1 files changed, 16 insertions, 21 deletions
diff --git a/drivers/avr/analog.h b/drivers/avr/analog.h
index 1b773d82c..058882450 100644
--- a/drivers/avr/analog.h
+++ b/drivers/avr/analog.h
@@ -14,45 +14,40 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */ 15 */
16 16
17#ifndef _analog_h_included__ 17#pragma once
18#define _analog_h_included__
19 18
20#include <stdint.h> 19#include <stdint.h>
20#include "quantum.h"
21 21
22#ifdef __cplusplus 22#ifdef __cplusplus
23extern "C" { 23extern "C" {
24#endif 24#endif
25void analogReference(uint8_t mode); 25void analogReference(uint8_t mode);
26int16_t analogRead(uint8_t pin); 26int16_t analogRead(uint8_t pin);
27
28int16_t analogReadPin(pin_t pin);
29uint8_t pinToMux(pin_t pin);
30
27int16_t adc_read(uint8_t mux); 31int16_t adc_read(uint8_t mux);
28#ifdef __cplusplus 32#ifdef __cplusplus
29} 33}
30#endif 34#endif
31 35
32#define ADC_REF_POWER (1 << REFS0) 36#define ADC_REF_EXTERNAL 0 // AREF, Internal Vref turned off
33#define ADC_REF_INTERNAL ((1 << REFS1) | (1 << REFS0)) 37#define ADC_REF_POWER _BV(REFS0) // AVCC with external capacitor on AREF pin
34#define ADC_REF_EXTERNAL (0) 38#define ADC_REF_INTERNAL (_BV(REFS1) | _BV(REFS0)) // Internal 2.56V Voltage Reference with external capacitor on AREF pin (1.1V for 328P)
35 39
36// These prescaler values are for high speed mode, ADHSM = 1 40// These prescaler values are for high speed mode, ADHSM = 1
37#if F_CPU == 16000000L 41#if F_CPU == 16000000L || F_CPU == 12000000L
38# define ADC_PRESCALER ((1 << ADPS2) | (1 << ADPS1)) 42# define ADC_PRESCALER (_BV(ADPS2) | _BV(ADPS1)) // /64
39#elif F_CPU == 8000000L 43#elif F_CPU == 8000000L
40# define ADC_PRESCALER ((1 << ADPS2) | (1 << ADPS0)) 44# define ADC_PRESCALER (_BV(ADPS2) | _BV(ADPS0)) // /32
41#elif F_CPU == 4000000L 45#elif F_CPU == 4000000L
42# define ADC_PRESCALER ((1 << ADPS2)) 46# define ADC_PRESCALER (_BV(ADPS2)) // /16
43#elif F_CPU == 2000000L 47#elif F_CPU == 2000000L
44# define ADC_PRESCALER ((1 << ADPS1) | (1 << ADPS0)) 48# define ADC_PRESCALER (_BV(ADPS1) | _BV(ADPS0)) // /8
45#elif F_CPU == 1000000L 49#elif F_CPU == 1000000L
46# define ADC_PRESCALER ((1 << ADPS1)) 50# define ADC_PRESCALER _BV(ADPS1) // /4
47#else 51#else
48# define ADC_PRESCALER ((1 << ADPS0)) 52# define ADC_PRESCALER _BV(ADPS0) // /2
49#endif
50
51// some avr-libc versions do not properly define ADHSM
52#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
53# if !defined(ADHSM)
54# define ADHSM (7)
55# endif
56#endif
57
58#endif 53#endif