aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-09-17 04:37:25 -0600
committerSelene ToyKeeper2023-09-17 04:37:25 -0600
commitd34d0e7acb1f1e49d21af7cf1c9e08161ce95dd4 (patch)
treef2bcb36951f2c83064c17ff58aca4c5c59eed112 /hw
parentfixed bug: smooth steps could sometimes turn off entirely (diff)
downloadanduril-d34d0e7acb1f1e49d21af7cf1c9e08161ce95dd4.tar.gz
anduril-d34d0e7acb1f1e49d21af7cf1c9e08161ce95dd4.tar.bz2
anduril-d34d0e7acb1f1e49d21af7cf1c9e08161ce95dd4.zip
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.
Diffstat (limited to '')
-rw-r--r--hwdef-emisar-2ch-fet.c26
-rw-r--r--hwdef-emisar-2ch.c26
-rw-r--r--hwdef-emisar-d4.c14
-rw-r--r--hwdef-emisar-d4sv2.c18
-rw-r--r--hwdef-emisar-d4v2-nofet.c14
-rw-r--r--hwdef-emisar-d4v2.c16
-rw-r--r--hwdef-noctigon-dm11-boost.c18
-rw-r--r--hwdef-noctigon-k1.c20
-rw-r--r--hwdef-noctigon-kr4-nofet.c18
-rw-r--r--hwdef-noctigon-kr4.c18
-rw-r--r--hwdef-sofirn-lt1s-pro.c62
11 files changed, 95 insertions, 155 deletions
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
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.