X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=rf433rcv%2Fteensy%2Fanalog.c;fp=rf433rcv%2Fteensy%2Fanalog.c;h=99bf3b65bba252627f916e6f10a33c4f4dbf3a10;hb=deb2b278d460a716e0e2d8be370b1ee8f8963e34;hp=0000000000000000000000000000000000000000;hpb=1c4aea8ca6197b857498de2881b8bc594af1df49;p=svn42.git diff --git a/rf433rcv/teensy/analog.c b/rf433rcv/teensy/analog.c new file mode 100644 index 0000000..99bf3b6 --- /dev/null +++ b/rf433rcv/teensy/analog.c @@ -0,0 +1,57 @@ +// Simple analog to digitial conversion, similar to Wiring/Arduino + +#include +#include + +#include "analog.h" + + +#if defined(__AVR_ATmega32U4__) + +uint8_t analog_reference_config_val = 0x40; + +static const uint8_t PROGMEM adc_mapping[] = { + 0, 1, 4, 5, 6, 7, 13, 12, 11, 10, 9, 8 +}; + +int analogRead(uint8_t pin) +{ + uint8_t low, adc; + + if (pin >= 12) return 0; + adc = pgm_read_byte(adc_mapping + pin); + if (adc < 8) { + DIDR0 |= (1 << adc); + ADCSRB = 0; + ADMUX = analog_reference_config_val | adc; + } else { + adc -= 8; + DIDR2 |= (1 << adc); + ADCSRB = (1<= 8) return 0; + DIDR0 |= (1 << pin); + ADMUX = analog_reference_config_val | pin; + ADCSRA = (1<