aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-11-03 11:17:34 -0600
committerSelene ToyKeeper2023-11-03 11:17:34 -0600
commit481634c860e76159852c4e6f6de92905028a9e4e (patch)
treecdadbceb57769181885bce23a2abe4b51ea4e6d4 /arch
parentrenamed tk*.h to arch/*.h or fsm/*.h (part 1) (diff)
downloadanduril-481634c860e76159852c4e6f6de92905028a9e4e.tar.gz
anduril-481634c860e76159852c4e6f6de92905028a9e4e.tar.bz2
anduril-481634c860e76159852c4e6f6de92905028a9e4e.zip
renamed tk*.h in file contents, and deleted unused files
Diffstat (limited to 'arch')
-rw-r--r--arch/adc-calibration.h64
-rw-r--r--arch/delay.h4
-rw-r--r--arch/mcu.h4
-rw-r--r--arch/random.h14
-rw-r--r--arch/voltage.h178
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
diff --git a/arch/mcu.h b/arch/mcu.h
index 9532ed5..5de6ea9 100644
--- a/arch/mcu.h
+++ b/arch/mcu.h
@@ -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
-
If you find this content useful please consider a small donation via bitcoin: bitcoin:1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2?amount=0.001&message=Donation Scraping git contents via cgit is very resource intensive. The continued hosting of these git repositories is entirely financed by your bitcoin contributions. For donations of a least 1 mBTC you include your IP address in the message of your bitcoin donation. This will remove this message in the future for requests from your IP, which will significantly reduce token usage. In any case, any contributions to bitcoin address 1mxKyQsHHugqRxPKgwaA7wUwJEGCNthn2 are very welcome. Thanks in advance for you contribution to a self-sustaining ecosystem.