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 |
