aboutsummaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
Diffstat (limited to 'ui')
-rw-r--r--ui/anduril/anduril.c19
-rw-r--r--ui/anduril/aux-leds.c34
-rw-r--r--ui/anduril/config-default.h16
-rw-r--r--ui/anduril/ramp-mode.c2
-rw-r--r--ui/anduril/ramp-mode.h9
-rw-r--r--ui/anduril/version-check-mode.c5
6 files changed, 52 insertions, 33 deletions
diff --git a/ui/anduril/anduril.c b/ui/anduril/anduril.c
index e72c3b5..1cdb8d0 100644
--- a/ui/anduril/anduril.c
+++ b/ui/anduril/anduril.c
@@ -34,16 +34,19 @@
* as possible. These are mostly "USE" flags.
*/
+/********* load up MCU info, like ROM size and such *********/
+#include "arch/mcu.h"
+
/********* User-configurable options *********/
#include "anduril/config-default.h"
/********* specific settings for known driver types *********/
-// Anduril config file name (set it here or define it at the gcc command line)
-//#define CFG_H cfg-blf-q8.h
-#include "fsm/tk.h"
#include incfile(CFG_H)
+#ifdef HWDEF_H
+#include incfile(HWDEF_H)
+#endif
/********* Include headers which need to be before FSM *********/
@@ -77,11 +80,12 @@
#include "fsm/spaghetti-monster.h"
/********* does this build target have special code to include? *********/
-#ifdef HWDEF_C_FILE
-#include incfile(HWDEF_C_FILE)
+#ifdef CFG_C
+#include incfile(CFG_C)
#endif
-#ifdef CFG_C_FILE
-#include incfile(CFG_C_FILE)
+
+#ifdef HWDEF_C
+#include incfile(HWDEF_C)
#endif
@@ -312,6 +316,7 @@ void loop() {
#ifdef USE_BATTCHECK
else if (state == battcheck_state) {
+ nice_delay_ms(1000); // wait a moment for a more accurate reading
battcheck();
#ifdef USE_SIMPLE_UI
// in simple mode, turn off after one readout
diff --git a/ui/anduril/aux-leds.c b/ui/anduril/aux-leds.c
index 1b30d34..fd184fc 100644
--- a/ui/anduril/aux-leds.c
+++ b/ui/anduril/aux-leds.c
@@ -58,27 +58,27 @@ void indicator_led_update(uint8_t mode, uint8_t tick) {
uint8_t voltage_to_rgb() {
static const uint8_t levels[] = {
// voltage, color
- 0, 0, // black
+ 0, 0, // black
#ifdef DUAL_VOLTAGE_FLOOR
// AA / NiMH voltages
- 9, 1, // R
- 10, 2, // R+G
- 11, 3, // G
- 12, 4, // G+B
- 13, 5, // B
- 14, 6, // R + B
- 15, 7, // R+G+B
- 20, 0, // black
+ 4* 9, 1, // R
+ 4*10, 2, // R+G
+ 4*11, 3, // G
+ 4*12, 4, // G+B
+ 4*13, 5, // B
+ 4*14, 6, // R + B
+ 4*16, 7, // R+G+B
+ 4*20, 0, // black
#endif
// li-ion voltages
- 29, 1, // R
- 33, 2, // R+G
- 35, 3, // G
- 37, 4, // G+B
- 39, 5, // B
- 41, 6, // R + B
- 44, 7, // R+G+B // skip; looks too similar to G+B
- 255, 7, // R+G+B
+ 4*29, 1, // R
+ 4*33, 2, // R+G
+ 4*35, 3, // G
+ 4*37, 4, // G+B
+ 4*39, 5, // B
+ 4*41, 6, // R + B
+ 4*44, 7, // R+G+B // skip; looks too similar to G+B
+ 255, 7, // R+G+B
};
uint8_t volts = voltage;
//if (volts < VOLTAGE_LOW) return 0;
diff --git a/ui/anduril/config-default.h b/ui/anduril/config-default.h
index 899bc4a..1b34e8c 100644
--- a/ui/anduril/config-default.h
+++ b/ui/anduril/config-default.h
@@ -20,7 +20,7 @@
// overheat protection
#define USE_THERMAL_REGULATION
-#if (ATTINY==85) || (ATTINY==1634)
+#if (MCU==0x85) || (MCU==0x1634)
// sloppy temperature sensor needs bigger error margin
#define DEFAULT_THERM_CEIL 45 // try not to get hotter than this (in C)
#else
@@ -113,6 +113,12 @@
// timer is available in regular ramp mode and candle mode
#define USE_SUNSET_TIMER
+// optionally make gradual ticks happen faster
+// Affects: thermal regulation speed, sunset mode, maybe other features
+// (default is calibrated for 8-bit PWM,
+// but 10-bit should set this value to 4 instead of 1)
+#define GRADUAL_ADJUST_SPEED 1
+
///// What to do when power is connected /////
// factory reset function erases user's runtime configuration in eeprom
@@ -137,6 +143,10 @@
#define BATTCHECK_VpT
//#define BATTCHECK_8bars // FIXME: breaks build
//#define BATTCHECK_4bars // FIXME: breaks build
+#if ROM_SIZE > 10000
+ // battcheck displays 1.25V instead of 1.2V
+ #define USE_EXTRA_BATTCHECK_DIGIT
+#endif
// allow the user to calibrate the voltage readings?
// (adjust in 0.05V increments from -0.30V to +0.30V)
// (1 = -0.30V, 2 = -0.25V, ... 7 = 0V, ... 13 = +0.30V)
@@ -185,7 +195,7 @@
// if the aux LEDs oscillate between "full battery" and "empty battery"
// while in "voltage" mode, enable this to reduce the amplitude of
// those oscillations
-#if (ATTINY==1616) || (ATTINY==1634)
+#if (ROM_SIZE > 10000)
#define USE_LOWPASS_WHILE_ASLEEP
#endif
@@ -195,7 +205,7 @@
// Use "smooth steps" to soften on/off and step changes
// on MCUs with enough room for extra stuff like this
-#if (ATTINY==1616) || (ATTINY==1634)
+#if (ROM_SIZE > 10000)
#define USE_SMOOTH_STEPS
#endif
// 0 = none, 1 = smooth, 2+ = undefined
diff --git a/ui/anduril/ramp-mode.c b/ui/anduril/ramp-mode.c
index 9e19025..4c535b4 100644
--- a/ui/anduril/ramp-mode.c
+++ b/ui/anduril/ramp-mode.c
@@ -287,7 +287,7 @@ uint8_t steady_state(Event event, uint16_t arg) {
static uint16_t ticks_since_adjust = 0;
ticks_since_adjust++;
if (diff) {
- uint16_t ticks_per_adjust = 256;
+ uint16_t ticks_per_adjust = 256 / GRADUAL_ADJUST_SPEED;
if (diff < 0) {
//diff = -diff;
if (actual_level > THERM_FASTER_LEVEL) {
diff --git a/ui/anduril/ramp-mode.h b/ui/anduril/ramp-mode.h
index 59c8db0..1392981 100644
--- a/ui/anduril/ramp-mode.h
+++ b/ui/anduril/ramp-mode.h
@@ -4,14 +4,15 @@
#pragma once
-#ifndef RAMP_LENGTH
-#define RAMP_LENGTH 150 // default, if not overridden in a driver cfg file
+#ifndef RAMP_SIZE
+#define RAMP_SIZE 150 // default, if not overridden in a driver cfg file
#endif
+// TODO: Replace MAX_Xx7135 with MAX_CH1, MAX_CH2, MAX_REGULATED, etc
+
// thermal properties, if not defined per-driver
#ifndef MIN_THERM_STEPDOWN
-// TODO: Replace MAX_Xx7135 with MAX_CH1, MAX_CH2, MAX_REGULATED, etc
-#define MIN_THERM_STEPDOWN MAX_1x7135 // lowest value it'll step down to
+#define MIN_THERM_STEPDOWN (RAMP_SIZE/3) // lowest value it'll step down to
#endif
#ifndef THERM_FASTER_LEVEL
#ifdef MAX_Nx7135
diff --git a/ui/anduril/version-check-mode.c b/ui/anduril/version-check-mode.c
index eebe59b..1cd6968 100644
--- a/ui/anduril/version-check-mode.c
+++ b/ui/anduril/version-check-mode.c
@@ -15,7 +15,10 @@ uint8_t version_check_state(Event event, uint16_t arg) {
inline void version_check_iter() {
for (uint8_t i=0; i<sizeof(version_number)-1; i++) {
uint8_t digit = pgm_read_byte(version_number + i) - '0';
- if (digit < 10) blink_digit(digit);
+ // digits: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ // hex digits: 0 1 2 3 4 5 6 7 8 9 a b c d e f
+ // 'model' file: 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ if (digit < 16) blink_digit(digit);
else { // "buzz" for non-numeric characters
for(uint8_t frame=0; frame<25; frame++) {
set_level((frame&1) << 5);
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.