Fysetc mini12864, Duet 3 mini, SBC - pause on changing display
jay_s_uk last edited by jay_s_uk
I have a screen attached but hardly use it.
I wanted to adjust something on a recent print.
Selecting a different screen from the default one caused a 5-6 second pause in the print. Once the screen had changed, the print resumed.
Fysetc Mini12864 v2.1, Duet 3 mini5+ ethernet v0.6 in SBC mode.
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Tue Sep 22 2020 14:08:43 GMT+0100 (British Summer Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder move ; Drives M569 P0.0 S0 D3 V26 ; physical drive 0.0 goes forwards M569 P0.1 S1 D3 V40 ; physical drive 0.1 goes forwards M569 P0.2 S1 D3 V40 ; physical drive 0.2 goes forwards M569 P0.3 S0 D3 V40 ; physical drive 0.3 goes forwards M569 P0.4 S0 D3 V40 ; physical drive 0.3 goes forwards M584 X0.4 Y0.3 Z0.1:0.2 E0.0 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z400.00 E837 ; set steps per mm M566 X1000.00 Y1000.00 Z200 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z300.00 E1200.00 ; set maximum speeds (mm/min) M201 X1000.00 Y1000.00 Z200.00 E250.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1200 E1000 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X270 Y260 Z350 S0 ; set axis maxima M671 X-130:400 Y150:150 S10 ; Endstops M574 X1 S1 P"io1.in" M574 Y1 S1 P"io2.in" ; Z-Probe M558 P1 C"!io3.in" H2 A5 F250:60 T20000 S0.02 ; Set Z probe type to switch and the dive height + speeds G31 P1000 X-27.3 Y3.5 Z3.815 ; Set Z probe trigger value, offset and trigger height M557 X15:230 Y15:230 S20 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin temp0 M950 H0 C"out2" T0 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.060000e-8 ; configure sensor 1 as thermistor on pin temp1 M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans ;############## Tool 0 Fans ########################## M950 F0 C"out5" Q500 ; Create fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; Set fan 0 value. Thermostatic control is turned off M950 F1 C"out6" Q500 ; Create fan 1 on pin out4 and set its frequency M106 P1 S1 H1 T45 ; Set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined M918 P2 ; enable ST7567-based 12864 display M150 X1 R255 U255 B255 S3 ; set all 3 LEDs to white M501 ; load saved parameters from non-volatile memory T0 ; select first tool M207 S5.0 R0.02 F2400 Z0.5 M950 P0 Q500 C"out0"
=== Diagnostics === RepRapFirmware for Duet 3 Mini 5+ version 3.3 (2021-06-15 21:46:11) running on Duet 3 Mini5plus Ethernet (SBC mode) Board ID: P2P4H-PA67A-G65J0-40TFU-L2D0Z-ZTS4L Used output buffers: 1 of 40 (13 max) === RTOS === Static ram: 102724 Dynamic ram: 99060 of which 124 recycled Never used RAM 38940, free system stack 120 words Tasks: SBC(ready,42.7%,318) HEAT(notifyWait,0.2%,208) Move(notifyWait,1.2%,274) CanReceiv(notifyWait,0.0%,941) CanSender(notifyWait,0.0%,357) CanClock(delaying,0.1%,340) TMC(notifyWait,6.0%,114) MAIN(running,41.9%,525) IDLE(ready,0.1%,29) AIN(delaying,7.6%,264), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 05:19:53 ago, cause: power up Last software reset at 2021-06-17 09:53, reason: User, none spinning, available RAM 42112, slot 1 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 MCU revision 3, ADC conversions started 19193535, completed 19193534, timed out 0, errs 0 Step timer max interval 1505 MCU temperature: min 20.9, current 47.2, max 50.2 Supply voltage: min 23.7, current 23.8, max 23.9, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/1, heap memory allocated/used/recyclable 2048/1476/1436, gc cycles 0 Driver 0: position 12099, ok, SG min/max 0/434, read errors 0, write errors 0, ifcnt 22, reads 26809, writes 22, timeouts 0, DMA errors 0 Driver 1: position 14139, standstill, SG min/max 0/214, read errors 0, write errors 0, ifcnt 29, reads 26801, writes 29, timeouts 0, DMA errors 0 Driver 2: position 927, standstill, SG min/max 0/232, read errors 0, write errors 0, ifcnt 29, reads 26801, writes 29, timeouts 0, DMA errors 0 Driver 3: position 0, ok, SG min/max 0/402, read errors 0, write errors 0, ifcnt 28, reads 26802, writes 28, timeouts 0, DMA errors 0 Driver 4: position 0, standstill, SG min/max 0/418, read errors 0, write errors 0, ifcnt 28, reads 26803, writes 28, timeouts 0, DMA errors 0 Driver 5: position 0, assumed not present Driver 6: position 0, assumed not present Date/time: 2021-06-21 13:19:50 Cache data hit count 4294967295 Slowest loop: 8415.72ms; fastest: 0.07ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 0.0MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 83, maxWait 6420294ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 14573, completed moves 14555, hiccups 0, stepErrors 0, LaErrors 0, Underruns [4, 0, 121], CDDA state 3 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1, chamberHeaters = -1 -1 Heater 0 is on, I-accum = 0.5 Heater 1 is on, I-accum = 0.4 === GCodes === Segments left: 1 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is doing "G1 X120.597000 Y118.446999 E0.762880" in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue* is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === CAN === Messages queued 172724, received 0, lost 0, longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 17 (min 17), ts 95967/0/0 Tx timeouts 0,82,95966,0,0,76673 last cancelled message type 30 dest 127 === SBC interface === State: 0, failed transfers: 1, checksum errors: 0 Last transfer: 5ms ago RX/TX seq numbers: 46434/46435 SPI underruns 0, overruns 0 Disconnects: 0, timeouts: 0, IAP RAM available 0x10b2c Buffer RX/TX: 384/1736-0 === Duet Control Server === Duet Control Server v3.3.0 File: Buffered code: G1 X120.597 Y118.447 E0.76288 Buffered code: G1 X123.447 Y115.597 E0.13309 Buffered code: G1 X146.553 Y115.597 E0.76288 Buffered code: G1 X149.576 Y118.620 E0.14115 Buffered code: G1 X147.463 Y118.620 E0.06975 Buffered code: M204 P1000 Buffered code: G1 X147.790 Y119.007 F10800.000 Buffered code: G1 F1800.000 Buffered code: M204 P800 Buffered code: G1 X147.790 Y120.185 E0.03693 Buffered code: G1 X149.790 Y120.185 E0.06271 Buffered code: G1 X149.790 Y141.713 E0.67500 Buffered code: G1 X147.614 Y143.889 E0.09650 Buffered code: G1 X147.614 Y142.790 E0.03447 Buffered code: G1 X146.301 Y142.790 E0.04116 Buffered code: G1 X146.301 Y144.790 E0.06271 Buffered code: G1 X144.445 Y144.790 E0.05819 Buffered code: G1 X144.445 Y142.790 E0.06271 Buffered code: G1 X143.096 Y142.790 E0.04230 Buffered code: G1 X143.096 Y144.790 E0.06271 Buffered code: G1 X123.287 Y144.790 E0.62109 Buffered code: G1 X120.210 Y141.713 E0.13644 Buffered code: G1 X120.210 Y118.287 E0.73451 Buffered code: G1 X123.287 Y115.210 E0.13644 Buffered code: G1 X146.713 Y115.210 E0.73451 Buffered code: G1 X149.790 Y118.287 E0.13644 Buffered code: G1 X149.790 Y119.007 E0.02258 Buffered code: G1 X147.850 Y119.007 E0.06083 Buffered code: M204 P1000 Buffered code: G1 X147.390 Y119.007 F10800.000 ==> 1376 bytes Code buffer space: 2360 Configured SPI speed: 8000000Hz Full transfers per second: 2.87, max wait times: 19.0ms/0.0ms Codes per second: 0.37 Maximum length of RX/TX data transfers: 3824/1664 File /opt/dsf/sd/gcodes/Voron_Design_Cube_v7.gcode is selected, processing
running DSF 3.3.0
@jay_s_uk That pause length sounds rather excessive. I'll take a look at the code. For the ST7920 display the code only updates part of the screen at a time to avoid a pause, but maybe the ST7567 driver doesn't do that.
jay_s_uk last edited by
@dc42 It seems to complete the moves in the queue before pausing
@dc42 It seems to complete the moves in the queue before pausing
That's because the Move task has higher priority than the task that reads/parses GCode commands and updated the display.
@jay_s_uk the ST7567 code flushes 8 rows or pixels at a time instead of 1 and is also much less efficient. I've made a note to fix this in RRF 3.4.
I have now improved the efficiency of flushing the data to the ST7567. This fix will be in 3.4beta2. I haven't reduced the number of pixels it updates at a time yet, because the efficiency improvement may be sufficient.