36.3.3.7 REPEAT
- Set Instruction Repeat
Counter
The REPEAT
instruction is used to store the repeat count value into the UPDI
Repeat Counter register on the DL layer. When instructions are used with
REPEAT
, the protocol overhead for SYNCH and instruction frame can
be omitted on all instructions except for the first instruction after the
REPEAT
is issued. REPEAT
is most useful for memory
instructions (LD
, ST
, LDS
,
STS
), but all instructions can be repeated, except for the
REPEAT
instruction itself.
The DATA_SIZE
operand field refers to the size of the repeat value. Only
up to 255 repeats are supported. The instruction loaded directly after the
REPEAT
instruction will be issued for RPT_0 + 1
times. If the Repeat Counter register is ‘0
’, the instruction will run
just once. An ongoing repeat can be aborted only by sending a BREAK character.
Figure 36-15 gives an example of a repeat operation
with an ST
instruction using pointer post-increment operation. After
the REPEAT
instruction is sent with RPT_0
= n,
the first ST
instruction is issued with SYNCH and instruction frame.
The next n
ST
instructions are executed by only sending data bytes according to
the ST
operand DATA_SIZE
and maintaining the
Acknowledge (ACK) handshake protocol.
For LD
, data will come out continuously after the
LD
instruction. Note the guard time on the first data block.
If using indirect addressing instructions (LD
/ST
), it
is recommended to always use the pointer post-increment option when combined with
REPEAT
. The ST
/LD
instruction is
necessary only before the first data block (number of data bytes determined by
DATA_SIZE
). Otherwise, the same address will be accessed in all
repeated access operations. For direct addressing instructions
(LDS
/STS
), the address must always be transmitted
as specified in the instruction protocol before data can be received
(LDS
) or sent (STS
).