diff options
| author | Selene ToyKeeper | 2023-11-03 11:17:34 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2023-11-03 11:17:34 -0600 |
| commit | 481634c860e76159852c4e6f6de92905028a9e4e (patch) | |
| tree | cdadbceb57769181885bce23a2abe4b51ea4e6d4 /arch | |
| parent | renamed tk*.h to arch/*.h or fsm/*.h (part 1) (diff) | |
| download | anduril-481634c860e76159852c4e6f6de92905028a9e4e.tar.gz anduril-481634c860e76159852c4e6f6de92905028a9e4e.tar.bz2 anduril-481634c860e76159852c4e6f6de92905028a9e4e.zip | |
renamed tk*.h in file contents, and deleted unused files
Diffstat (limited to '')
| -rw-r--r-- | arch/adc-calibration.h | 64 | ||||
| -rw-r--r-- | arch/delay.h | 4 | ||||
| -rw-r--r-- | arch/mcu.h | 4 | ||||
| -rw-r--r-- | arch/random.h | 14 | ||||
| -rw-r--r-- | arch/voltage.h | 178 |
5 files changed, 4 insertions, 260 deletions
diff --git a/arch/adc-calibration.h b/arch/adc-calibration.h deleted file mode 100644 index f0b05ab..0000000 --- a/arch/adc-calibration.h +++ /dev/null @@ -1,64 +0,0 @@ -// tk-calibration.h: Attiny calibration header. -// Copyright (C) 2015-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -// This allows using a single set of hardcoded values across multiple projects. - -/********************** Voltage ADC calibration **************************/ -// These values were measured using RMM's FET+7135. -// See battcheck/readings.txt for reference values. -// the ADC values we expect for specific voltages -#define ADC_44 194 -#define ADC_43 189 -#define ADC_42 184 -#define ADC_41 178 -#define ADC_40 173 -#define ADC_39 168 -#define ADC_38 163 -#define ADC_37 158 -#define ADC_36 152 -#define ADC_35 147 -#define ADC_34 142 -#define ADC_33 137 -#define ADC_32 131 -#define ADC_31 126 -#define ADC_30 121 -#define ADC_29 116 -#define ADC_28 111 -#define ADC_27 105 -#define ADC_26 100 -#define ADC_25 95 -#define ADC_24 90 -#define ADC_23 84 -#define ADC_22 79 -#define ADC_21 74 -#define ADC_20 69 - -#define ADC_100p ADC_42 // the ADC value for 100% full (resting) -#define ADC_75p ADC_40 // the ADC value for 75% full (resting) -#define ADC_50p ADC_38 // the ADC value for 50% full (resting) -#define ADC_25p ADC_35 // the ADC value for 25% full (resting) -#define ADC_0p ADC_30 // the ADC value for 0% full (resting) -#define ADC_LOW ADC_30 // When do we start ramping down -#define ADC_CRIT ADC_27 // When do we shut the light off - - -/********************** Offtime capacitor calibration ********************/ -// Values are between 1 and 255, and can be measured with offtime-cap.c -// See battcheck/otc-readings.txt for reference values. -// These #defines are the edge boundaries, not the center of the target. -#ifdef OFFTIM3 -// The OTC value 0.5s after being disconnected from power -// (anything higher than this is a "short press") -#define CAP_SHORT 190 -// The OTC value 1.5s after being disconnected from power -// Between CAP_MED and CAP_SHORT is a "medium press" -#define CAP_MED 94 -// Below CAP_MED is a long press -#else -// The OTC value 1.0s after being disconnected from power -// Anything higher than this is a short press, lower is a long press -#define CAP_SHORT 115 -#endif - diff --git a/arch/delay.h b/arch/delay.h index 502e6ab..487291f 100644 --- a/arch/delay.h +++ b/arch/delay.h @@ -1,10 +1,10 @@ -// tk-delay.h: Smaller, more flexible _delay_ms() functions. +// delay.h: Smaller, more flexible _delay_ms() functions. // Copyright (C) 2015-2023 Selene ToyKeeper // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #ifdef OWN_DELAY -#include "tk-attiny.h" +#include "arch/mcu.h" #include <util/delay_basic.h> #ifdef USE_DELAY_MS // Having own _delay_ms() saves some bytes AND adds possibility to use variables as input @@ -1,4 +1,4 @@ -// tk-attiny.h: Attiny portability header. +// arch/mcu.h: Attiny portability header. // Copyright (C) 2014-2023 Selene ToyKeeper // SPDX-License-Identifier: GPL-3.0-or-later #pragma once @@ -79,7 +79,7 @@ /******************** I/O pin and register layout ************************/ #ifdef HWDEFFILE -#include "tk.h" +#include "fsm/tk.h" #include incfile(HWDEFFILE) #endif diff --git a/arch/random.h b/arch/random.h deleted file mode 100644 index ad65660..0000000 --- a/arch/random.h +++ /dev/null @@ -1,14 +0,0 @@ -// tk-random.h: Smaller pseudo-random function(s). -// Copyright (C) 2015-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -uint8_t pgm_rand() { - static uint16_t offset = 255; - // loop through ROM space, but avoid the first 256 bytes - // because the beginning tends to have a big ramp which - // doesn't look very random at all - offset = ((offset + 1) & 0x3ff) | 0x0100; - return pgm_read_byte(offset); -} - diff --git a/arch/voltage.h b/arch/voltage.h deleted file mode 100644 index 36ce9c8..0000000 --- a/arch/voltage.h +++ /dev/null @@ -1,178 +0,0 @@ -// tk-voltage.h: Voltage / battcheck functions. -// Copyright (C) 2015-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "tk-attiny.h" -#include "tk-calibration.h" - -#if defined(TEMPERATURE_MON) || defined(THERMAL_REGULATION) -#ifdef TEMP_10bit -#define NEED_ADC_10bit -#define get_temperature read_adc_10bit -#else -#define get_temperature read_adc_8bit -#endif - -inline void ADC_on_temperature() { - // TODO: (?) enable ADC Noise Reduction Mode, Section 17.7 on page 128 - // (apparently can only read while the CPU is in idle mode though) - // select ADC4 by writing 0b00001111 to ADMUX - // 1.1v reference, left-adjust, ADC4 - #ifdef TEMP_10bit - ADMUX = (1 << V_REF) | (0 << ADLAR) | TEMP_CHANNEL; - #else - ADMUX = (1 << V_REF) | (1 << ADLAR) | TEMP_CHANNEL; - #endif - // disable digital input on ADC pin to reduce power consumption - //DIDR0 |= (1 << TEMP_DIDR); - // enable, start, prescale - ADCSRA = (1 << ADEN ) | (1 << ADSC ) | ADC_PRSCL; -} -#endif // TEMPERATURE_MON - -#ifdef VOLTAGE_MON -#define NEED_ADC_8bit -inline void ADC_on() { - // disable digital input on ADC pin to reduce power consumption - DIDR0 |= (1 << ADC_DIDR); - // 1.1v reference, left-adjust, ADC1/PB2 - ADMUX = (1 << V_REF) | (1 << ADLAR) | ADC_CHANNEL; - // enable, start, prescale - ADCSRA = (1 << ADEN ) | (1 << ADSC ) | ADC_PRSCL; -} - -#define get_voltage read_adc_8bit -#else -inline void ADC_off() { - ADCSRA &= ~(1<<7); //ADC off -} -#endif - -#ifdef NEED_ADC_8bit -uint8_t read_adc_8bit() { - // Start conversion - ADCSRA |= (1 << ADSC); - // Wait for completion - while (ADCSRA & (1 << ADSC)); - // Send back the result - return ADCH; -} -#endif - -#ifdef NEED_ADC_10bit -uint16_t read_adc_10bit() { - // Start conversion - ADCSRA |= (1 << ADSC); - // Wait for completion - while (ADCSRA & (1 << ADSC)); - // Send back the result - //return (ADCH<<8) | (ADCL); // ADLAR=0 - //return (ADCH<<2) | (ADCL>>6); // ADLAR=1 - ADCSRA |= 0x10; // clear ADIF flag, else only first reading works - return ADC; // ADLAR=0 -} -#endif - -#ifdef USE_BATTCHECK -#ifdef BATTCHECK_4bars -PROGMEM const uint8_t voltage_blinks[] = { - // 0 blinks for less than 1% - ADC_0p, // 1 blink for 1%-25% - ADC_25p, // 2 blinks for 25%-50% - ADC_50p, // 3 blinks for 50%-75% - ADC_75p, // 4 blinks for 75%-100% - ADC_100p, // 5 blinks for >100% - 255, // Ceiling, don't remove (6 blinks means "error") -}; -#endif // BATTCHECK_4bars -#ifdef BATTCHECK_8bars -PROGMEM const uint8_t voltage_blinks[] = { - // 0 blinks for less than 1% - ADC_30, // 1 blink for 1%-12.5% - ADC_33, // 2 blinks for 12.5%-25% - ADC_35, // 3 blinks for 25%-37.5% - ADC_37, // 4 blinks for 37.5%-50% - ADC_38, // 5 blinks for 50%-62.5% - ADC_39, // 6 blinks for 62.5%-75% - ADC_40, // 7 blinks for 75%-87.5% - ADC_41, // 8 blinks for 87.5%-100% - ADC_42, // 9 blinks for >100% - 255, // Ceiling, don't remove (10 blinks means "error") -}; -#endif // BATTCHECK_8bars -#ifdef BATTCHECK_VpT -/* -PROGMEM const uint8_t v_whole_blinks[] = { - // 0 blinks for (shouldn't happen) - 0, // 1 blink for (shouldn't happen) - ADC_20, // 2 blinks for 2V - ADC_30, // 3 blinks for 3V - ADC_40, // 4 blinks for 4V - 255, // Ceiling, don't remove -}; -PROGMEM const uint8_t v_tenth_blinks[] = { - // 0 blinks for less than 1% - ADC_30, - ADC_33, - ADC_35, - ADC_37, - ADC_38, - ADC_39, - ADC_40, - ADC_41, - ADC_42, - 255, // Ceiling, don't remove -}; -*/ -PROGMEM const uint8_t voltage_blinks[] = { - // 0 blinks for (shouldn't happen) - ADC_25,(2<<5)+5, - ADC_26,(2<<5)+6, - ADC_27,(2<<5)+7, - ADC_28,(2<<5)+8, - ADC_29,(2<<5)+9, - ADC_30,(3<<5)+0, - ADC_31,(3<<5)+1, - ADC_32,(3<<5)+2, - ADC_33,(3<<5)+3, - ADC_34,(3<<5)+4, - ADC_35,(3<<5)+5, - ADC_36,(3<<5)+6, - ADC_37,(3<<5)+7, - ADC_38,(3<<5)+8, - ADC_39,(3<<5)+9, - ADC_40,(4<<5)+0, - ADC_41,(4<<5)+1, - ADC_42,(4<<5)+2, - ADC_43,(4<<5)+3, - ADC_44,(4<<5)+4, - 255, (1<<5)+1, // Ceiling, don't remove -}; -inline uint8_t battcheck() { - // Return an composite int, number of "blinks", for approximate battery charge - // Uses the table above for return values - // Return value is 3 bits of whole volts and 5 bits of tenths-of-a-volt - uint8_t i, voltage; - voltage = get_voltage(); - // figure out how many times to blink - for (i=0; - voltage > pgm_read_byte(voltage_blinks + i); - i += 2) {} - return pgm_read_byte(voltage_blinks + i + 1); -} -#else // #ifdef BATTCHECK_VpT -inline uint8_t battcheck() { - // Return an int, number of "blinks", for approximate battery charge - // Uses the table above for return values - uint8_t i, voltage; - voltage = get_voltage(); - // figure out how many times to blink - for (i=0; - voltage > pgm_read_byte(voltage_blinks + i); - i ++) {} - return i; -} -#endif // BATTCHECK_VpT -#endif - |
