Datasheet

Table Of Contents
noblock
Is equivalent to Block == 0 above.
3.4.7. PULL
3.4.7.1. Encoding
Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
PULL
1 0 0 Delay/side-set 1 IfE Blk 0 0 0 0 0
3.4.7.2. Operation
Load a 32-bit word from the TX FIFO into the OSR.
IfEmpty: If 1, do nothing unless the total output shift count has reached its threshold, SHIFTCTRL_PULL_THRESH (the same
as for autopull; see section Section 3.5.4).
Block: If 1, stall if TX FIFO is empty. If 0, pulling from an empty FIFO copies scratch X to OSR.
Some peripherals (UART, SPI…) should halt when no data is available, and pick it up as it comes in; others (I2S) should
clock continuously, and it is better to output placeholder or repeated data than to stop clocking. This can be achieved with
the Block parameter.
A nonblocking PULL on an empty FIFO has the same effect as MOV OSR, X. The program can either preload scratch register
X with a suitable default, or execute a MOV X, OSR after each PULL NOBLOCK, so that the last valid FIFO word will be recycled
until new data is available.
PULL IFEMPTY is useful if an OUT with autopull would stall in an inappropriate location when the TX FIFO is empty. For
example, a UART transmitter should not stall immediately after asserting the start bit. IfEmpty permits some of the same
program simplifications as autopull, but the stall occurs at a controlled point in the program.
3.4.7.3. Assembler Syntax
pull ( ifempty )
pull ( ifempty ) block
pull ( ifempty ) noblock
where:
ifempty
Is equivalent to IfEmpty == 1 above. i.e. the default if this is not specified is IfEmpty == 0
block
Is equivalent to Block == 1 above. This is the default if neither block nor noblock are specified
noblock
Is equivalent to Block == 0 above.
3.4.8. MOV
3.4.8.1. Encoding
Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MOV
1 0 1 Delay/side-set Destination Op Source
RP2040 Datasheet
3.4. Instruction Set 328