5617 Commits (204fd6ec444a2251373ccb18f53030e6c9579877)
 

Author SHA1 Message Date
AnHardt b4076883cc Set testet delays for K8200, RAMBO, MINIRAMBO and ST7920 9 years ago
AnHardt 4454d80276 Decrease the needed nops to 1
by shitfing the left shift into the high phase.

```
2	cbi 0x2,1 ;set CLK                      //
1	in r18,__SREG__                         //1
1-3	sbrc r24,7                              //2-4
2	rjmp .L19                               //4
1	cli                  .L19:              //5
2	lds r25,258          lds r25,258        //7
1	andi r25,lo8(-2)     ori r25,lo8(1)     //8
2	sts 258,r25          sts 258,r25        //10
1	out __SREG__,r18     out __SREG__,r18   //11
2	.L3:                 rjmp .L3           //13     //2
2	sbi 0x2,1 ;reset CLK //                 //13-15  //2-4
1	lsl r24	 ;  val      //1
1	nop                  //2
2	cbi 0x2,1 ;set CLK   //4
...
```
9 years ago
AnHardt 56c42b572c 3 ms speedup for ST7920 and delay for BOARD_3DRAG
and saving ~1k memory
by limiting the `#pragma GCC optimize (3)` optimisation to `ultralcd_st7920_u8glib_rrd.h`. These optimisation was and is not done for all the other displays, is the reason for the big additionally use of memory, because the complete 'ultralcd.cpp' and 'dogm_lcd_implementation.h' was optimised (sadly i did not observe a change in speed).

Unrolling the loop in `ST7920_SWSPI_SND_8BIT()`, what i expected the optimiser to do, by hand, saved some speed by eliminating the loop variable (i) compares and increases. Every CPU cycle in this loop costs at least 0.5ms per display update because it's executed more than 1k times/s.

The delays are now pre-filled with the calculated values for 4.5V driven ST7920.
A way to simply add __your__ timing into the configuration was made.

At 4.5V
1.) The CLK signal needs to be at least 200ns high and 200ns low.
2.) The DAT pin needs to be set at least 40ns before CLK goes high and must stay at this value until 40ns after CLK went high.

A nop takes one processor cycle.
For 16MHz one nop lasts 62.5ns.
For 20MHz one not lasts 50ns.

To fulfill condition 1.) we need 200/62.5 = 3.2 => 4 cycles (200/50 = 4 => 4). For the low phase, setting the pin takes much longer. For the high phase we (theoretically) have to throw in 2 nops, because changing the CLK takes only 2 cycles.

Condition 2.) is always fulfilled because the processor needs two cycles (100 - 125ns) for switching the CLK pin.


Needs tests and feedback.
Especially i cant test 20MHz, 3DRAG and displays supplied wit less than 5V.
Are the delays right? Please experiment with longer or shorter delays. And give feedback.

Already tested are 5 displays with 4.9V - 5.1V at 16MHz where no delays are needed.
9 years ago
Scott Lahteine ca184d3d72 Merge pull request #4147 from thinkyhead/rc_fix_M48_raise
Fix debug output in probe_pt
9 years ago
Scott Lahteine e72bd68eaf Merge pull request #4146 from epatel/epatel/max_z_endstop
MBL: Add support for max z endstop
9 years ago
Scott Lahteine b4161cbd98 Fix debug output in probe_pt 9 years ago
Edward Patel da88b00585 MBL: Add support for max z endstop
See https://github.com/MarlinFirmware/Marlin/issues/4088
9 years ago
Scott Lahteine c8a9829387 Merge pull request #4140 from thinkyhead/rc_button_reliability
Always do a brief delay in `lcd_quick_feedback`
9 years ago
Scott Lahteine 74878d1f16 Always do a brief delay in `lcd_quick_feedback` 9 years ago
Scott Lahteine 7de7552069 Merge pull request #4133 from MagoKimbra/Single_home_axis_delta
Single home Axis Delta need simple sync_plan_position
9 years ago
Scott Lahteine de0e6d5f13 Merge pull request #4134 from thinkyhead/rc_followup_4021
Additional cleanup to probing/leveling
9 years ago
Scott Lahteine 15a6b49f37 Simplified probe_pt (in G30) 9 years ago
Scott Lahteine 6a7045b9bf Remove clean_up_after_endstop_move 9 years ago
Scott Lahteine 2a4f866561 Simplified probe_pt (in G29) 9 years ago
Scott Lahteine 89a2aa026b Simplified probe_pt (in M48) 9 years ago
Scott Lahteine f8530c5d1f Simplified probe_pt function (G28 grid) 9 years ago
Scott Lahteine c376c08042 Simplified probe_pt function (part 1) 9 years ago
Scott Lahteine 9a71b7f8ad Fix debug message for 3-point leveling 9 years ago
Scott Lahteine 550c03a5a9 Drop raise_z_after_probing function 9 years ago
Scott Lahteine bb38c816af Always raise in deploy_z_probe / stow_z_probe 9 years ago
Scott Lahteine 68f3350050 Cleanup M401 / M402 9 years ago
Scott Lahteine 3afda99adf Regular handlers for G31 / G32 9 years ago
Scott Lahteine 6803c8e37e Move Z up before, or down after XY, for "blocking move" 9 years ago
Scott Lahteine 03c70c1990 SERVO_DEACTIVATION_DELAY => SERVO_DELAY 9 years ago
MagoKimbra 570f3bbc07 Single home Axis Delta need simple sync_plan_position 9 years ago
Scott Lahteine 61f34eec03 Merge pull request #4125 from jbrazio/bugfix/planner-warning
Fixes some compiler warnings
9 years ago
Scott Lahteine bdcd628896 Merge pull request #4126 from thinkyhead/rc_lin_timing_patch
Patch LIN_ADVANCE timing issue
9 years ago
João Brázio 664232140d
Fixes somes compiler warnings 9 years ago
Scott Lahteine 6e5e388861 Merge pull request #4021 from thinkyhead/rc_raise_z_for_servos
Make probes independent of leveling
9 years ago
Sebastianv650 0c5192b288 Patch LIN_ADVANCE timing issue
Also the extruder stepper ISR has to keep an eye on step_loops count.
9 years ago
Scott Lahteine d4134e6901 Define Z_SAFE_HOMING point when Z_PROBE_SLED is activated alone 9 years ago
Scott Lahteine 7b2fadd598 Apply some fixes from Andreas
Derived from
https://github.com/AnHardt/Marlin/commit/6e8ede8c694fa4d9e3c769840b09d56
7f8d8e0dd
9 years ago
Scott Lahteine bd01592816 Goodbye MECHANICAL_PROBE 9 years ago
Scott Lahteine 2640d13a9f Simplify initial raise in M48 9 years ago
Scott Lahteine 3763d45656 Return Z position in run_z_probe 9 years ago
Scott Lahteine 1f48b5c30f Pass a raise to probe_pt, not a Z position 9 years ago
Scott Lahteine 6fdd5ba246 Save and restore feedrate in more places 9 years ago
Scott Lahteine fe173c2bc6 Generalized probe raise, use for after probing 9 years ago
Scott Lahteine 7da3080761 Simpler cleanup in G28 / G29 9 years ago
Scott Lahteine 15229d988b Fix compile error for bed matrix in M48 9 years ago
Scott Lahteine c01352cbd5 Add a dependency for z servo macros 9 years ago
Scott Lahteine c3794bd695 Add HAS_PROBING_PROCEDURE conditional 9 years ago
Scott Lahteine 42ce60c5cc Make sure NUM_SERVOS is set for Z servo endstop 9 years ago
Scott Lahteine b590a7dee0 Make Z_RAISE_BETWEEN_PROBINGS a more general option 9 years ago
Scott Lahteine bb9c67b4b5 Tweak some feedrate vars 9 years ago
Scott Lahteine 5158bd6e93 Screen out `G29 E` for sled and allen key, allow single probe 9 years ago
Scott Lahteine ccae92588d Cleanup debug in G28 and G29 9 years ago
Scott Lahteine b4a9d2366c Use a macro for kinematic sync_plan_position 9 years ago
Scott Lahteine bfccf26294 Use sync_plan_position_delta where needed 9 years ago
Scott Lahteine a6b8c67df4 Move probe deploy after setup call in G29 9 years ago