From d80a1d2a2e01143970ffc13b971859a98ce9cb34 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Thu, 30 Nov 2023 13:50:35 -0700 Subject: added initial code for emisar-d3aa torch --- hw/hank/emisar-d3aa/anduril.h | 118 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 hw/hank/emisar-d3aa/anduril.h (limited to 'hw/hank/emisar-d3aa/anduril.h') diff --git a/hw/hank/emisar-d3aa/anduril.h b/hw/hank/emisar-d3aa/anduril.h new file mode 100644 index 0000000..3d65dc5 --- /dev/null +++ b/hw/hank/emisar-d3aa/anduril.h @@ -0,0 +1,118 @@ +// Emisar D3aa config options for Anduril +// Copyright (C) 2023 thefreeman, Selene ToyKeeper +// SPDX-License-Identifier: GPL-3.0-or-later +#pragma once + +#define HWDEF_H hank/emisar-d3aa/hwdef.h + +// HPRsense : 4.2+0.3+20 = 24.5mR +// Vsense=42.46mV, R1= 191k +// LPRsense : 2R +// HDR ratio: 131.5 +// transition DAC level 20, ramp level 48 +// fifth power ramp 0.02mA to 2001mA + +#define RAMP_SIZE 150 + +// 4 ramp segments: +// - low 1.024V +// - low 2.5 V +// - high 1.024V +// - high 2.5 V +// HDR ratio: 131.5 +// PWM1: DAC Data +// (level_calc.py 4.3287 1 150 7135 5 0.01 1400 --pwm 400000) +// (top level for each "gear": 30 40 120 150) +#define PWM1_LEVELS \ + 3,4,5,7,9,12,15,19,24,29,35,43,51,61,72,84,99,115,133,153,176,202,230,262,297,335,377,424,475,531,592,658,730,809,894,986, \ + 444,488,535,586,641,700,763,830,903,980,1023, \ + 20,22,24,26,28,30,32,35,37,40,43,46,49,52,56,60,63,68,72,77,81,86,92,97,103,109,115,122,129,136,143,151,159,168,177,186,196,206,216,227,239,250,263,275,289,302,316,331,346,362,379,396,413,432,450,470,490,511,532,555,578,602,626,651,678,705,733,761,791,821,853,885,919,953,989, \ + 420,435,451,467,484,501,519,537,556,575,595,615,636,657,679,702,725,749,773,798,824,850,877,905,933,962,992,1023 +#define PWM2_LEVELS \ + V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10, \ + V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25, \ + V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10, \ + V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25 +#define MAX_1x7135 47 +#define HDR_ENABLE_LEVEL_MIN 48 +#define DEFAULT_LEVEL 50 + +// no PWM, so MCU clock speed can be slow +#define HALFSPEED_LEVEL 41 +#define QUARTERSPEED_LEVEL 40 // seems to run fine at 10kHz/4, try reducing more + +#define RAMP_SMOOTH_FLOOR 1 +#define RAMP_SMOOTH_CEIL 119 // 35% / 0.7A / 700 lm +// 1 22 [44] 65 87 108 130 +#define RAMP_DISCRETE_FLOOR 1 +#define RAMP_DISCRETE_CEIL 119 +#define RAMP_DISCRETE_STEPS 7 + +// 20 [45] 70 95 120 +#define SIMPLE_UI_FLOOR 20 +#define SIMPLE_UI_CEIL 129 // 50% / ~1A / ~860 lm +#define SIMPLE_UI_STEPS 5 + +// don't blink mid-ramp +#ifdef BLINK_AT_RAMP_MIDDLE +#undef BLINK_AT_RAMP_MIDDLE +#endif + +// thermal config + +// temperature limit +#define THERM_FASTER_LEVEL 129 // stop panicking at 50%/1A +#define MIN_THERM_STEPDOWN MAX_1x7135 + + +// UI + +#define SIMPLE_UI_ACTIVE 0 // advanced UI by default, because prototype + +// allow Aux Config and Strobe Modes in Simple UI +//#define USE_EXTENDED_SIMPLE_UI + +// Allow 3C in Simple UI for switching between smooth and stepped ramping +#define USE_SIMPLE_UI_RAMPING_TOGGLE + +#define DEFAULT_2C_STYLE 1 // enable 2 click turbo + + +// AUX + +#define USE_BUTTON_LED + +// this light has three aux LED channels: R, G, B +#define USE_AUX_RGB_LEDS + +// show each channel while it scroll by in the menu +#define USE_CONFIG_COLORS + +// blink numbers on the main LEDs by default +#define DEFAULT_BLINK_CHANNEL CM_MAIN + +// use aux red + aux blue for police strobe +#define USE_POLICE_COLOR_STROBE_MODE +#define POLICE_STROBE_USES_AUX +#define POLICE_COLOR_STROBE_CH1 CM_AUXRED +#define POLICE_COLOR_STROBE_CH2 CM_AUXBLU + +// the aux LEDs are front-facing, so turn them off while main LEDs are on +#ifdef USE_INDICATOR_LED_WHILE_RAMPING +#undef USE_INDICATOR_LED_WHILE_RAMPING +#endif + + +// Misc + +#define PARTY_STROBE_ONTIME 1 // slow down party strobe +#define STROBE_OFF_LEVEL 1 // keep the regulator chip on between pulses + +// smoother candle mode with bigger oscillations +#define CANDLE_AMPLITUDE 40 + +// enable 13H factory reset so it can be used on tail e-switch lights +#define USE_SOFT_FACTORY_RESET + +// TODO: disable lowpass while asleep; the MCU oversamples + -- cgit v1.2.3 From d623fe5a1bbe02d680094eae5c16cdc83732a984 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Mon, 4 Mar 2024 06:18:26 -0700 Subject: d3aa: fixed voltage measurement --- hw/hank/emisar-d3aa/anduril.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'hw/hank/emisar-d3aa/anduril.h') diff --git a/hw/hank/emisar-d3aa/anduril.h b/hw/hank/emisar-d3aa/anduril.h index 3d65dc5..ca2ed65 100644 --- a/hw/hank/emisar-d3aa/anduril.h +++ b/hw/hank/emisar-d3aa/anduril.h @@ -6,8 +6,8 @@ #define HWDEF_H hank/emisar-d3aa/hwdef.h // HPRsense : 4.2+0.3+20 = 24.5mR -// Vsense=42.46mV, R1= 191k -// LPRsense : 2R +// Vsense=42.46mV, R1= 165k +// LPRsense : 3R3 // HDR ratio: 131.5 // transition DAC level 20, ramp level 48 // fifth power ramp 0.02mA to 2001mA -- cgit v1.2.3 From 412df484ddf0650c07da56193bfa906a8647d1dc Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Mon, 11 Mar 2024 17:51:14 -0600 Subject: d3aa fine-tuning: - new ramp - production style config defaults (simple mode, Hank config) - candle tuning - fixed way-too-fast thermal regulation (might still be a bit fast, but it's a lot better) --- hw/hank/emisar-d3aa/anduril.h | 60 ++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 32 deletions(-) (limited to 'hw/hank/emisar-d3aa/anduril.h') diff --git a/hw/hank/emisar-d3aa/anduril.h b/hw/hank/emisar-d3aa/anduril.h index ca2ed65..a80557d 100644 --- a/hw/hank/emisar-d3aa/anduril.h +++ b/hw/hank/emisar-d3aa/anduril.h @@ -1,9 +1,10 @@ -// Emisar D3aa config options for Anduril +// Emisar D3AA config options for Anduril // Copyright (C) 2023 thefreeman, Selene ToyKeeper // SPDX-License-Identifier: GPL-3.0-or-later #pragma once #define HWDEF_H hank/emisar-d3aa/hwdef.h +#include "hank/anduril.h" // HPRsense : 4.2+0.3+20 = 24.5mR // Vsense=42.46mV, R1= 165k @@ -21,36 +22,38 @@ // - high 2.5 V // HDR ratio: 131.5 // PWM1: DAC Data -// (level_calc.py 4.3287 1 150 7135 5 0.01 1400 --pwm 400000) -// (top level for each "gear": 30 40 120 150) +// 131.5 * 1024 * 2.5 = 336640 total dimming ratio +// ./bin/dac-scale.py $( ./bin/level_calc.py 4.106 1 150 7135 3 0.01 1400 --pwm 336640 | grep PWM1 | cut -d : -f 2- ) +// top level for each "gear": 30 40 119 150 #define PWM1_LEVELS \ - 3,4,5,7,9,12,15,19,24,29,35,43,51,61,72,84,99,115,133,153,176,202,230,262,297,335,377,424,475,531,592,658,730,809,894,986, \ - 444,488,535,586,641,700,763,830,903,980,1023, \ - 20,22,24,26,28,30,32,35,37,40,43,46,49,52,56,60,63,68,72,77,81,86,92,97,103,109,115,122,129,136,143,151,159,168,177,186,196,206,216,227,239,250,263,275,289,302,316,331,346,362,379,396,413,432,450,470,490,511,532,555,578,602,626,651,678,705,733,761,791,821,853,885,919,953,989, \ - 420,435,451,467,484,501,519,537,556,575,595,615,636,657,679,702,725,749,773,798,824,850,877,905,933,962,992,1023 + 3, 5, 6, 9, 12, 16, 21, 28, 35, 44, 55, 68, 83, 101, 121, 144, 170, 200, 234, 271, 313, 360, 412, 470, 534, 603, 680, 764, 855, 954, \ + 434, 482, 534, 590, 650, 715, 784, 858, 938,1023, \ + 20, 21, 23, 25, 27, 30, 32, 35, 37, 40, 43, 46, 49, 53, 56, 60, 64, 68, 73, 77, 82, 87, 93, 98, 104, 110, 116, 123, 129, 137, 144, 152, 160, 168, 177, 185, 195, 204, 214, 225, 235, 247, 258, 270, 282, 295, 308, 322, 336, 350, 365, 381, 396, 413, 430, 447, 465, 484, 503, 522, 543, 563, 585, 607, 629, 653, 677, 701, 726, 752, 779, 806, 834, 863, 892, 923, 954, 985,1018, \ + 430, 444, 459, 473, 488, 504, 520, 536, 552, 569, 587, 604, 622, 641, 660, 679, 699, 719, 740, 761, 782, 804, 827, 849, 873, 897, 921, 946, 971, 997,1023 #define PWM2_LEVELS \ - V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10, \ - V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25, \ - V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10,V10, \ - V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25,V25 -#define MAX_1x7135 47 -#define HDR_ENABLE_LEVEL_MIN 48 + V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, \ + V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, \ + V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, \ + V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25 +#define MAX_1x7135 40 +#define HDR_ENABLE_LEVEL_MIN 41 + #define DEFAULT_LEVEL 50 // no PWM, so MCU clock speed can be slow #define HALFSPEED_LEVEL 41 -#define QUARTERSPEED_LEVEL 40 // seems to run fine at 10kHz/4, try reducing more +#define QUARTERSPEED_LEVEL 40 // seems to run fine at 10kHz/4, try reducing more? #define RAMP_SMOOTH_FLOOR 1 -#define RAMP_SMOOTH_CEIL 119 // 35% / 0.7A / 700 lm -// 1 22 [44] 65 87 108 130 -#define RAMP_DISCRETE_FLOOR 1 -#define RAMP_DISCRETE_CEIL 119 +#define RAMP_SMOOTH_CEIL 130 // 50% power +// 10 30 [50] 70 90 110 130 +#define RAMP_DISCRETE_FLOOR 10 +#define RAMP_DISCRETE_CEIL 130 #define RAMP_DISCRETE_STEPS 7 -// 20 [45] 70 95 120 -#define SIMPLE_UI_FLOOR 20 -#define SIMPLE_UI_CEIL 129 // 50% / ~1A / ~860 lm +// 10 [40] 70 100 130 +#define SIMPLE_UI_FLOOR 10 +#define SIMPLE_UI_CEIL 130 #define SIMPLE_UI_STEPS 5 // don't blink mid-ramp @@ -61,17 +64,12 @@ // thermal config // temperature limit -#define THERM_FASTER_LEVEL 129 // stop panicking at 50%/1A +#define THERM_FASTER_LEVEL 130 // stop panicking at 50%/1A #define MIN_THERM_STEPDOWN MAX_1x7135 // UI -#define SIMPLE_UI_ACTIVE 0 // advanced UI by default, because prototype - -// allow Aux Config and Strobe Modes in Simple UI -//#define USE_EXTENDED_SIMPLE_UI - // Allow 3C in Simple UI for switching between smooth and stepped ramping #define USE_SIMPLE_UI_RAMPING_TOGGLE @@ -88,7 +86,7 @@ // show each channel while it scroll by in the menu #define USE_CONFIG_COLORS -// blink numbers on the main LEDs by default +// blink numbers on the main LEDs by default (but allow user to change it) #define DEFAULT_BLINK_CHANNEL CM_MAIN // use aux red + aux blue for police strobe @@ -109,10 +107,8 @@ #define STROBE_OFF_LEVEL 1 // keep the regulator chip on between pulses // smoother candle mode with bigger oscillations -#define CANDLE_AMPLITUDE 40 +#define CANDLE_AMPLITUDE 33 -// enable 13H factory reset so it can be used on tail e-switch lights +// added for convenience #define USE_SOFT_FACTORY_RESET -// TODO: disable lowpass while asleep; the MCU oversamples - -- cgit v1.2.3 From 3cafb86c00a95a70e58144230f641c2c94208e7b Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Fri, 29 Mar 2024 08:21:07 -0600 Subject: d3aa weak battery test: blink 3x instead of 2x, and omit number readout --- hw/hank/emisar-d3aa/anduril.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'hw/hank/emisar-d3aa/anduril.h') diff --git a/hw/hank/emisar-d3aa/anduril.h b/hw/hank/emisar-d3aa/anduril.h index a80557d..e4e4458 100644 --- a/hw/hank/emisar-d3aa/anduril.h +++ b/hw/hank/emisar-d3aa/anduril.h @@ -44,6 +44,10 @@ #define HALFSPEED_LEVEL 41 #define QUARTERSPEED_LEVEL 40 // seems to run fine at 10kHz/4, try reducing more? +// should be about 300 mA or ~100 lm, +// to avoid overloading firmware flashing adapters +#define WEAK_BATTERY_TEST_MAX_LEVEL 75 + #define RAMP_SMOOTH_FLOOR 1 #define RAMP_SMOOTH_CEIL 130 // 50% power // 10 30 [50] 70 90 110 130 -- cgit v1.2.3