diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-10-07 13:59:26 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-10-29 11:55:06 -0400 |
commit | be4ad29fa343b4d20feb2fa55be9a93b84d62a51 (patch) | |
tree | 9307fe7d924df20eb1f267f7c503e18be32775e6 /src | |
parent | 9142200b3ac63dc757e8e4fbfb4b1f8d177457b2 (diff) | |
download | kutter-be4ad29fa343b4d20feb2fa55be9a93b84d62a51.tar.gz kutter-be4ad29fa343b4d20feb2fa55be9a93b84d62a51.tar.xz kutter-be4ad29fa343b4d20feb2fa55be9a93b84d62a51.zip |
atsamd: Support reading chip based temperature sensor
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/atsamd/adc.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/atsamd/adc.c b/src/atsamd/adc.c index 8d25d2f4..2c28f901 100644 --- a/src/atsamd/adc.c +++ b/src/atsamd/adc.c @@ -1,6 +1,6 @@ // Analog to Digital Converter support // -// Copyright (C) 2018 Kevin O'Connor <kevin@koconnor.net> +// Copyright (C) 2018-2020 Kevin O'Connor <kevin@koconnor.net> // // This file may be distributed under the terms of the GNU GPLv3 license. @@ -9,6 +9,8 @@ #include "internal.h" // GPIO #include "sched.h" // sched_shutdown +#define ADC_TEMPERATURE_PIN 0xfe +DECL_ENUMERATION("pin", "ADC_TEMPERATURE", ADC_TEMPERATURE_PIN); #if CONFIG_MACH_SAMD21 @@ -128,6 +130,18 @@ gpio_adc_setup(uint8_t pin) // Enable ADC adc_init(); + if (pin == ADC_TEMPERATURE_PIN) { +#if CONFIG_MACH_SAMD21 + SYSCTRL->VREF.reg |= SYSCTRL_VREF_TSEN; + return (struct gpio_adc){ .regs=ADC, + .chan=ADC_INPUTCTRL_MUXPOS_TEMP_Val }; +#else + SUPC->VREF.reg |= SUPC_VREF_TSEN; + return (struct gpio_adc){ .regs=ADC0, + .chan=ADC_INPUTCTRL_MUXPOS_PTAT_Val }; +#endif + } + // Set pin in ADC mode gpio_peripheral(pin, 'B', 0); |