diff options
Diffstat (limited to 'spaghetti-monster/fsm-adc.h')
| -rw-r--r-- | spaghetti-monster/fsm-adc.h | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/spaghetti-monster/fsm-adc.h b/spaghetti-monster/fsm-adc.h deleted file mode 100644 index 1bb67ed..0000000 --- a/spaghetti-monster/fsm-adc.h +++ /dev/null @@ -1,112 +0,0 @@ -// fsm-adc.h: ADC (voltage, temperature) functions for SpaghettiMonster. -// Copyright (C) 2017-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#if defined(USE_LVP) || defined(USE_THERMAL_REGULATION) -// use raw value instead of lowpassed value for the next N measurements -// (2 = 1 for voltage + 1 for temperature) -volatile uint8_t adc_reset = 2; -#endif - -#ifdef USE_LVP -// default 5 seconds between low-voltage warning events -#ifndef VOLTAGE_WARNING_SECONDS -#define VOLTAGE_WARNING_SECONDS 5 -#endif -// low-battery threshold in volts * 10 -#ifndef VOLTAGE_LOW -#define VOLTAGE_LOW 29 -#endif -// battery is low but not critical -#ifndef VOLTAGE_RED -#define VOLTAGE_RED 33 -#endif -// MCU sees voltage 0.X volts lower than actual, add X/2 to readings -#ifndef VOLTAGE_FUDGE_FACTOR -#ifdef USE_VOLTAGE_DIVIDER -#define VOLTAGE_FUDGE_FACTOR 0 -#else -#define VOLTAGE_FUDGE_FACTOR 5 -#endif -#endif - -#ifdef TICK_DURING_STANDBY -volatile uint8_t adc_active_now = 0; // sleep LVP needs a different sleep mode -#endif -volatile uint8_t irq_adc = 0; // ADC interrupt happened? -uint8_t adc_sample_count = 0; // skip the first sample; it's junk -uint8_t adc_channel = 0; // 0=voltage, 1=temperature -uint16_t adc_raw[2]; // last ADC measurements (0=voltage, 1=temperature) -uint16_t adc_smooth[2]; // lowpassed ADC measurements (0=voltage, 1=temperature) -// ADC code is split into two parts: -// - ISR: runs immediately at each interrupt, does the bare minimum because time is critical here -// - deferred: the bulk of the logic runs later when time isn't so critical -uint8_t adc_deferred_enable = 0; // stop waiting and run the deferred code -void adc_deferred(); // do the actual ADC-related calculations - -static inline void ADC_voltage_handler(); -uint8_t voltage = 0; -#ifdef USE_VOLTAGE_CORRECTION - #ifdef USE_CFG - #define VOLT_CORR cfg.voltage_correction - #else - // same 0.05V units as fudge factor, - // but 7 is neutral, and the expected range is from 1 to 13 - uint8_t voltage_correction = 7; - #define VOLT_CORR voltage_correction - #endif -#endif -#ifdef USE_LVP -void low_voltage(); -#endif - -#ifdef USE_BATTCHECK -void battcheck(); -#ifdef BATTCHECK_VpT -#define USE_BLINK_NUM -#endif -#if defined(BATTCHECK_8bars) || defined(BATTCHECK_6bars) || defined(BATTCHECK_4bars) -#define USE_BLINK_DIGIT -#endif -#endif -#endif // ifdef USE_LVP - - -#ifdef USE_THERMAL_REGULATION -// try to keep temperature below 45 C -#ifndef DEFAULT_THERM_CEIL -#define DEFAULT_THERM_CEIL 45 -#endif -// don't allow user to set ceiling above 70 C -#ifndef MAX_THERM_CEIL -#define MAX_THERM_CEIL 70 -#endif -// Local per-MCU calibration value -#ifndef THERM_CAL_OFFSET -#define THERM_CAL_OFFSET 0 -#endif -// temperature now, in C (ish) -int16_t temperature; -#ifdef USE_CFG - #define TH_CEIL cfg.therm_ceil - #define TH_CAL cfg.therm_cal_offset -#else - #define TH_CEIL therm_ceil - #define TH_CAL therm_cal_offset - uint8_t therm_ceil = DEFAULT_THERM_CEIL; - int8_t therm_cal_offset = 0; -#endif -static inline void ADC_temperature_handler(); -#endif // ifdef USE_THERMAL_REGULATION - - -inline void ADC_on(); -inline void ADC_off(); -inline void ADC_start_measurement(); - -#ifdef TICK_DURING_STANDBY -inline void adc_sleep_mode(); -#endif - |
