diff options
| author | fauxpark <fauxpark@gmail.com> | 2019-12-08 12:11:29 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-08 12:11:29 +1100 |
| commit | a8320f20f76782789b274f7a8c3e3ad4278a075c (patch) | |
| tree | b86b8ae732cb995dcccf5de1effa6af32149d98c /drivers/avr/analog.h | |
| parent | f275ffbdfc1cbd1965cd3546b45a7838012321da (diff) | |
| download | qmk_firmware-a8320f20f76782789b274f7a8c3e3ad4278a075c.tar.gz qmk_firmware-a8320f20f76782789b274f7a8c3e3ad4278a075c.zip | |
Improve support and docs for ADC driver (#7191)
* Improve support and docs for ADC driver
* Comment ADC channels
* Move to Makers and Modders section, and fix usage instructions
* Flesh out intro
* Superscript 328P note
* Fix pin_to_mux LUT
* Support USB64/1287 as well
* analogReadPin() defaults to 0V mux on invalid pin
* Update pinToMux() function documentation
* Dot
* Accept (some of) the `qmk cformat` changes
* Do clang-format properly
* More wording tweaks
* Link to encoder docs
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 |
