|
@@ -498,14 +498,14 @@ void Stepper::set_directions() {
|
498
|
498
|
* rhi = int32_t((mul >> 32) & 0xFFFFFFFF);
|
499
|
499
|
* }
|
500
|
500
|
* int32_t _eval_bezier_curve_arm(uint32_t curr_step) {
|
501
|
|
- * register uint32_t flo = 0;
|
502
|
|
- * register uint32_t fhi = bezier_AV * curr_step;
|
503
|
|
- * register uint32_t t = fhi;
|
504
|
|
- * register int32_t alo = bezier_F;
|
505
|
|
- * register int32_t ahi = 0;
|
506
|
|
- * register int32_t A = bezier_A;
|
507
|
|
- * register int32_t B = bezier_B;
|
508
|
|
- * register int32_t C = bezier_C;
|
|
501
|
+ * uint32_t flo = 0;
|
|
502
|
+ * uint32_t fhi = bezier_AV * curr_step;
|
|
503
|
+ * uint32_t t = fhi;
|
|
504
|
+ * int32_t alo = bezier_F;
|
|
505
|
+ * int32_t ahi = 0;
|
|
506
|
+ * int32_t A = bezier_A;
|
|
507
|
+ * int32_t B = bezier_B;
|
|
508
|
+ * int32_t C = bezier_C;
|
509
|
509
|
*
|
510
|
510
|
* lsrs(ahi, alo, 1); // a = F << 31
|
511
|
511
|
* lsls(alo, alo, 31); //
|
|
@@ -630,13 +630,13 @@ void Stepper::set_directions() {
|
630
|
630
|
bezier_AV = av;
|
631
|
631
|
|
632
|
632
|
// Calculate the rest of the coefficients
|
633
|
|
- register uint8_t r2 = v0 & 0xFF;
|
634
|
|
- register uint8_t r3 = (v0 >> 8) & 0xFF;
|
635
|
|
- register uint8_t r12 = (v0 >> 16) & 0xFF;
|
636
|
|
- register uint8_t r5 = v1 & 0xFF;
|
637
|
|
- register uint8_t r6 = (v1 >> 8) & 0xFF;
|
638
|
|
- register uint8_t r7 = (v1 >> 16) & 0xFF;
|
639
|
|
- register uint8_t r4,r8,r9,r10,r11;
|
|
633
|
+ uint8_t r2 = v0 & 0xFF;
|
|
634
|
+ uint8_t r3 = (v0 >> 8) & 0xFF;
|
|
635
|
+ uint8_t r12 = (v0 >> 16) & 0xFF;
|
|
636
|
+ uint8_t r5 = v1 & 0xFF;
|
|
637
|
+ uint8_t r6 = (v1 >> 8) & 0xFF;
|
|
638
|
+ uint8_t r7 = (v1 >> 16) & 0xFF;
|
|
639
|
+ uint8_t r4,r8,r9,r10,r11;
|
640
|
640
|
|
641
|
641
|
__asm__ __volatile__(
|
642
|
642
|
/* Calculate the Bézier coefficients */
|
|
@@ -732,11 +732,11 @@ void Stepper::set_directions() {
|
732
|
732
|
if (!curr_step)
|
733
|
733
|
return bezier_F;
|
734
|
734
|
|
735
|
|
- register uint8_t r0 = 0; /* Zero register */
|
736
|
|
- register uint8_t r2 = (curr_step) & 0xFF;
|
737
|
|
- register uint8_t r3 = (curr_step >> 8) & 0xFF;
|
738
|
|
- register uint8_t r4 = (curr_step >> 16) & 0xFF;
|
739
|
|
- register uint8_t r1,r5,r6,r7,r8,r9,r10,r11; /* Temporary registers */
|
|
735
|
+ uint8_t r0 = 0; /* Zero register */
|
|
736
|
+ uint8_t r2 = (curr_step) & 0xFF;
|
|
737
|
+ uint8_t r3 = (curr_step >> 8) & 0xFF;
|
|
738
|
+ uint8_t r4 = (curr_step >> 16) & 0xFF;
|
|
739
|
+ uint8_t r1,r5,r6,r7,r8,r9,r10,r11; /* Temporary registers */
|
740
|
740
|
|
741
|
741
|
__asm__ __volatile(
|
742
|
742
|
/* umul24x24to16hi(t, bezier_AV, curr_step); t: Range 0 - 1^16 = 16 bits*/
|
|
@@ -1127,14 +1127,14 @@ void Stepper::set_directions() {
|
1127
|
1127
|
#if defined(__ARM__) || defined(__thumb__)
|
1128
|
1128
|
|
1129
|
1129
|
// For ARM Cortex M3/M4 CPUs, we have the optimized assembler version, that takes 43 cycles to execute
|
1130
|
|
- register uint32_t flo = 0;
|
1131
|
|
- register uint32_t fhi = bezier_AV * curr_step;
|
1132
|
|
- register uint32_t t = fhi;
|
1133
|
|
- register int32_t alo = bezier_F;
|
1134
|
|
- register int32_t ahi = 0;
|
1135
|
|
- register int32_t A = bezier_A;
|
1136
|
|
- register int32_t B = bezier_B;
|
1137
|
|
- register int32_t C = bezier_C;
|
|
1130
|
+ uint32_t flo = 0;
|
|
1131
|
+ uint32_t fhi = bezier_AV * curr_step;
|
|
1132
|
+ uint32_t t = fhi;
|
|
1133
|
+ int32_t alo = bezier_F;
|
|
1134
|
+ int32_t ahi = 0;
|
|
1135
|
+ int32_t A = bezier_A;
|
|
1136
|
+ int32_t B = bezier_B;
|
|
1137
|
+ int32_t C = bezier_C;
|
1138
|
1138
|
|
1139
|
1139
|
__asm__ __volatile__(
|
1140
|
1140
|
".syntax unified" "\n\t" // is to prevent CM0,CM1 non-unified syntax
|