aboutsummaryrefslogtreecommitdiffstats
path: root/src/wiring/wiring_analog.c
blob: abcf7c690b4bb28cbae130f54a0a7f359c8c14ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "adc.h"
#include "gpio.h"
#include "wiring.h"
#include <stdio.h>

/* Indexed by pins A[0-15]  */
uint32_t PIN_TO_ADC[NR_ANALOG_PINS] = {
    10,                     // A0/D14    ADC10
    11,                     // A1/D15    ADC11
    12,                     // A2/D16    ADC12
    13,                     // A3/D17    ADC13
    14,                     // A4/D18    ADC14
    15,                     // A5/D19    ADC15
     3,                     // A6/D0     ADC3
     2,                     // A7/D1     ADC2
     0,                     // A8/D2     ADC0
     1,                     // A9/D3     ADC1
     4,                     // A10/D10   ADC4
     7,                     // A11/D11   ADC7
     6,                     // A12/D12   ADC6
     5,                     // A13/D13   ADC5
     8,                     // A14/D26   ADC8
     9,                     // A15/D11   ADC9
};

/* Assumes that the ADC has been initialized and
 * that the pin is set to ANALOG_INPUT */
uint32_t analogRead(uint8_t pin) {
    if (pin >= NR_ANALOG_PINS)
        return 0;

    return adc_read(PIN_TO_ADC[pin]);
}