aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-10-07 13:59:26 -0400
committerKevin O'Connor <kevin@koconnor.net>2020-10-29 11:55:06 -0400
commitbe4ad29fa343b4d20feb2fa55be9a93b84d62a51 (patch)
tree9307fe7d924df20eb1f267f7c503e18be32775e6 /src
parent9142200b3ac63dc757e8e4fbfb4b1f8d177457b2 (diff)
downloadkutter-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.c16
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);