]> git.donarmstrong.com Git - qmk_firmware.git/blob - quantum/analog.h
Move Atreus50 to hardwired directory and update README
[qmk_firmware.git] / quantum / analog.h
1 #ifndef _analog_h_included__
2 #define _analog_h_included__
3
4 #include <stdint.h>
5
6 void analogReference(uint8_t mode);
7 int16_t analogRead(uint8_t pin);
8 int16_t adc_read(uint8_t mux);
9
10 #define ADC_REF_POWER     (1<<REFS0)
11 #define ADC_REF_INTERNAL  ((1<<REFS1) | (1<<REFS0))
12 #define ADC_REF_EXTERNAL  (0)
13
14 // These prescaler values are for high speed mode, ADHSM = 1
15 #if F_CPU == 16000000L
16 #define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS1))
17 #elif F_CPU == 8000000L
18 #define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS0))
19 #elif F_CPU == 4000000L
20 #define ADC_PRESCALER ((1<<ADPS2))
21 #elif F_CPU == 2000000L
22 #define ADC_PRESCALER ((1<<ADPS1) | (1<<ADPS0))
23 #elif F_CPU == 1000000L
24 #define ADC_PRESCALER ((1<<ADPS1))
25 #else
26 #define ADC_PRESCALER ((1<<ADPS0))
27 #endif
28
29 // some avr-libc versions do not properly define ADHSM
30 #if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
31 #if !defined(ADHSM)
32 #define ADHSM (7)
33 #endif
34 #endif
35
36 #endif