-
Notifications
You must be signed in to change notification settings - Fork 28
/
Copy pathmotion.h
executable file
·153 lines (118 loc) · 3.47 KB
/
motion.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
//#pragma once
#ifndef motion_H
#define motion_H
#include "config_pins.h"
#define UPDATE_V_EVERY 3 // must be 1<<n 16 =1<<4
#define DELAYBETWEENSTEP 3
#define nX 0
#define MX 0
#define nE 3
// Corner deviation Setting
// Centripetal
#define MINCORNERSPEED 0.25 // minimum cornering speed
#define MINSTEP 0
#ifdef DRIVE_XYYZ
#define MZ 1
#define MY 2
#define nY 2
#define nZ 1
#else
#define MZ 2
#define MY 1
#define nY 1
#define nZ 2
#endif
#define D_CARTESIAN 0
#define D_COREXY 1
#define D_COREXZ 2
#define D_XYYZ 3
//#include "platform.h"
#include<math.h>
#include<stdint.h>
//#include "config_pins.h"
#define NUMAXIS 4
#define LOWESTDELAY 50 // IF LESS than this microsec then do the subpixel
typedef struct {
int8_t status ; // status in bit 01 , planstatus in bit 2 , g0 in bit 4, 4 bit left better use it for fast axis
int laserval;
float dis; // max start speed, maxcorner
int32_t maxv, ac, delta, maxs; // needed for backplanner
int32_t fs, fn; // all are in square ! needed to calc real accell
int32_t dx[NUMAXIS]; //original delta before transform
// float dtx[NUMAXIS]; // keep the original coordinate before transform
} tmove;
#ifdef MESHLEVEL
extern int XCount, YCount;
extern int ZValues[40][40];
extern float pointProbing(float floatdis);
extern int MESHLEVELING;
#endif
extern float e_multiplier, f_multiplier;
extern int32_t mcx[NUMAXIS];
extern tmove *m;
extern int babystep[4];
extern int32_t e_ctr;
extern int mm_ctr;
//extern int32_t px[4];
extern int xback[4];
extern uint8_t homingspeed;
extern uint8_t homeoffset[4];
extern int32_t xycorner;
extern int zaccel, accel;
extern int maxf[4];
extern int maxa[4];
extern int32_t dlp, info_x_s, info_y_s, info_z_s;
extern float stepmmx[4], Lscale;
extern float retract_in, retract_out;
extern float info_x, info_y, info_z, info_ve, info_e, perstepx, perstepy, perstepz;
extern float retract_in_f, retract_out_f;
extern tmove moves[NUMBUFFER];
extern float cx1, cy1, cz1, ocz1, ce01;
extern uint8_t head, tail;
extern int8_t checkendstop;
extern int16_t endstopstatus;
extern float ax_home[NUMAXIS];
//extern int8_t lsx[4];
extern int8_t sx[NUMAXIS];
extern uint32_t cmctr;
extern int8_t RUNNING;
extern int8_t PAUSE;
extern int constantlaserVal;
extern float extadv;
extern String hstatus;
#define nextbuff(x) ((x) < NUMBUFFER-1 ? (x) + 1 : 0)
#define prevbuff(x) ((x) > 0 ? (x) - 1 : NUMBUFFER-1)
extern float Interpolizer(int zX, int zY);
extern int cmhead, cmtail, cmdlaserval;
#define degtorad(x) x*22/(7*180);
extern void power_off();
extern uint32_t ectstep;
extern int32_t motionrunning;
extern int32_t mctr;
extern int motionloop();
extern int laserOn, home_cnt;
extern void init_pos();
extern int coreloop();
extern void coreloopm();
extern void otherloop(int r);
extern void waitbufferempty(bool fullspeed=true);
//extern void needbuffer();
extern int32_t startmove();
extern void initmotion();
#ifdef ARC_SUPPORT
extern void draw_arc(float cf, float cx2, float cy2, float cz2, float ce02, float fI, float fJ, uint8_t isclockwise);
#endif
extern void addmove(float cf, float cx2, float cy2, float cz2, float ce02, int g0, int rel);
extern float axisofs[4];
#define amove addmove
extern void homing();
void docheckendstop(int m);
extern void reset_motion();
extern tmove* m;
#define fmax(a,b) a<b?b:a
#define fmin(a,b) a>b?b:a
#define fmax3(a,b,c) fmax(a,fmax(b,c))
#define fmin3(a,b,c) fmin(a,fmin(b,c))
#define bufflen (head >= tail ? head - tail : (NUMBUFFER + head) - tail)
#define domotionloop motionloop();
#endif