NOVA electronics Inc. MCX514 -
251
-
251
-
// Synchronous action
// Performs
“
Example 3 Calculates the time passing through from position A (10000) to position B (55000) during X axis
// driving.
”
in
“
2.6.6 Examples of Synchronous Action
”
.
void sync(void ) {
// Constant speed driving at 10kpps
SetStartSpd(MCX514_AXIS_X,8000000);
// Initial speed 8Mpps (maximum in specification)
SetSpeed(MCX514_AXIS_X,10000);
// Drive speed 10Kpps
SetLp(MCX514_AXIS_X,0);
// Logical position counter 0
SetPulse(MCX514_AXIS_X,60000);
// Drive pulse
number 60000
SetMR0(MCX514_AXIS_X,10000);
// MR0 10000
SetMR1(MCX514_AXIS_X,55000);
// MR1 55000
SetTimer(MCX514_AXIS_X,2147483647);
// Timer value (maximum in specification)
WriteReg1(MCX514_AXIS_X,0x2000);
// WR1 Synchronous action set 1 activation
SetModeMRm(MCX514_AXIS_X,0x0000);
// Compares MR0 with LP. Comparison condition
≧
// Compares MR1 with LP. Comparison condition
≧
SetModeSync0(MCX514_AXIS_X,0x0151);
// SYNC0 setting
// Activation factor MRm object changed to True
// Action Timer-start
SetModeSync1(MCX514_AXIS_X,0x0071);
// SYNC1 setting
// Activation factor MRm object changed to True
// Action Save CT
→
MRm
ExeSYNC(MCX514_AXIS_X, (MCX514_CMD81_SYNC0EN | MCX514_CMD82_SYNC1EN));
// SYNC0,1 Enable
ExeDRVRL(MCX514_AXIS_X);
// Relative position driving
waitdrive(MCX514_AXIS_X);
// Waiting for termination of driving
}
// Split pulse
// Performs
“
Example 1 Split pulse starts from the start of X axis driving.
”
in
“
2.7.6 Examples of Split Pulse
”
.
void split(void ) {
// Constant speed driving at 1000pps
SetStartSpd(MCX514_AXIS_X,8000000);
// Initial speed 8Mpps (maximum in specification)
SetSpeed(MCX514_AXIS_X,1000);
// Drive speed 1000pps
SetLp(MCX514_AXIS_X,0);
// Logical position counter
SetSplit1(MCX514_AXIS_X,5,9);
// Split length 9 Pulse width 5
SetSplit2(MCX514_AXIS_X,10);
// Pulse number 10
SetModePIO2(MCX514_AXIS_X,0x0800);
// Pulse logic Positive, With starting pulse
ExeSPSTA(MCX514_AXIS_X);
// Split pulse start
ExeDRVVP(MCX514_AXIS_X);
//
+
direction continuous pulse driving
waitsplit(MCX514_AXIS_X);
// Waiting for termination of split pulse
ExeDRVFBRK(MCX514_AXIS_X);
// Instant stop
waitdrive(MCX514_AXIS_X);
// Waiting for termination of driving
}
// Main functions
void main(void ) {
ExeSRST();
// Command reset
homesrch();
// Automatic home search
drive();
// S-curve acceleration / deceleration driving
sync();
// Synchronous action
split();
// Split pulse
}