
AMI Semiconductor - Rev. 2.3
www.amis.com
13
9.2.1.2 Position Initialization
After power-up or when a Vdd reset has been
acknowledged to the master, a position initialization of the
stepper motor can be requested by the application, by use
of the
RunInit
command (see § 0). The position
initialization is performed by the position controller under
the control of the Main control block. This operation cannot
be interrupted or influenced by any further command. A
position initialization can only be interrupted by the
occurrence of the conditions driving to a motor shutdown
(see § 9.2.2.7) or by a
HardStop
command. On the other
hand, sending a
RunInit
command while a motion is
already ongoing is not recommended.
A position initialization consists of two successive motions,
as illustrated below.
The first motion is done with the specified
Vmin
and
Vmax
velocities in the
RunInit
command, with the acceleration
(deceleration) parameter already in RAM, to a position
Pos1[15:0]
also specified in
RunInit
. The goal here is to
perform a motion large enough to reach a stall position
(considered to be the reference position).
Then a second motion to a position
Pos2[15:0]
is done at
the specified
Vmin
velocity in the
RunInit
command (no
acceleration). The purpose of this second motion is to
confirm with a low velocity the positioning of the motor at
the stall position, assuming that the stepper motor may
have bounced against the stall position. Therefore,
Pos2
should only be a few half or micro steps further than
Pos1
,
in order to perform a displacement of at least one electrical
period.
Once the second motion is achieved, the
ActPos
register
(see § 0) is reset to zero, to set the reached position as the
reference position, whereas
TagPos
register is not
changed.
Notes
(1) The priority encoder (see 9.2.2.11 Priority Encoder) is
describing the management of states and commands. The
notes below are to be considered illustrative.
(2) The last
SetPosition
command issued during an
initialization sequence will be kept in memory and
executed afterwards. This applies also for the commands
SetMotorParam
and
GotoSecurePosition
.
(3) Commands such as
GetActualPos
or
GetStatus
will
be executed while the position initialization is running.
(4) An initialization sequence starts by setting
TagPos
register
to
SecPos
value, provided secure position is enabled
otherwise
TagPos
is reset to zero.
(5) The acceleration/deceleration value applied during an
initialization sequence is the one stored in RAM before the
RunInit
command is sent. The same applies for
Shaft
bit, but not for
Irun
,
Ihold
and
StepMode
, which can
be changed during an initialization sequence.
(6) The
Pos1
,
Pos2
,
Vmax
and
Vmin
values programmed in
a
RunInit
command apply only for this initialization
sequence. All further positioning will use the parameters
stored in RAM (programmed for instance by a former
SetMotorParam
command).
(7) Commands
ResetPosition
,
RunInit
and
SoftStop
will be ignored while an initialization sequence is
ongoing, and will not be executed afterwards.
(8) A
SetMotorParam
command should not be sent during
an initialization sequence.
(9) If for some reason
ActPos
equals
Pos1[15:0]
at the
moment the
RunInit
command is issued, the circuit will
enter in deadlock state. Therefore, the application should
check the actual position by a
GetPosition
or a
GetFullStatus
command prior to an initialization.
Another solution may consist in programming a value out
of the stepper motor range for
Pos1[15:0]
.
AMIS-30622 I
2
C Microstepping Motordriver
Data Sheet