diff options
Diffstat (limited to 'drivers/avr/analog.h')
-rw-r--r-- | drivers/avr/analog.h | 37 |
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 |
23 | extern "C" { | 23 | extern "C" { |
24 | #endif | 24 | #endif |
25 | void analogReference(uint8_t mode); | 25 | void analogReference(uint8_t mode); |
26 | int16_t analogRead(uint8_t pin); | 26 | int16_t analogRead(uint8_t pin); |
27 | |||
28 | int16_t analogReadPin(pin_t pin); | ||
29 | uint8_t pinToMux(pin_t pin); | ||
30 | |||
27 | int16_t adc_read(uint8_t mux); | 31 | int16_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 |