aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-10-30 04:03:35 -0600
committerSelene ToyKeeper2023-10-30 04:03:35 -0600
commit490d80aeac2a04db0d8bc9d0613b0a91fa8f373c (patch)
treeafccfcbb2222dbbaf29981e6513cbb211266c6b8
parentfixed sp10-pro build error (attiny DFP v2 changed some definitions) (diff)
downloadanduril-490d80aeac2a04db0d8bc9d0613b0a91fa8f373c.tar.gz
anduril-490d80aeac2a04db0d8bc9d0613b0a91fa8f373c.tar.bz2
anduril-490d80aeac2a04db0d8bc9d0613b0a91fa8f373c.zip
converted mateminco-mt35-mini to new API
(but it's not tested; it's the only circuit with its particular design, and I don't have compatible hardware)
-rw-r--r--hwdef-Mateminco_MT35-Mini.h48
-rw-r--r--hwdef-mateminco-mt35-mini.h93
-rw-r--r--spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h50
3 files changed, 119 insertions, 72 deletions
diff --git a/hwdef-Mateminco_MT35-Mini.h b/hwdef-Mateminco_MT35-Mini.h
deleted file mode 100644
index 995a514..0000000
--- a/hwdef-Mateminco_MT35-Mini.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Mateminco MT35-Mini / Astrolux FT03
-// Copyright (C) 2022-2023 (FIXME)
-// SPDX-License-Identifier: GPL-3.0-or-later
-#pragma once
-
-/*
- * ----
- * Reset -|1 8|- VCC
- * eswitch -|2 7|- Aux LED
- * 1x7135 -|3 6|- NC
- * GND -|4 5|- FET
- * ----
- */
-
-#define PWM_CHANNELS 2
-
-#ifndef SWITCH_PIN
-#define SWITCH_PIN PB3 // pin 2
-#define SWITCH_PCINT PCINT3 // pin 2 pin change interrupt
-#endif
-
-#ifndef PWM1_PIN
-#define PWM1_PIN PB4 // pin 3, 1x7135 PWM
-#define PWM1_LVL OCR1B // OCR1B is the output compare register for PB0
-#endif
-
-#ifndef PWM2_PIN
-#define PWM2_PIN PB0 // pin 5, FET PWM
-#define PWM2_LVL OCR0A // OCR0A is the output compare register for PB4
-#endif
-
-#define ADC_PRSCL 0x07 // clk/128
-
-// average drop across diode on this hardware
-#ifndef VOLTAGE_FUDGE_FACTOR
-#define VOLTAGE_FUDGE_FACTOR 7 // add 0.35V
-#endif
-
-// lighted button
-#ifndef AUXLED_PIN
-#define AUXLED_PIN PB2 // pin 7
-#endif
-
-#define FAST 0xA3 // fast PWM both channels
-#define PHASE 0xA1 // phase-correct PWM both channels
-
-#define LAYOUT_DEFINED
-
diff --git a/hwdef-mateminco-mt35-mini.h b/hwdef-mateminco-mt35-mini.h
new file mode 100644
index 0000000..015c813
--- /dev/null
+++ b/hwdef-mateminco-mt35-mini.h
@@ -0,0 +1,93 @@
+// Mateminco MT35-Mini / Astrolux FT03
+// Copyright (C) 2022-2023 (original author TBD), Selene ToyKeeper
+// SPDX-License-Identifier: GPL-3.0-or-later
+#pragma once
+
+/*
+ * ----
+ * Reset -|1 8|- VCC
+ * eswitch -|2 7|- Aux LED
+ * 1x7135 -|3 6|- NC
+ * GND -|4 5|- FET
+ * ----
+ */
+
+#define ATTINY 85
+#include <avr/io.h>
+
+#define HWDEF_C_FILE hwdef-emisar-d4.c
+
+// channel modes
+// * 0. FET+7135 stacked
+#define NUM_CHANNEL_MODES 1
+enum CHANNEL_MODES {
+ CM_MAIN = 0,
+};
+
+#define DEFAULT_CHANNEL_MODE CM_MAIN
+
+// right-most bit first, modes are in fedcba9876543210 order
+#define CHANNEL_MODES_ENABLED 0b00000001
+
+
+#define PWM_CHANNELS 2 // old, remove this
+
+#define PWM_BITS 8 // attiny85 only supports up to 8 bits
+#define PWM_GET PWM_GET8
+#define PWM_DATATYPE uint8_t
+#define PWM_DATATYPE2 uint16_t
+#define PWM1_DATATYPE uint8_t // little FET ramp
+#define PWM2_DATATYPE uint8_t // big FET ramp
+
+#define PWM_TOP_INIT 255 // highest value used in top half of ramp
+
+// 1x7135 channel
+#define CH1_PIN PB4 // pin 3, 1x7135 PWM
+#define CH1_PWM OCR1B // OCR1B is the output compare register for PB4
+
+// DD FET channel
+#define CH2_PIN PB0 // pin 5, FET PWM
+#define CH2_PWM OCR0A // OCR0A is the output compare register for PB0
+
+// lighted button
+#define AUXLED_PIN PB2 // pin 7
+
+// e-switch
+#ifndef SWITCH_PIN
+#define SWITCH_PIN PB3 // pin 2
+#define SWITCH_PCINT PCINT3 // pin 2 pin change interrupt
+#endif
+
+#define ADC_PRSCL 0x07 // clk/128
+
+// average drop across diode on this hardware
+#ifndef VOLTAGE_FUDGE_FACTOR
+#define VOLTAGE_FUDGE_FACTOR 7 // add 0.35V
+#endif
+
+#define FAST 0xA3 // fast PWM both channels
+#define PHASE 0xA1 // phase-correct PWM both channels
+
+
+inline void hwdef_setup() {
+ // configure PWM channels
+ DDRB = (1 << CH1_PIN)
+ | (1 << CH2_PIN);
+
+ // configure PWM channels
+ TCCR0B = 0x01; // pre-scaler for timer (1 => 1, 2 => 8, 3 => 64...)
+ TCCR0A = PHASE;
+
+ // Second PWM counter is ... weird
+ TCCR1 = _BV (CS10);
+ GTCCR = _BV (COM1B1) | _BV (PWM1B);
+ OCR1C = PWM_TOP_INIT; // Set ceiling value to maximum
+
+ // configure e-switch
+ PORTB = (1 << SWITCH_PIN); // e-switch is the only input
+ PCMSK = (1 << SWITCH_PIN); // pin change interrupt uses this pin
+}
+
+
+#define LAYOUT_DEFINED
+
diff --git a/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h b/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h
index fef1af6..1ca5008 100644
--- a/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h
+++ b/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h
@@ -1,44 +1,42 @@
// Mateminco MT35 Mini / Astrolux FT03
-// Copyright (C) 2022-2023 (FIXME)
+// Copyright (C) 2022-2023 (original author TBD), Selene ToyKeeper
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#define MODEL_NUMBER "0531"
-#include "hwdef-Mateminco_MT35-Mini.h"
+#include "hwdef-mateminco-mt35-mini.h"
// ATTINY: 85
-// this light should be fine running a bit hotter than most
-#undef DEFAULT_THERM_CEIL
-#define DEFAULT_THERM_CEIL 55
-
// the button lights up
#define USE_INDICATOR_LED
// the button is visible while main LEDs are on
#define USE_INDICATOR_LED_WHILE_RAMPING
-// enable blinking aux LEDs
-#define TICK_DURING_STANDBY
-#define STANDBY_TICK_SPEED 3 // every 0.128 s
+#define RAMP_SIZE 150
-#define RAMP_LENGTH 150
// level_calc.py fifth 2 150 7135 1 1 120 FET 1 10 2000
#define PWM1_LEVELS 1,2,2,3,4,5,6,7,8,9,11,13,14,16,18,21,23,26,28,31,35,38,41,45,49,53,58,63,67,73,78,84,90,96,102,109,116,124,131,139,147,156,165,174,184,194,204,215,226,237,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,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,1,2,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,20,21,22,24,25,27,28,30,31,33,35,36,38,40,42,43,45,47,49,51,53,55,57,59,62,64,66,68,71,73,75,78,80,83,86,88,91,94,96,99,102,105,108,111,114,117,120,124,127,130,134,137,140,144,148,151,155,159,162,166,170,174,178,182,186,190,195,199,203,208,212,217,221,226,231,235,240,245,250,255
-#define DEFAULT_LEVEL 46
-#define MAX_1x7135 52
-#define HALFSPEED_LEVEL 20
-#define QUARTERSPEED_LEVEL 10
-#define RAMP_SMOOTH_FLOOR 1
-#define RAMP_SMOOTH_CEIL 112
-#define RAMP_DISCRETE_FLOOR 10
-#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL
-#define RAMP_DISCRETE_STEPS 7
+#define DEFAULT_LEVEL 46
+#define MAX_1x7135 52
+#define HALFSPEED_LEVEL 20
+#define QUARTERSPEED_LEVEL 10
+
+#define RAMP_SMOOTH_FLOOR 1
+#define RAMP_SMOOTH_CEIL 112
+#define RAMP_DISCRETE_FLOOR 10
+#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL
+#define RAMP_DISCRETE_STEPS 7
// safe limit ~33% power
-#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR
-#define SIMPLE_UI_CEIL RAMP_LENGTH
-#define SIMPLE_UI_STEPS 5
+#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR
+#define SIMPLE_UI_CEIL RAMP_DISCRETE_CEIL
+#define SIMPLE_UI_STEPS 5
+
+// this light should be fine running a bit hotter than most
+#undef DEFAULT_THERM_CEIL
+#define DEFAULT_THERM_CEIL 55
// stop panicking at ~40% power
#define THERM_FASTER_LEVEL 120
@@ -54,10 +52,14 @@
// Allow 3C in Simple UI for switching between smooth and stepped ramping
#define USE_SIMPLE_UI_RAMPING_TOGGLE
+// enable extra features
+#define USE_SMOOTH_STEPS
+
// too big, turn off extra features
-//#undef USE_SOS_MODE
+#undef USE_TACTICAL_MODE
+#undef USE_SOS_MODE
//#undef USE_RAMP_AFTER_MOON_CONFIG
//#undef USE_RAMP_SPEED_CONFIG
//#undef USE_VOLTAGE_CORRECTION
//#undef USE_2C_STYLE_CONFIG
-#undef USE_TACTICAL_MODE
+