From d34d0e7acb1f1e49d21af7cf1c9e08161ce95dd4 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sun, 17 Sep 2023 04:37:25 -0600 Subject: fixed builds which weren't using set_level_zero() yet... - emisar-d4 - emisar-d4v2 - emisar-d4v2-nofet - emisar-d4sv2 - emisar-2ch - emisar-2ch-fet - noctigon-dm11-boost - noctigon-k1 - noctigon-kr4 - noctigon-kr4-nofet - sofirn-lt1s-pro ... and removed old build targets for d4sv2-tintramp, because it was replaced by emisar-2ch a while ago. --- hwdef-emisar-2ch-fet.c | 26 ++----- hwdef-emisar-2ch.c | 26 ++----- hwdef-emisar-d4.c | 14 ++-- hwdef-emisar-d4sv2.c | 18 ++--- hwdef-emisar-d4v2-nofet.c | 14 ++-- hwdef-emisar-d4v2.c | 16 ++-- hwdef-noctigon-dm11-boost.c | 18 ++--- hwdef-noctigon-k1.c | 20 ++--- hwdef-noctigon-kr4-nofet.c | 18 ++--- hwdef-noctigon-kr4.c | 18 ++--- hwdef-sofirn-lt1s-pro.c | 62 ++++----------- .../anduril/cfg-emisar-d4sv2-tintramp-fet.h | 74 ------------------ .../anduril/cfg-emisar-d4sv2-tintramp.h | 88 ---------------------- spaghetti-monster/fsm-channels.c | 2 + spaghetti-monster/fsm-channels.h | 4 + 15 files changed, 101 insertions(+), 317 deletions(-) delete mode 100644 spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp-fet.h delete mode 100644 spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp.h diff --git a/hwdef-emisar-2ch-fet.c b/hwdef-emisar-2ch-fet.c index 7cf48d3..caf579d 100644 --- a/hwdef-emisar-2ch-fet.c +++ b/hwdef-emisar-2ch-fet.c @@ -7,6 +7,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_ch1(uint8_t level); void set_level_ch2(uint8_t level); void set_level_both(uint8_t level); @@ -92,11 +94,11 @@ void set_pwms(uint8_t ch1_pwm, uint8_t ch2_pwm, uint8_t ch3_pwm, uint16_t top) { if (! was_on) PWM_CNT = 0; } -void set_level_ch1(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, 0, PWM_TOP_INIT); +void set_level_zero() { + return set_pwms(0, 0, 0, PWM_TOP_INIT); +} - level --; +void set_level_ch1(uint8_t level) { uint8_t pwm1 = PWM_GET8 (pwm1_levels, level); uint8_t pwm3 = PWM_GET8 (pwm2_levels, level); uint16_t top = PWM_GET16(pwm3_levels, level); @@ -104,20 +106,12 @@ void set_level_ch1(uint8_t level) { } void set_level_ch2(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, 0, PWM_TOP_INIT); - - level --; uint8_t pwm2 = PWM_GET8 (pwm4_levels, level); uint16_t top = PWM_GET16(pwm5_levels, level); set_pwms(0, pwm2, 0, top); } void set_level_both(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, 0, PWM_TOP_INIT); - - level --; uint8_t pwm1 = PWM_GET8 (pwm1_levels, level); uint8_t pwm3 = PWM_GET8 (pwm2_levels, level); uint16_t top = PWM_GET16(pwm3_levels, level); @@ -125,10 +119,6 @@ void set_level_both(uint8_t level) { } void set_level_blend(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, 0, PWM_TOP_INIT); - - level --; uint16_t pwm1, pwm2; uint8_t pwm3 = PWM_GET8 (pwm2_levels, level); // DD FET //uint16_t brightness = PWM_GET8 (pwm1_levels, level) << 1; @@ -142,10 +132,6 @@ void set_level_blend(uint8_t level) { } void set_level_auto(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, 0, PWM_TOP_INIT); - - level --; uint16_t pwm1, pwm2; uint8_t brightness = PWM_GET8 (pwm4_levels, level); uint16_t top = PWM_GET16(pwm5_levels, level); diff --git a/hwdef-emisar-2ch.c b/hwdef-emisar-2ch.c index 7955cf6..31d27af 100644 --- a/hwdef-emisar-2ch.c +++ b/hwdef-emisar-2ch.c @@ -7,6 +7,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_ch1(uint8_t level); void set_level_ch2(uint8_t level); void set_level_both(uint8_t level); @@ -90,41 +92,29 @@ void set_pwms(uint16_t ch1_pwm, uint16_t ch2_pwm, uint16_t top) { if (! was_on) PWM_CNT = 0; } -void set_level_ch1(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, PWM_TOP_INIT); +void set_level_zero() { + return set_pwms(0, 0, PWM_TOP_INIT); +} - level --; +void set_level_ch1(uint8_t level) { uint16_t pwm = PWM_GET(pwm1_levels, level); uint16_t top = PWM_GET(pwm_tops, level); set_pwms(pwm, 0, top); } void set_level_ch2(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, PWM_TOP_INIT); - - level --; uint16_t pwm = PWM_GET(pwm1_levels, level); uint16_t top = PWM_GET(pwm_tops, level); set_pwms(0, pwm, top); } void set_level_both(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, PWM_TOP_INIT); - - level --; uint16_t pwm = PWM_GET(pwm1_levels, level); uint16_t top = PWM_GET(pwm_tops, level); set_pwms(pwm, pwm, top); } void set_level_blend(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, PWM_TOP_INIT); - - level --; PWM_DATATYPE ch1_pwm, ch2_pwm; PWM_DATATYPE brightness = PWM_GET(pwm1_levels, level); PWM_DATATYPE top = PWM_GET(pwm_tops, level); @@ -136,10 +126,6 @@ void set_level_blend(uint8_t level) { } void set_level_auto(uint8_t level) { - if (0 == level) - return set_pwms(0, 0, PWM_TOP_INIT); - - level --; PWM_DATATYPE ch1_pwm, ch2_pwm; PWM_DATATYPE brightness = PWM_GET(pwm1_levels, level); PWM_DATATYPE top = PWM_GET(pwm_tops, level); diff --git a/hwdef-emisar-d4.c b/hwdef-emisar-d4.c index 6069530..972f682 100644 --- a/hwdef-emisar-d4.c +++ b/hwdef-emisar-d4.c @@ -11,6 +11,8 @@ #define AUX_CHANNELS #endif +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -24,17 +26,15 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + CH2_PWM = 0; +} + // TODO: implement delta-sigma modulation for better low modes // single set of LEDs with 2 stacked power channels, DDFET+1 or DDFET+linear void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - CH2_PWM = 0; - return; - } - - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); PWM_DATATYPE ch2_pwm = PWM_GET(pwm2_levels, level); diff --git a/hwdef-emisar-d4sv2.c b/hwdef-emisar-d4sv2.c index c19054e..6399fb8 100644 --- a/hwdef-emisar-d4sv2.c +++ b/hwdef-emisar-d4sv2.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,17 +21,15 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + CH2_PWM = 0; + CH3_PWM = 0; + PWM_CNT = 0; // reset phase +} + // single set of LEDs with 3 stacked power channels, DDFET+3+1 void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - CH2_PWM = 0; - CH3_PWM = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); PWM_DATATYPE ch2_pwm = PWM_GET(pwm2_levels, level); PWM_DATATYPE ch3_pwm = PWM_GET(pwm3_levels, level); diff --git a/hwdef-emisar-d4v2-nofet.c b/hwdef-emisar-d4v2-nofet.c index 60d80ea..24477a7 100644 --- a/hwdef-emisar-d4v2-nofet.c +++ b/hwdef-emisar-d4v2-nofet.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,15 +21,13 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + PWM_CNT = 0; // reset phase +} + // single set of LEDs with just a 1x7135 chip, max 350 mA or ~130 lm void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM uint16_t top = PWM_GET16(pwm_tops, level); diff --git a/hwdef-emisar-d4v2.c b/hwdef-emisar-d4v2.c index ada4eb8..026b30d 100644 --- a/hwdef-emisar-d4v2.c +++ b/hwdef-emisar-d4v2.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,16 +21,14 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + CH2_PWM = 0; + PWM_CNT = 0; // reset phase +} + // single set of LEDs with 2 stacked power channels, DDFET+1 or DDFET+linear void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - CH2_PWM = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); PWM_DATATYPE ch2_pwm = PWM_GET(pwm2_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM diff --git a/hwdef-noctigon-dm11-boost.c b/hwdef-noctigon-dm11-boost.c index 006cbf8..08e2798 100644 --- a/hwdef-noctigon-dm11-boost.c +++ b/hwdef-noctigon-dm11-boost.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,20 +21,18 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + PWM_CNT = 0; // reset phase + CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN ); // disable opamp + CH1_ENABLE_PORT2 &= ~(1 << CH1_ENABLE_PIN2); // disable PMIC +} + // single set of LEDs with single power channel, boost void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - PWM_CNT = 0; // reset phase - CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN ); // disable opamp - CH1_ENABLE_PORT2 &= ~(1 << CH1_ENABLE_PIN2); // disable PMIC - return; - } - CH1_ENABLE_PORT |= (1 << CH1_ENABLE_PIN ); // enable opamp CH1_ENABLE_PORT2 |= (1 << CH1_ENABLE_PIN2); // enable PMIC - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM uint16_t top = PWM_GET16(pwm_tops, level); diff --git a/hwdef-noctigon-k1.c b/hwdef-noctigon-k1.c index 5063fd5..5d61860 100644 --- a/hwdef-noctigon-k1.c +++ b/hwdef-noctigon-k1.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,19 +21,17 @@ Channel channels[] = { }; -// single set of LEDs with 2 stacked power channels, linear + DD FET -void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - //CH2_PWM = 0; - //PWM_CNT = 0; // reset phase - CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp - return; - } +void set_level_zero() { + CH1_PWM = 0; + //CH2_PWM = 0; + //PWM_CNT = 0; // reset phase + CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp +} +// single LED with 1 power channels, linear +void set_level_main(uint8_t level) { CH1_ENABLE_PORT |= (1 << CH1_ENABLE_PIN); // enable opamp - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); //PWM_DATATYPE ch2_pwm = PWM_GET(pwm2_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM diff --git a/hwdef-noctigon-kr4-nofet.c b/hwdef-noctigon-kr4-nofet.c index 8ce9525..0492def 100644 --- a/hwdef-noctigon-kr4-nofet.c +++ b/hwdef-noctigon-kr4-nofet.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,19 +21,17 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + CH2_PWM = 0; + PWM_CNT = 0; // reset phase + CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp +} + // single set of LEDs with linear power channel void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - CH2_PWM = 0; - PWM_CNT = 0; // reset phase - CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp - return; - } - CH1_ENABLE_PORT |= (1 << CH1_ENABLE_PIN); // enable opamp - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM uint16_t top = PWM_GET16(pwm_tops, level); diff --git a/hwdef-noctigon-kr4.c b/hwdef-noctigon-kr4.c index e49ff69..b721bdc 100644 --- a/hwdef-noctigon-kr4.c +++ b/hwdef-noctigon-kr4.c @@ -6,6 +6,8 @@ #include "chan-rgbaux.c" +void set_level_zero(); + void set_level_main(uint8_t level); bool gradual_tick_main(uint8_t gt); @@ -19,19 +21,17 @@ Channel channels[] = { }; +void set_level_zero() { + CH1_PWM = 0; + CH2_PWM = 0; + PWM_CNT = 0; // reset phase + CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp +} + // single set of LEDs with 2 stacked power channels, linear + DD FET void set_level_main(uint8_t level) { - if (level == 0) { - CH1_PWM = 0; - CH2_PWM = 0; - PWM_CNT = 0; // reset phase - CH1_ENABLE_PORT &= ~(1 << CH1_ENABLE_PIN); // disable opamp - return; - } - CH1_ENABLE_PORT |= (1 << CH1_ENABLE_PIN); // enable opamp - level --; // PWM array index = level - 1 PWM_DATATYPE ch1_pwm = PWM_GET(pwm1_levels, level); PWM_DATATYPE ch2_pwm = PWM_GET(pwm2_levels, level); // pulse frequency modulation, a.k.a. dynamic PWM diff --git a/hwdef-sofirn-lt1s-pro.c b/hwdef-sofirn-lt1s-pro.c index 1359c29..90c2c07 100644 --- a/hwdef-sofirn-lt1s-pro.c +++ b/hwdef-sofirn-lt1s-pro.c @@ -4,6 +4,8 @@ #pragma once +void set_level_zero(); + void set_level_red(uint8_t level); void set_level_white_blend(uint8_t level); void set_level_auto_2ch_blend(uint8_t level); @@ -76,34 +78,26 @@ void calc_auto_3ch_blend( } +void set_level_zero() { + WARM_PWM_LVL = 0; + COOL_PWM_LVL = 0; + RED_PWM_LVL = 0; + PWM_CNT = 0; // reset phase +} + // single set of LEDs with 1 power channel and dynamic PWM void set_level_red(uint8_t level) { - if (level == 0) { - RED_PWM_LVL = 0; - PWM_CNT = 0; // reset phase - } else { - level --; // PWM array index = level - 1 - RED_PWM_LVL = PWM_GET(pwm1_levels, level); - // pulse frequency modulation, a.k.a. dynamic PWM - PWM_TOP = PWM_GET(pwm_tops, level); - // force reset phase when turning on from zero - // (because otherwise the initial response is inconsistent) - if (! actual_level) PWM_CNT = 0; - } + RED_PWM_LVL = PWM_GET(pwm1_levels, level); + // pulse frequency modulation, a.k.a. dynamic PWM + PWM_TOP = PWM_GET(pwm_tops, level); + // force reset phase when turning on from zero + // (because otherwise the initial response is inconsistent) + if (! actual_level) PWM_CNT = 0; } // warm + cool blend w/ dynamic PWM void set_level_white_blend(uint8_t level) { - if (level == 0) { - WARM_PWM_LVL = 0; - COOL_PWM_LVL = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 - PWM_DATATYPE warm_PWM, cool_PWM; PWM_DATATYPE brightness = PWM_GET(pwm1_levels, level); PWM_DATATYPE top = PWM_GET(pwm_tops, level); @@ -120,15 +114,6 @@ void set_level_white_blend(uint8_t level) { // same as white blend, but tint is calculated from the ramp level void set_level_auto_2ch_blend(uint8_t level) { - if (level == 0) { - WARM_PWM_LVL = 0; - COOL_PWM_LVL = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 - PWM_DATATYPE warm_PWM, cool_PWM; PWM_DATATYPE brightness = PWM_GET(pwm1_levels, level); PWM_DATATYPE top = PWM_GET(pwm_tops, level); @@ -145,16 +130,6 @@ void set_level_auto_2ch_blend(uint8_t level) { // "auto tint" channel mode with dynamic PWM void set_level_auto_3ch_blend(uint8_t level) { - if (level == 0) { - WARM_PWM_LVL = 0; - COOL_PWM_LVL = 0; - RED_PWM_LVL = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 - PWM_DATATYPE a, b, c; calc_auto_3ch_blend(&a, &b, &c, level); @@ -176,13 +151,6 @@ void set_level_red_white_blend(uint8_t level) { set_level_white_blend(level); channel_mode = CM_WHITE_RED; - if (level == 0) { - RED_PWM_LVL = 0; - PWM_CNT = 0; // reset phase - return; - } - - level --; // PWM array index = level - 1 PWM_DATATYPE vpwm = PWM_GET(pwm1_levels, level); // set the red LED as a ratio of the white output level diff --git a/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp-fet.h b/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp-fet.h deleted file mode 100644 index 437387c..0000000 --- a/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp-fet.h +++ /dev/null @@ -1,74 +0,0 @@ -// Emisar D4S V2 tint-ramping (plus FET) config options for Anduril (based on Noctigon K9.3) -// Copyright (C) 2021-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "cfg-emisar-d4sv2-tintramp.h" -#undef MODEL_NUMBER -#define MODEL_NUMBER "0136" -// ATTINY: 1634 - -// enable the FET channel, even though it's ... kinda funky -#undef PWM_CHANNELS -#define PWM_CHANNELS 2 - -// main LEDs -// output: unknown, 2000 lm? -// FET: unknown, 3000 lm? -// 2nd LEDs -// output: unknown, 2000 lm? -#define RAMP_LENGTH 150 -///// copy non-FET ramp, but add FET to the top 10 levels from 141 to 150 -/* old -// level_calc.py 5.01 1 140 7135 1 0.2 2000 --pwm dyn:69:16383:511 -// plus a FET segment -// abstract ramp (power is split between both sets of LEDs) -// level_calc.py 2 1 10 7135 5 50.0 3000 --pwm 255 -// append: ,500,482,456,420,374,318,252,178,94,0 -*/ -/* also old -// level_calc.py 3 1 11 7135 511 2000 5000 --pwm 1022 -// append: 549,589,633,679,728,780,836,894,957,1022 -//#undef PWM1_LEVELS -//#define PWM1_LEVELS 1,1,1,2,2,3,3,4,5,5,6,7,8,9,10,12,13,14,16,18,19,21,23,25,27,30,32,35,37,40,43,45,48,51,54,58,61,64,67,70,74,77,80,83,86,89,92,95,97,99,101,103,105,106,106,107,106,106,104,102,100,96,92,87,81,73,65,56,45,33,35,37,39,41,43,45,47,49,52,54,57,59,62,65,68,71,74,78,81,85,89,92,96,100,105,109,114,118,123,128,133,139,144,150,156,162,168,175,181,188,195,202,210,217,225,233,242,250,259,268,278,287,297,307,318,328,339,351,362,374,386,399,412,425,438,452,466,481,496,511,549,589,633,679,728,780,836,894,957,1022 -// append: ,511,511,511,511,511,511,511,511,511,511 -//#undef PWM_TOPS -//#define PWM_TOPS 16383,13469,10296,14694,10845,14620,11496,13507,14400,11954,12507,12676,12605,12376,12036,12805,12240,11650,11882,11933,11243,11155,10988,10763,10497,10569,10223,10164,9781,9646,9475,9071,8870,8652,8422,8330,8077,7823,7569,7318,7169,6919,6676,6439,6209,5986,5770,5561,5305,5063,4834,4618,4413,4180,3925,3723,3468,3264,3016,2787,2576,2333,2111,1885,1658,1412,1189,968,734,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 -*/ - -// prepend: 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -#define PWM2_LEVELS 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,14,27,45,68,96,129,166,208,255 -#undef DEFAULT_LEVEL -#define DEFAULT_LEVEL 70 -#undef MAX_1x7135 -#define MAX_1x7135 130 - -#undef RAMP_SMOOTH_FLOOR -#define RAMP_SMOOTH_FLOOR 10 // level 1 is unreliable (?) -#undef RAMP_SMOOTH_CEIL -#define RAMP_SMOOTH_CEIL 130 -// 10, 30, 50, [70], 90, 110, [130] -#undef RAMP_DISCRETE_FLOOR -#define RAMP_DISCRETE_FLOOR 10 -#undef RAMP_DISCRETE_CEIL -#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL -#undef RAMP_DISCRETE_STEPS -#define RAMP_DISCRETE_STEPS 7 - -// safe limit highest regulated power (no FET or turbo) -#undef SIMPLE_UI_FLOOR -#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR -#undef SIMPLE_UI_CEIL -#define SIMPLE_UI_CEIL RAMP_DISCRETE_CEIL -#undef SIMPLE_UI_STEPS -#define SIMPLE_UI_STEPS 5 - -// stop panicking at ~2000 lm -#undef THERM_FASTER_LEVEL -#define THERM_FASTER_LEVEL 130 -#undef MIN_THERM_STEPDOWN -#define MIN_THERM_STEPDOWN 65 // should be above highest dyn_pwm level - -// speed up party strobe; the FET is really fast -#undef PARTY_STROBE_ONTIME - diff --git a/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp.h b/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp.h deleted file mode 100644 index c9a0b4f..0000000 --- a/spaghetti-monster/anduril/cfg-emisar-d4sv2-tintramp.h +++ /dev/null @@ -1,88 +0,0 @@ -// Emisar D4S V2 tint-ramping config options for Anduril (based on Noctigon K9.3) -// Copyright (C) 2021-2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#define MODEL_NUMBER "0135" -#include "hwdef-Emisar_D4Sv2-tintramp.h" -#include "hank-cfg.h" -// ATTINY: 1634 - -// this light has three aux LED channels: R, G, B -#define USE_AUX_RGB_LEDS -// the aux LEDs are front-facing, so turn them off while main LEDs are on -// it also has an independent LED in the button -#define USE_BUTTON_LED -// TODO: the whole "indicator LED" thing needs to be refactored into -// "aux LED(s)" and "button LED(s)" since they work a bit differently -// enabling this option breaks the button LED on D4v2.5 -#ifdef USE_INDICATOR_LED_WHILE_RAMPING -#undef USE_INDICATOR_LED_WHILE_RAMPING -#endif - -// has two channels of independent LEDs -#define USE_TINT_RAMPING -// how much to increase total brightness at middle tint -// (0 = 100% brightness, 64 = 200% brightness) -#define TINT_RAMPING_CORRECTION 0 // none, linear regulator doesn't need it - -// main LEDs -// output: unknown, 2000 lm? -// FET: absent / unused? -// 2nd LEDs -// output: unknown, 2000 lm? -#define RAMP_LENGTH 150 -// abstract ramp (power is split between both sets of LEDs) -// 1-130: 0 to 100% power -// level_calc.py 5.01 1 130 7135 2 0.2 2000 --pwm dyn:64:16383:511 -// 131 to 150: 101% to 200% power -// level_calc.py 6.44 1 150 7135 1 0.2 2000 --pwm dyn:74:16383:1022 -#define PWM1_LEVELS 2,2,2,3,3,4,4,5,6,7,8,9,10,11,13,14,16,17,19,21,23,25,28,30,33,35,38,41,44,47,50,54,57,60,64,67,71,74,78,81,84,88,91,94,97,99,101,103,105,106,107,107,107,106,105,102,99,95,90,84,77,68,58,47,34,36,38,40,42,44,47,49,52,54,57,60,63,66,69,73,76,80,83,87,91,96,100,104,109,114,119,124,130,135,141,147,153,160,166,173,180,187,195,203,211,219,228,236,245,255,264,274,285,295,306,317,329,340,353,365,378,391,405,419,433,448,463,479,495,511,530,550,570,591,612,634,657,680,705,730,755,782,809,837,865,895,925,957,989,1022 -#define PWM_TOPS 16383,13234,9781,13826,9593,13434,9973,12021,12900,13193,13150,12899,12508,12023,12666,11982,12181,11422,11393,11247,11018,10731,10826,10434,10365,9927,9767,9565,9332,9076,8806,8693,8395,8096,7928,7626,7439,7143,6948,6665,6393,6203,5946,5700,5465,5187,4926,4681,4451,4195,3957,3700,3463,3213,2983,2718,2476,2231,1986,1742,1501,1245,997,756,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511,511 -#define DEFAULT_LEVEL 70 -#define MAX_1x7135 150 -#define HALFSPEED_LEVEL 10 -#define QUARTERSPEED_LEVEL 2 - -#define USE_MANUAL_MEMORY_TIMER_FOR_TINT -//#define DEFAULT_MANUAL_MEMORY DEFAULT_LEVEL -//#define DEFAULT_MANUAL_MEMORY_TIMER 10 - -#define RAMP_SMOOTH_FLOOR 10 // level 1 is unreliable (?) -#define RAMP_SMOOTH_CEIL 130 -// 10, 30, 50, [70], 90, 110, [130] -#define RAMP_DISCRETE_FLOOR 10 -#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL -#define RAMP_DISCRETE_STEPS 7 - -// safe limit highest regulated power (no FET or turbo) -#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR -#define SIMPLE_UI_CEIL RAMP_DISCRETE_CEIL -#define SIMPLE_UI_STEPS 5 - -// stop panicking at ~1500 lm -#define THERM_FASTER_LEVEL 130 -#define MIN_THERM_STEPDOWN 65 // should be above highest dyn_pwm level - -// use the brightest setting for strobe -#define STROBE_BRIGHTNESS MAX_LEVEL -// slow down party strobe; this driver can't pulse for 1ms or less -#define PARTY_STROBE_ONTIME 2 - -// the default of 26 looks a bit flat, so increase it -#define CANDLE_AMPLITUDE 33 - -// the power regulator is a bit slow, so push it harder for a quick response from off -#define DEFAULT_JUMP_START_LEVEL 21 -#define BLINK_BRIGHTNESS DEFAULT_LEVEL -#define BLINK_ONCE_TIME 12 // longer blink, since main LEDs are slow - -#define THERM_CAL_OFFSET 5 - -#ifdef BLINK_AT_RAMP_MIDDLE -#undef BLINK_AT_RAMP_MIDDLE -#endif - -// for consistency with KR4 (not otherwise necessary though) -#define USE_SOFT_FACTORY_RESET - diff --git a/spaghetti-monster/fsm-channels.c b/spaghetti-monster/fsm-channels.c index 69add93..62b608c 100644 --- a/spaghetti-monster/fsm-channels.c +++ b/spaghetti-monster/fsm-channels.c @@ -7,6 +7,7 @@ #include "fsm-ramping.h" +#if NUM_CHANNEL_MODES > 1 void set_channel_mode(uint8_t mode) { uint8_t cur_level = actual_level; // turn off old LEDs before changing channel @@ -18,6 +19,7 @@ void set_channel_mode(uint8_t mode) { // update the LEDs set_level(cur_level); } +#endif // if NUM_CHANNEL_MODES > 1 #ifdef USE_CALC_2CH_BLEND diff --git a/spaghetti-monster/fsm-channels.h b/spaghetti-monster/fsm-channels.h index 55fc826..113a85c 100644 --- a/spaghetti-monster/fsm-channels.h +++ b/spaghetti-monster/fsm-channels.h @@ -42,6 +42,8 @@ Channel channels[]; // values are defined in the hwdef-*.c #define USE_CHANNEL_MODES // current multi-channel mode uint8_t channel_mode = DEFAULT_CHANNEL_MODE; +#else + #define channel_mode 0 #endif #ifdef USE_CUSTOM_CHANNEL_3H_MODES @@ -79,7 +81,9 @@ StatePtr channel_3H_modes[NUM_CHANNEL_MODES]; #define channel_has_args(n) (channels[n].has_args) #endif +#if NUM_CHANNEL_MODES > 1 void set_channel_mode(uint8_t mode); +#endif #ifdef USE_CALC_2CH_BLEND void calc_2ch_blend( -- cgit v1.2.3