Skip to content

Commit 4a2ec0f

Browse files
authored
Fix MK3.5 selftest (#153)
* Fix fan mapping and axis selftest - #152 * Add 3.5 and 3.9 to documentation auto-generator
1 parent 6ab8e5a commit 4a2ec0f

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

hw/arm/prusa/prusa-mk4.c

+26-7
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ enum {
7878
AXIS_MAX,
7979
};
8080

81+
enum {
82+
FAN_PRINT,
83+
FAN_HBR,
84+
FAN_MAX
85+
};
86+
8187
enum {
8288
T_NOZ,
8389
T_BED,
@@ -109,6 +115,9 @@ typedef struct mk4_cfg_t {
109115
stm_pin enc_b;
110116
stm_pin enc_btn;
111117
stm_pin z_min;
118+
uint16_t f_rpms[FAN_MAX];
119+
stm_pin f_tach[FAN_MAX];
120+
bool f_inverted;
112121
bool has_at21;
113122
bool has_loadcell;
114123
temp_cfg_t temps;
@@ -167,6 +176,9 @@ static const mk4_cfg_t mk4_027c_cfg = {
167176
.enc_b = STM_PIN(GPIOD,12),
168177
.enc_btn = STM_PIN(GPIOG,3),
169178
.z_min = STM_PIN(GPIOB, 8),
179+
.f_rpms = { 6600, 7000 },
180+
.f_tach = {STM_PIN(GPIOE,10), STM_PIN(GPIOE,14)},
181+
.f_inverted = true,
170182
.has_at21 = true,
171183
.has_loadcell = true,
172184
.temps =
@@ -209,6 +221,9 @@ static const mk4_cfg_t mk4_034_cfg = {
209221
.enc_b = STM_PIN(GPIOD,12),
210222
.enc_btn = STM_PIN(GPIOG,3),
211223
.z_min = STM_PIN(GPIOB, 8),
224+
.f_rpms = { 6600, 7000 },
225+
.f_tach = {STM_PIN(GPIOE,10), STM_PIN(GPIOE,14)},
226+
.f_inverted = true,
212227
.has_at21 = true,
213228
.has_loadcell = true,
214229
.temps =
@@ -250,6 +265,9 @@ static const mk4_cfg_t mk3v5_cfg = {
250265
.enc_b = STM_PIN(GPIOD,12),
251266
.enc_btn = STM_PIN(GPIOG,3),
252267
.z_min = STM_PIN(GPIOB, 8),
268+
.f_rpms = { 4500, 7500 },
269+
.f_tach = {STM_PIN(GPIOA,10), STM_PIN(GPIOE,10)},
270+
.f_inverted = false,
253271
.has_at21 = false,
254272
.temps =
255273
{
@@ -267,7 +285,7 @@ static const mk4_cfg_t mk3v5_cfg = {
267285
.m_en = { STM_PIN(GPIOB,9), STM_PIN(GPIOB,9), STM_PIN(GPIOB,8), STM_PIN(GPIOD,10)},
268286
.m_diag = { STM_PIN(GPIOG,9), STM_PIN(GPIOE,13), STM_PIN(GPIOB,4), STM_PIN(GPIOD,14)},
269287
.m_select = {STM_PIN(GPIOG,15), STM_PIN(GPIOB,5), STM_PIN(GPIOF,15), STM_PIN(GPIOF,12)},
270-
.m_inverted = {0,1,0,1},
288+
.m_inverted = {1,0,1,1},
271289
.m_spi = STM32_P_SPI3,
272290
.is_400step = false,
273291
.dm_ver = 34,
@@ -291,6 +309,9 @@ static const mk4_cfg_t mk3v9_cfg = {
291309
.enc_b = STM_PIN(GPIOD,12),
292310
.enc_btn = STM_PIN(GPIOG,3),
293311
.z_min = STM_PIN(GPIOB, 8),
312+
.f_rpms = { 6600, 7000 },
313+
.f_tach = {STM_PIN(GPIOE,10), STM_PIN(GPIOE,14)},
314+
.f_inverted = true,
294315
.has_at21 = true,
295316
.has_loadcell = true,
296317
.temps =
@@ -762,25 +783,23 @@ static void mk4_init(MachineState *machine)
762783

763784
// hotend = fan1
764785
// print fan = fan0
765-
uint16_t fan_max_rpms[] = { 6600, 7000 };
766786
uint8_t fan_pwm_pins[] = { 11, 9};
767-
uint8_t fan_tach_pins[] = { 10, 14};
768787
uint8_t fan_labels[] = {'P','E'};
769788
DeviceState* fanpwm = qdev_new("software-pwm");
770-
qdev_prop_set_bit(fanpwm, "is_inverted", true);
789+
qdev_prop_set_bit(fanpwm, "is_inverted", cfg.f_inverted);
771790
sysbus_realize_and_unref(SYS_BUS_DEVICE(fanpwm),&error_fatal);
772791
qdev_connect_gpio_out_named(stm32_soc_get_periph(dev_soc, STM32_P_TIM14), "timer", 0, qdev_get_gpio_in_named(fanpwm, "tick-in", 0));
773-
for (int i=0; i<2; i++)
792+
for (int i=0; i<FAN_MAX; i++)
774793
{
775794
qdev_connect_gpio_out(stm32_soc_get_periph(dev_soc, STM32_P_GPIOE), fan_pwm_pins[i],
776795
qdev_get_gpio_in_named(fanpwm, "gpio-in",i)
777796
);
778797
dev = qdev_new("fan");
779798
qdev_prop_set_uint8(dev,"label",fan_labels[i]);
780-
qdev_prop_set_uint32(dev, "max_rpm",fan_max_rpms[i]);
799+
qdev_prop_set_uint32(dev, "max_rpm",cfg.f_rpms[i]);
781800
//qdev_prop_set_bit(dev, "is_nonlinear", i); // E is nonlinear.
782801
sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal);
783-
qdev_connect_gpio_out_named(dev, "tach-out",0,qdev_get_gpio_in(stm32_soc_get_periph(dev_soc, STM32_P_GPIOE),fan_tach_pins[i]));
802+
qdev_connect_gpio_out_named(dev, "tach-out",0,qdev_get_gpio_in(stm32_soc_get_periph(dev_soc, BANK(cfg.f_tach[i])), PIN(cfg.f_tach[i])));
784803
qemu_irq split_fan = qemu_irq_split( qdev_get_gpio_in_named(dev, "pwm-in",0), qdev_get_gpio_in_named(db2, "fan-pwm",i));
785804
qdev_connect_gpio_out_named(dev, "rpm-out", 0, qdev_get_gpio_in_named(db2,"fan-rpm",i));
786805
qdev_connect_gpio_out(fanpwm,i,split_fan);

updateDocs.sh

+4
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,17 @@
22
touch dummy.bin
33
build/qemu-system-buddy -machine prusa-mini -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-Mini.md
44
build/qemu-system-buddy -machine prusa-mk4-027c -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-Mk4-027.md
5+
build/qemu-system-buddy -machine prusa-mk3-35 -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-Mk3_5.md
6+
build/qemu-system-buddy -machine prusa-mk3-39 -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-Mk3_9.md
57
#build/qemu-system-buddy -machine prusa-mk4-034 -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-Mk4-034.md
68
build/qemu-system-buddy -machine prusa-xl-050 -kernel dummy.bin -append scripthelpmd | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-XL-050.md
79
build/qemu-system-buddy -machine prusa-xl-extruder-060-0 -kernel dummy.bin -append scripthelpmd,no-bridge | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-XL-E-060.md
810
build/qemu-system-buddy -machine prusa-xl-bed-060 -kernel dummy.bin -append scripthelpmd,no-bridge | sed -n '/# Scripting*/,/End Scripting options/p' > ref/autogen/Scripting-XL-Bed-060.md
911

1012
build/qemu-system-buddy -machine prusa-mini -kernel dummy.bin -append keyhelpmd | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-Mini.md
1113
build/qemu-system-buddy -machine prusa-mk4-027c -kernel dummy.bin -append keyhelpmd | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-Mk4-027.md
14+
build/qemu-system-buddy -machine prusa-mk3-35 -kernel dummy.bin -append keyhelpmd | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-Mk3_5.md
15+
build/qemu-system-buddy -machine prusa-mk3-39 -kernel dummy.bin -append keyhelpmd | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-Mk3_9.md
1216
build/qemu-system-buddy -machine prusa-xl-050 -kernel dummy.bin -append keyhelpmd | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-XL-050.md
1317
build/qemu-system-buddy -machine prusa-xl-extruder-060-0 -kernel dummy.bin -append keyhelpmd,no-bridge | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-XL-E-060.md
1418
build/qemu-system-buddy -machine prusa-xl-bed-060 -kernel dummy.bin -append keyhelpmd,no-bridge | sed -n '/Available Key Controls:/,/End Key Controls/p' > ref/autogen/Keys-XL-Bed-060.md

0 commit comments

Comments
 (0)