aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-10-30 04:03:35 -0600
committerSelene ToyKeeper2023-10-30 04:03:35 -0600
commit490d80aeac2a04db0d8bc9d0613b0a91fa8f373c (patch)
treeafccfcbb2222dbbaf29981e6513cbb211266c6b8 /hw
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)
Diffstat (limited to '')
-rw-r--r--hwdef-Mateminco_MT35-Mini.h48
-rw-r--r--hwdef-mateminco-mt35-mini.h93
2 files changed, 93 insertions, 48 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
+