Datasheet

Table Of Contents
point.
The PIO assembler sets the Block bit by default. If the Block bit is not set, the PUSH does not stall on a full RX FIFO, instead
continuing immediately to the next instruction. The FIFO state and contents are unchanged when this happens. The ISR
is still cleared to all-zeroes, and the FDEBUG_RXSTALL flag is set (the same as a blocking PUSH or autopush to a full RX FIFO)
to indicate data was lost.
3.4.6.3. Assembler Syntax
push ( iffull )
push ( iffull ) block
push ( iffull ) noblock
where:
iffull
Is equivalent to IfFull == 1 above. i.e. the default if this is not specified is IfFull == 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.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 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. IfEmpty
permits some of the same program simplifications as autopullfor example, the elimination of an outer loop
counterbut the stall occurs at a controlled point in the program.
RP2040 Datasheet
3.4. Instruction Set 346