mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-12-27 04:19:33 +01:00
69 lines
41 KiB
HTML
69 lines
41 KiB
HTML
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Single-cycle IO block Provides core-local and inter-core hardware for the two processors, with single-cycle access."><title>rp2040_pac::sio - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-b0742ba02757f159.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="rp2040_pac" data-themes="" data-resource-suffix="" data-rustdoc-version="1.83.0 (90b35a623 2024-11-26)" data-channel="1.83.0" data-search-js="search-f0d225181b97f9a4.js" data-settings-js="settings-805db61a62df4bd2.js" ><script src="../../static.files/storage-1d39b6787ed640ff.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-f070b9041d14864c.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-0111fcff984fae8f.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../rp2040_pac/index.html">rp2040_<wbr>pac</a><span class="version">0.6.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module sio</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#types" title="Type Aliases">Type Aliases</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate rp2040_<wbr>pac</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../index.html">rp2040_pac</a></span><h1>Module <span>sio</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/rp2040_pac/sio.rs.html#1-1082">source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Single-cycle IO block<br />
|
|||
|
Provides core-local and inter-core hardware for the two processors, with single-cycle access.</p>
|
|||
|
</div></details><h2 id="modules" class="section-header">Modules<a href="#modules" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="cpuid/index.html" title="mod rp2040_pac::sio::cpuid">cpuid</a></div><div class="desc docblock-short">Processor core identifier<br />
|
|||
|
Value is 0 when read from processor core 0, and 1 when read from processor core 1.</div></li><li><div class="item-name"><a class="mod" href="div_csr/index.html" title="mod rp2040_pac::sio::div_csr">div_csr</a></div><div class="desc docblock-short">Control and status register for divider.</div></li><li><div class="item-name"><a class="mod" href="div_quotient/index.html" title="mod rp2040_pac::sio::div_quotient">div_<wbr>quotient</a></div><div class="desc docblock-short">Divider result quotient<br />
|
|||
|
The result of <code>DIVIDEND / DIVISOR</code> (division). Contents undefined while CSR_READY is low.<br />
|
|||
|
For signed calculations, QUOTIENT is negative when the signs of DIVIDEND and DIVISOR differ.<br />
|
|||
|
This register can be written to directly, for context save/restore purposes. This halts any<br />
|
|||
|
in-progress calculation and sets the CSR_READY and CSR_DIRTY flags.<br />
|
|||
|
Reading from QUOTIENT clears the CSR_DIRTY flag, so should read results in the order<br />
|
|||
|
REMAINDER, QUOTIENT if CSR_DIRTY is used.</div></li><li><div class="item-name"><a class="mod" href="div_remainder/index.html" title="mod rp2040_pac::sio::div_remainder">div_<wbr>remainder</a></div><div class="desc docblock-short">Divider result remainder<br />
|
|||
|
The result of <code>DIVIDEND % DIVISOR</code> (modulo). Contents undefined while CSR_READY is low.<br />
|
|||
|
For signed calculations, REMAINDER is negative only when DIVIDEND is negative.<br />
|
|||
|
This register can be written to directly, for context save/restore purposes. This halts any<br />
|
|||
|
in-progress calculation and sets the CSR_READY and CSR_DIRTY flags.</div></li><li><div class="item-name"><a class="mod" href="div_sdividend/index.html" title="mod rp2040_pac::sio::div_sdividend">div_<wbr>sdividend</a></div><div class="desc docblock-short">Divider signed dividend<br />
|
|||
|
The same as UDIVIDEND, but starts a signed calculation, rather than unsigned.</div></li><li><div class="item-name"><a class="mod" href="div_sdivisor/index.html" title="mod rp2040_pac::sio::div_sdivisor">div_<wbr>sdivisor</a></div><div class="desc docblock-short">Divider signed divisor<br />
|
|||
|
The same as UDIVISOR, but starts a signed calculation, rather than unsigned.</div></li><li><div class="item-name"><a class="mod" href="div_udividend/index.html" title="mod rp2040_pac::sio::div_udividend">div_<wbr>udividend</a></div><div class="desc docblock-short">Divider unsigned dividend<br />
|
|||
|
Write to the DIVIDEND operand of the divider, i.e. the p in <code>p / q</code>.<br />
|
|||
|
Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.<br />
|
|||
|
UDIVIDEND/SDIVIDEND are aliases of the same internal register. The U alias starts an<br />
|
|||
|
unsigned calculation, and the S alias starts a signed calculation.</div></li><li><div class="item-name"><a class="mod" href="div_udivisor/index.html" title="mod rp2040_pac::sio::div_udivisor">div_<wbr>udivisor</a></div><div class="desc docblock-short">Divider unsigned divisor<br />
|
|||
|
Write to the DIVISOR operand of the divider, i.e. the q in <code>p / q</code>.<br />
|
|||
|
Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.<br />
|
|||
|
UDIVISOR/SDIVISOR are aliases of the same internal register. The U alias starts an<br />
|
|||
|
unsigned calculation, and the S alias starts a signed calculation.</div></li><li><div class="item-name"><a class="mod" href="fifo_rd/index.html" title="mod rp2040_pac::sio::fifo_rd">fifo_rd</a></div><div class="desc docblock-short">Read access to this core’s RX FIFO</div></li><li><div class="item-name"><a class="mod" href="fifo_st/index.html" title="mod rp2040_pac::sio::fifo_st">fifo_st</a></div><div class="desc docblock-short">Status register for inter-core FIFOs (mailboxes).<br />
|
|||
|
There is one FIFO in the core 0 -> core 1 direction, and one core 1 -> core 0. Both are 32 bits wide and 8 words deep.<br />
|
|||
|
Core 0 can see the read side of the 1->0 FIFO (RX), and the write side of 0->1 FIFO (TX).<br />
|
|||
|
Core 1 can see the read side of the 0->1 FIFO (RX), and the write side of 1->0 FIFO (TX).<br />
|
|||
|
The SIO IRQ for each core is the logical OR of the VLD, WOF and ROE fields of its FIFO_ST register.</div></li><li><div class="item-name"><a class="mod" href="fifo_wr/index.html" title="mod rp2040_pac::sio::fifo_wr">fifo_wr</a></div><div class="desc docblock-short">Write access to this core’s TX FIFO</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_in/index.html" title="mod rp2040_pac::sio::gpio_hi_in">gpio_<wbr>hi_<wbr>in</a></div><div class="desc docblock-short">Input value for QSPI pins</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_oe/index.html" title="mod rp2040_pac::sio::gpio_hi_oe">gpio_<wbr>hi_<wbr>oe</a></div><div class="desc docblock-short">QSPI output enable</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_oe_clr/index.html" title="mod rp2040_pac::sio::gpio_hi_oe_clr">gpio_<wbr>hi_<wbr>oe_<wbr>clr</a></div><div class="desc docblock-short">QSPI output enable clear</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_oe_set/index.html" title="mod rp2040_pac::sio::gpio_hi_oe_set">gpio_<wbr>hi_<wbr>oe_<wbr>set</a></div><div class="desc docblock-short">QSPI output enable set</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_oe_xor/index.html" title="mod rp2040_pac::sio::gpio_hi_oe_xor">gpio_<wbr>hi_<wbr>oe_<wbr>xor</a></div><div class="desc docblock-short">QSPI output enable XOR</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_out/index.html" title="mod rp2040_pac::sio::gpio_hi_out">gpio_<wbr>hi_<wbr>out</a></div><div class="desc docblock-short">QSPI output value</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_out_clr/index.html" title="mod rp2040_pac::sio::gpio_hi_out_clr">gpio_<wbr>hi_<wbr>out_<wbr>clr</a></div><div class="desc docblock-short">QSPI output value clear</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_out_set/index.html" title="mod rp2040_pac::sio::gpio_hi_out_set">gpio_<wbr>hi_<wbr>out_<wbr>set</a></div><div class="desc docblock-short">QSPI output value set</div></li><li><div class="item-name"><a class="mod" href="gpio_hi_out_xor/index.html" title="mod rp2040_pac::sio::gpio_hi_out_xor">gpio_<wbr>hi_<wbr>out_<wbr>xor</a></div><div class="desc docblock-short">QSPI output value XOR</div></li><li><div class="item-name"><a class="mod" href="gpio_in/index.html" title="mod rp2040_pac::sio::gpio_in">gpio_in</a></div><div class="desc docblock-short">Input value for GPIO pins</div></li><li><div class="item-name"><a class="mod" href="gpio_oe/index.html" title="mod rp2040_pac::sio::gpio_oe">gpio_oe</a></div><div class="desc docblock-short">GPIO output enable</div></li><li><div class="item-name"><a class="mod" href="gpio_oe_clr/index.html" title="mod rp2040_pac::sio::gpio_oe_clr">gpio_<wbr>oe_<wbr>clr</a></div><div class="desc docblock-short">GPIO output enable clear</div></li><li><div class="item-name"><a class="mod" href="gpio_oe_set/index.html" title="mod rp2040_pac::sio::gpio_oe_set">gpio_<wbr>oe_<wbr>set</a></div><div class="desc docblock-short">GPIO output enable set</div></li><li><div class="item-name"><a class="mod" href="gpio_oe_xor/index.html" title="mod rp2040_pac::sio::gpio_oe_xor">gpio_<wbr>oe_<wbr>xor</a></div><div class="desc docblock-short">GPIO output enable XOR</div></li><li><div class="item-name"><a class="mod" href="gpio_out/index.html" title="mod rp2040_pac::sio::gpio_out">gpio_<wbr>out</a></div><div class="desc docblock-short">GPIO output value</div></li><li><div class="item-name"><a class="mod" href="gpio_out_clr/index.html" title="mod rp2040_pac::sio::gpio_out_clr">gpio_<wbr>out_<wbr>clr</a></div><div class="desc docblock-short">GPIO output value clear</div></li><li><div class="item-name"><a class="mod" href="gpio_out_set/index.html" title="mod rp2040_pac::sio::gpio_out_set">gpio_<wbr>out_<wbr>set</a></div><div class="desc docblock-short">GPIO output value set</div></li><li><div class="item-name"><a class="mod" href="gpio_out_xor/index.html" title="mod rp2040_pac::sio::gpio_out_xor">gpio_<wbr>out_<wbr>xor</a></div><div class="desc docblock-short">GPIO o
|
|||
|
Reading yields lane 0’s raw shift and mask value (BASE0 not added).</div></li><li><div class="item-name"><a class="mod" href="interp0_accum1/index.html" title="mod rp2040_pac::sio::interp0_accum1">interp0_<wbr>accum1</a></div><div class="desc docblock-short">Read/write access to accumulator 1</div></li><li><div class="item-name"><a class="mod" href="interp0_accum1_add/index.html" title="mod rp2040_pac::sio::interp0_accum1_add">interp0_<wbr>accum1_<wbr>add</a></div><div class="desc docblock-short">Values written here are atomically added to ACCUM1<br />
|
|||
|
Reading yields lane 1’s raw shift and mask value (BASE1 not added).</div></li><li><div class="item-name"><a class="mod" href="interp0_base0/index.html" title="mod rp2040_pac::sio::interp0_base0">interp0_<wbr>base0</a></div><div class="desc docblock-short">Read/write access to BASE0 register.</div></li><li><div class="item-name"><a class="mod" href="interp0_base1/index.html" title="mod rp2040_pac::sio::interp0_base1">interp0_<wbr>base1</a></div><div class="desc docblock-short">Read/write access to BASE1 register.</div></li><li><div class="item-name"><a class="mod" href="interp0_base2/index.html" title="mod rp2040_pac::sio::interp0_base2">interp0_<wbr>base2</a></div><div class="desc docblock-short">Read/write access to BASE2 register.</div></li><li><div class="item-name"><a class="mod" href="interp0_base_1and0/index.html" title="mod rp2040_pac::sio::interp0_base_1and0">interp0_<wbr>base_<wbr>1and0</a></div><div class="desc docblock-short">On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.<br />
|
|||
|
Each half is sign-extended to 32 bits if that lane’s SIGNED flag is set.</div></li><li><div class="item-name"><a class="mod" href="interp0_ctrl_lane0/index.html" title="mod rp2040_pac::sio::interp0_ctrl_lane0">interp0_<wbr>ctrl_<wbr>lane0</a></div><div class="desc docblock-short">Control register for lane 0</div></li><li><div class="item-name"><a class="mod" href="interp0_ctrl_lane1/index.html" title="mod rp2040_pac::sio::interp0_ctrl_lane1">interp0_<wbr>ctrl_<wbr>lane1</a></div><div class="desc docblock-short">Control register for lane 1</div></li><li><div class="item-name"><a class="mod" href="interp0_peek_full/index.html" title="mod rp2040_pac::sio::interp0_peek_full">interp0_<wbr>peek_<wbr>full</a></div><div class="desc docblock-short">Read FULL result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp0_peek_lane0/index.html" title="mod rp2040_pac::sio::interp0_peek_lane0">interp0_<wbr>peek_<wbr>lane0</a></div><div class="desc docblock-short">Read LANE0 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp0_peek_lane1/index.html" title="mod rp2040_pac::sio::interp0_peek_lane1">interp0_<wbr>peek_<wbr>lane1</a></div><div class="desc docblock-short">Read LANE1 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp0_pop_full/index.html" title="mod rp2040_pac::sio::interp0_pop_full">interp0_<wbr>pop_<wbr>full</a></div><div class="desc docblock-short">Read FULL result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="interp0_pop_lane0/index.html" title="mod rp2040_pac::sio::interp0_pop_lane0">interp0_<wbr>pop_<wbr>lane0</a></div><div class="desc docblock-short">Read LANE0 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="interp0_pop_lane1/index.html" title="mod rp2040_pac::sio::interp0_pop_lane1">interp0_<wbr>pop_<wbr>lane1</a></div><div class="desc docblock-short">Read LANE1 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="interp1_accum0/index.html" title="mod rp2040_pac::sio::interp1_accum0">interp1_<wbr>accum0</a></div><div class="desc docblock-short">Read/write access to accumulator 0</div></li><li><div class="item-name"><a class="mod" href="interp1_accum0_add/index.html" title="mod rp2040_pac::sio::interp1_accum0_add">interp1_<wbr>accum0_<wbr>add</a></div><div class="desc docblock-short">Values written here are atomically added to ACCUM0<br />
|
|||
|
Reading yields lane 0’s raw shift and mask value (BASE0 not added).</div></li><li><div class="item-name"><a class="mod" href="interp1_accum1/index.html" title="mod rp2040_pac::sio::interp1_accum1">interp1_<wbr>accum1</a></div><div class="desc docblock-short">Read/write access to accumulator 1</div></li><li><div class="item-name"><a class="mod" href="interp1_accum1_add/index.html" title="mod rp2040_pac::sio::interp1_accum1_add">interp1_<wbr>accum1_<wbr>add</a></div><div class="desc docblock-short">Values written here are atomically added to ACCUM1<br />
|
|||
|
Reading yields lane 1’s raw shift and mask value (BASE1 not added).</div></li><li><div class="item-name"><a class="mod" href="interp1_base0/index.html" title="mod rp2040_pac::sio::interp1_base0">interp1_<wbr>base0</a></div><div class="desc docblock-short">Read/write access to BASE0 register.</div></li><li><div class="item-name"><a class="mod" href="interp1_base1/index.html" title="mod rp2040_pac::sio::interp1_base1">interp1_<wbr>base1</a></div><div class="desc docblock-short">Read/write access to BASE1 register.</div></li><li><div class="item-name"><a class="mod" href="interp1_base2/index.html" title="mod rp2040_pac::sio::interp1_base2">interp1_<wbr>base2</a></div><div class="desc docblock-short">Read/write access to BASE2 register.</div></li><li><div class="item-name"><a class="mod" href="interp1_base_1and0/index.html" title="mod rp2040_pac::sio::interp1_base_1and0">interp1_<wbr>base_<wbr>1and0</a></div><div class="desc docblock-short">On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.<br />
|
|||
|
Each half is sign-extended to 32 bits if that lane’s SIGNED flag is set.</div></li><li><div class="item-name"><a class="mod" href="interp1_ctrl_lane0/index.html" title="mod rp2040_pac::sio::interp1_ctrl_lane0">interp1_<wbr>ctrl_<wbr>lane0</a></div><div class="desc docblock-short">Control register for lane 0</div></li><li><div class="item-name"><a class="mod" href="interp1_ctrl_lane1/index.html" title="mod rp2040_pac::sio::interp1_ctrl_lane1">interp1_<wbr>ctrl_<wbr>lane1</a></div><div class="desc docblock-short">Control register for lane 1</div></li><li><div class="item-name"><a class="mod" href="interp1_peek_full/index.html" title="mod rp2040_pac::sio::interp1_peek_full">interp1_<wbr>peek_<wbr>full</a></div><div class="desc docblock-short">Read FULL result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp1_peek_lane0/index.html" title="mod rp2040_pac::sio::interp1_peek_lane0">interp1_<wbr>peek_<wbr>lane0</a></div><div class="desc docblock-short">Read LANE0 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp1_peek_lane1/index.html" title="mod rp2040_pac::sio::interp1_peek_lane1">interp1_<wbr>peek_<wbr>lane1</a></div><div class="desc docblock-short">Read LANE1 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="mod" href="interp1_pop_full/index.html" title="mod rp2040_pac::sio::interp1_pop_full">interp1_<wbr>pop_<wbr>full</a></div><div class="desc docblock-short">Read FULL result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="interp1_pop_lane0/index.html" title="mod rp2040_pac::sio::interp1_pop_lane0">interp1_<wbr>pop_<wbr>lane0</a></div><div class="desc docblock-short">Read LANE0 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="interp1_pop_lane1/index.html" title="mod rp2040_pac::sio::interp1_pop_lane1">interp1_<wbr>pop_<wbr>lane1</a></div><div class="desc docblock-short">Read LANE1 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="mod" href="spinlock/index.html" title="mod rp2040_pac::sio::spinlock">spinlock</a></div><div class="desc docblock-short">Reading from a spinlock address will:</div></li><li><div class="item-name"><a class="mod" href="spinlock_st/index.html" title="mod rp2040_pac::sio::spinlock_st">spinlock_<wbr>st</a></div><div class="desc docblock-short">Spinlock state<br />
|
|||
|
A bitmap containing the state of all 32 spinlocks (1=locked).<br />
|
|||
|
Mainly intended for debugging.</div></li></ul><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.RegisterBlock.html" title="struct rp2040_pac::sio::RegisterBlock">Register<wbr>Block</a></div><div class="desc docblock-short">Register block</div></li></ul><h2 id="types" class="section-header">Type Aliases<a href="#types" class="anchor">§</a></h2><ul class="item-table"><li><div class="item-name"><a class="type" href="type.CPUID.html" title="type rp2040_pac::sio::CPUID">CPUID</a></div><div class="desc docblock-short">CPUID (r) register accessor: Processor core identifier<br />
|
|||
|
Value is 0 when read from processor core 0, and 1 when read from processor core 1.</div></li><li><div class="item-name"><a class="type" href="type.DIV_CSR.html" title="type rp2040_pac::sio::DIV_CSR">DIV_CSR</a></div><div class="desc docblock-short">DIV_CSR (r) register accessor: Control and status register for divider.</div></li><li><div class="item-name"><a class="type" href="type.DIV_QUOTIENT.html" title="type rp2040_pac::sio::DIV_QUOTIENT">DIV_<wbr>QUOTIENT</a></div><div class="desc docblock-short">DIV_QUOTIENT (rw) register accessor: Divider result quotient<br />
|
|||
|
The result of <code>DIVIDEND / DIVISOR</code> (division). Contents undefined while CSR_READY is low.<br />
|
|||
|
For signed calculations, QUOTIENT is negative when the signs of DIVIDEND and DIVISOR differ.<br />
|
|||
|
This register can be written to directly, for context save/restore purposes. This halts any<br />
|
|||
|
in-progress calculation and sets the CSR_READY and CSR_DIRTY flags.<br />
|
|||
|
Reading from QUOTIENT clears the CSR_DIRTY flag, so should read results in the order<br />
|
|||
|
REMAINDER, QUOTIENT if CSR_DIRTY is used.</div></li><li><div class="item-name"><a class="type" href="type.DIV_REMAINDER.html" title="type rp2040_pac::sio::DIV_REMAINDER">DIV_<wbr>REMAINDER</a></div><div class="desc docblock-short">DIV_REMAINDER (rw) register accessor: Divider result remainder<br />
|
|||
|
The result of <code>DIVIDEND % DIVISOR</code> (modulo). Contents undefined while CSR_READY is low.<br />
|
|||
|
For signed calculations, REMAINDER is negative only when DIVIDEND is negative.<br />
|
|||
|
This register can be written to directly, for context save/restore purposes. This halts any<br />
|
|||
|
in-progress calculation and sets the CSR_READY and CSR_DIRTY flags.</div></li><li><div class="item-name"><a class="type" href="type.DIV_SDIVIDEND.html" title="type rp2040_pac::sio::DIV_SDIVIDEND">DIV_<wbr>SDIVIDEND</a></div><div class="desc docblock-short">DIV_SDIVIDEND (rw) register accessor: Divider signed dividend<br />
|
|||
|
The same as UDIVIDEND, but starts a signed calculation, rather than unsigned.</div></li><li><div class="item-name"><a class="type" href="type.DIV_SDIVISOR.html" title="type rp2040_pac::sio::DIV_SDIVISOR">DIV_<wbr>SDIVISOR</a></div><div class="desc docblock-short">DIV_SDIVISOR (rw) register accessor: Divider signed divisor<br />
|
|||
|
The same as UDIVISOR, but starts a signed calculation, rather than unsigned.</div></li><li><div class="item-name"><a class="type" href="type.DIV_UDIVIDEND.html" title="type rp2040_pac::sio::DIV_UDIVIDEND">DIV_<wbr>UDIVIDEND</a></div><div class="desc docblock-short">DIV_UDIVIDEND (rw) register accessor: Divider unsigned dividend<br />
|
|||
|
Write to the DIVIDEND operand of the divider, i.e. the p in <code>p / q</code>.<br />
|
|||
|
Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.<br />
|
|||
|
UDIVIDEND/SDIVIDEND are aliases of the same internal register. The U alias starts an<br />
|
|||
|
unsigned calculation, and the S alias starts a signed calculation.</div></li><li><div class="item-name"><a class="type" href="type.DIV_UDIVISOR.html" title="type rp2040_pac::sio::DIV_UDIVISOR">DIV_<wbr>UDIVISOR</a></div><div class="desc docblock-short">DIV_UDIVISOR (rw) register accessor: Divider unsigned divisor<br />
|
|||
|
Write to the DIVISOR operand of the divider, i.e. the q in <code>p / q</code>.<br />
|
|||
|
Any operand write starts a new calculation. The results appear in QUOTIENT, REMAINDER.<br />
|
|||
|
UDIVISOR/SDIVISOR are aliases of the same internal register. The U alias starts an<br />
|
|||
|
unsigned calculation, and the S alias starts a signed calculation.</div></li><li><div class="item-name"><a class="type" href="type.FIFO_RD.html" title="type rp2040_pac::sio::FIFO_RD">FIFO_RD</a></div><div class="desc docblock-short">FIFO_RD (r) register accessor: Read access to this core’s RX FIFO</div></li><li><div class="item-name"><a class="type" href="type.FIFO_ST.html" title="type rp2040_pac::sio::FIFO_ST">FIFO_ST</a></div><div class="desc docblock-short">FIFO_ST (rw) register accessor: Status register for inter-core FIFOs (mailboxes).<br />
|
|||
|
There is one FIFO in the core 0 -> core 1 direction, and one core 1 -> core 0. Both are 32 bits wide and 8 words deep.<br />
|
|||
|
Core 0 can see the read side of the 1->0 FIFO (RX), and the write side of 0->1 FIFO (TX).<br />
|
|||
|
Core 1 can see the read side of the 0->1 FIFO (RX), and the write side of 1->0 FIFO (TX).<br />
|
|||
|
The SIO IRQ for each core is the logical OR of the VLD, WOF and ROE fields of its FIFO_ST register.</div></li><li><div class="item-name"><a class="type" href="type.FIFO_WR.html" title="type rp2040_pac::sio::FIFO_WR">FIFO_WR</a></div><div class="desc docblock-short">FIFO_WR (w) register accessor: Write access to this core’s TX FIFO</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_IN.html" title="type rp2040_pac::sio::GPIO_HI_IN">GPIO_<wbr>HI_<wbr>IN</a></div><div class="desc docblock-short">GPIO_HI_IN (r) register accessor: Input value for QSPI pins</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OE.html" title="type rp2040_pac::sio::GPIO_HI_OE">GPIO_<wbr>HI_<wbr>OE</a></div><div class="desc docblock-short">GPIO_HI_OE (rw) register accessor: QSPI output enable</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OE_CLR.html" title="type rp2040_pac::sio::GPIO_HI_OE_CLR">GPIO_<wbr>HI_<wbr>OE_<wbr>CLR</a></div><div class="desc docblock-short">GPIO_HI_OE_CLR (w) register accessor: QSPI output enable clear</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OE_SET.html" title="type rp2040_pac::sio::GPIO_HI_OE_SET">GPIO_<wbr>HI_<wbr>OE_<wbr>SET</a></div><div class="desc docblock-short">GPIO_HI_OE_SET (w) register accessor: QSPI output enable set</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OE_XOR.html" title="type rp2040_pac::sio::GPIO_HI_OE_XOR">GPIO_<wbr>HI_<wbr>OE_<wbr>XOR</a></div><div class="desc docblock-short">GPIO_HI_OE_XOR (w) register accessor: QSPI output enable XOR</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OUT.html" title="type rp2040_pac::sio::GPIO_HI_OUT">GPIO_<wbr>HI_<wbr>OUT</a></div><div class="desc docblock-short">GPIO_HI_OUT (rw) register accessor: QSPI output value</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OUT_CLR.html" title="type rp2040_pac::sio::GPIO_HI_OUT_CLR">GPIO_<wbr>HI_<wbr>OUT_<wbr>CLR</a></div><div class="desc docblock-short">GPIO_HI_OUT_CLR (w) register accessor: QSPI output value clear</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OUT_SET.html" title="type rp2040_pac::sio::GPIO_HI_OUT_SET">GPIO_<wbr>HI_<wbr>OUT_<wbr>SET</a></div><div class="desc docblock-short">GPIO_HI_OUT_SET (w) register accessor: QSPI output value set</div></li><li><div class="item-name"><a class="type" href="type.GPIO_HI_OUT_XOR.html" title="type rp2040_pac::sio::GPIO_HI_OUT_XOR">GPIO_<wbr>HI_<wbr>OUT_<wbr>XOR</a></div><div class="desc docblock-short">GPIO_HI_OUT_XOR (w) register accessor: QSPI output value XOR</div></li><li><div class="item-name"><a class="type" href="type.GPIO_IN.html" title="type rp2040_pac::sio::GPIO_IN">GPIO_IN</a></div><div class="desc docblock-short">GPIO_IN (r) register accessor: Input value for GPIO pins</div></li><li><div class="item-name"><a class="type" href="type.GPIO_OE.html" title="type rp2040_pac::sio::GPIO_OE">GPIO_OE</a></div><div class="desc docblock-short">GPIO_OE (rw) register accessor: GPIO output enable</div></li><li><div class="item-name"><a class="type" href="type.GPIO_OE_CLR.html" title="type rp2040_pac::sio::GPIO_OE_CLR">GPIO_<wbr>OE_<wbr>CLR</a></div><div class="desc docblock-short">GPIO_OE_CLR (w) register accessor: GPIO output enable clear</div></li><li><div class="item-name"><a class="type" href="type.GPIO_OE_SET.html" title="type rp2040_pac::sio::GPIO_OE_SET">GPIO_<wbr>OE_<wbr>SET</a></div><div class="desc docblock-short">GPIO_OE_SET (w) register accessor: GPIO output enable set</div></li><li><div class="item-name"><a class="type" href="type.GPIO_OE_XOR.html" title="type rp2040_pac::sio::GPIO_OE_XOR">GPIO_<wbr>OE_<wbr>XOR</a></div><div class="desc docblock-short">GPIO_OE_XOR (w) register accessor: GPIO output enable XOR</div></li><li><div class="item-name"><a class="type" href="type.GPIO_OUT.html" title="type rp2040_pac::sio::GPIO_OUT">GPIO_<wbr>OUT</a></div><div class="desc docblock-short">GPIO_OUT (rw) register accessor: GPIO output value</div></li><li><div class="item-name"><
|
|||
|
Reading yields lane 0’s raw shift and mask value (BASE0 not added).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_ACCUM1.html" title="type rp2040_pac::sio::INTERP0_ACCUM1">INTER<wbr>P0_<wbr>ACCU<wbr>M1</a></div><div class="desc docblock-short">INTERP0_ACCUM1 (rw) register accessor: Read/write access to accumulator 1</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_ACCUM1_ADD.html" title="type rp2040_pac::sio::INTERP0_ACCUM1_ADD">INTER<wbr>P0_<wbr>ACCU<wbr>M1_<wbr>ADD</a></div><div class="desc docblock-short">INTERP0_ACCUM1_ADD (rw) register accessor: Values written here are atomically added to ACCUM1<br />
|
|||
|
Reading yields lane 1’s raw shift and mask value (BASE1 not added).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_BASE0.html" title="type rp2040_pac::sio::INTERP0_BASE0">INTER<wbr>P0_<wbr>BASE0</a></div><div class="desc docblock-short">INTERP0_BASE0 (rw) register accessor: Read/write access to BASE0 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_BASE1.html" title="type rp2040_pac::sio::INTERP0_BASE1">INTER<wbr>P0_<wbr>BASE1</a></div><div class="desc docblock-short">INTERP0_BASE1 (rw) register accessor: Read/write access to BASE1 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_BASE2.html" title="type rp2040_pac::sio::INTERP0_BASE2">INTER<wbr>P0_<wbr>BASE2</a></div><div class="desc docblock-short">INTERP0_BASE2 (rw) register accessor: Read/write access to BASE2 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_BASE_1AND0.html" title="type rp2040_pac::sio::INTERP0_BASE_1AND0">INTER<wbr>P0_<wbr>BASE_<wbr>1AND0</a></div><div class="desc docblock-short">INTERP0_BASE_1AND0 (w) register accessor: On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.<br />
|
|||
|
Each half is sign-extended to 32 bits if that lane’s SIGNED flag is set.</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_CTRL_LANE0.html" title="type rp2040_pac::sio::INTERP0_CTRL_LANE0">INTER<wbr>P0_<wbr>CTRL_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP0_CTRL_LANE0 (rw) register accessor: Control register for lane 0</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_CTRL_LANE1.html" title="type rp2040_pac::sio::INTERP0_CTRL_LANE1">INTER<wbr>P0_<wbr>CTRL_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP0_CTRL_LANE1 (rw) register accessor: Control register for lane 1</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_PEEK_FULL.html" title="type rp2040_pac::sio::INTERP0_PEEK_FULL">INTER<wbr>P0_<wbr>PEEK_<wbr>FULL</a></div><div class="desc docblock-short">INTERP0_PEEK_FULL (r) register accessor: Read FULL result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_PEEK_LANE0.html" title="type rp2040_pac::sio::INTERP0_PEEK_LANE0">INTER<wbr>P0_<wbr>PEEK_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP0_PEEK_LANE0 (r) register accessor: Read LANE0 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_PEEK_LANE1.html" title="type rp2040_pac::sio::INTERP0_PEEK_LANE1">INTER<wbr>P0_<wbr>PEEK_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP0_PEEK_LANE1 (r) register accessor: Read LANE1 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_POP_FULL.html" title="type rp2040_pac::sio::INTERP0_POP_FULL">INTER<wbr>P0_<wbr>POP_<wbr>FULL</a></div><div class="desc docblock-short">INTERP0_POP_FULL (r) register accessor: Read FULL result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_POP_LANE0.html" title="type rp2040_pac::sio::INTERP0_POP_LANE0">INTER<wbr>P0_<wbr>POP_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP0_POP_LANE0 (r) register accessor: Read LANE0 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.INTERP0_POP_LANE1.html" title="type rp2040_pac::sio::INTERP0_POP_LANE1">INTER<wbr>P0_<wbr>POP_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP0_POP_LANE1 (r) register accessor: Read LANE1 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_ACCUM0.html" title="type rp2040_pac::sio::INTERP1_ACCUM0">INTER<wbr>P1_<wbr>ACCU<wbr>M0</a></div><div class="desc docblock-short">INTERP1_ACCUM0 (rw) register accessor: Read/write access to accumulator 0</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_ACCUM0_ADD.html" title="type rp2040_pac::sio::INTERP1_ACCUM0_ADD">INTER<wbr>P1_<wbr>ACCU<wbr>M0_<wbr>ADD</a></div><div class="desc docblock-short">INTERP1_ACCUM0_ADD (rw) register accessor: Values written here are atomically added to ACCUM0<br />
|
|||
|
Reading yields lane 0’s raw shift and mask value (BASE0 not added).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_ACCUM1.html" title="type rp2040_pac::sio::INTERP1_ACCUM1">INTER<wbr>P1_<wbr>ACCU<wbr>M1</a></div><div class="desc docblock-short">INTERP1_ACCUM1 (rw) register accessor: Read/write access to accumulator 1</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_ACCUM1_ADD.html" title="type rp2040_pac::sio::INTERP1_ACCUM1_ADD">INTER<wbr>P1_<wbr>ACCU<wbr>M1_<wbr>ADD</a></div><div class="desc docblock-short">INTERP1_ACCUM1_ADD (rw) register accessor: Values written here are atomically added to ACCUM1<br />
|
|||
|
Reading yields lane 1’s raw shift and mask value (BASE1 not added).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_BASE0.html" title="type rp2040_pac::sio::INTERP1_BASE0">INTER<wbr>P1_<wbr>BASE0</a></div><div class="desc docblock-short">INTERP1_BASE0 (rw) register accessor: Read/write access to BASE0 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_BASE1.html" title="type rp2040_pac::sio::INTERP1_BASE1">INTER<wbr>P1_<wbr>BASE1</a></div><div class="desc docblock-short">INTERP1_BASE1 (rw) register accessor: Read/write access to BASE1 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_BASE2.html" title="type rp2040_pac::sio::INTERP1_BASE2">INTER<wbr>P1_<wbr>BASE2</a></div><div class="desc docblock-short">INTERP1_BASE2 (rw) register accessor: Read/write access to BASE2 register.</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_BASE_1AND0.html" title="type rp2040_pac::sio::INTERP1_BASE_1AND0">INTER<wbr>P1_<wbr>BASE_<wbr>1AND0</a></div><div class="desc docblock-short">INTERP1_BASE_1AND0 (w) register accessor: On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously.<br />
|
|||
|
Each half is sign-extended to 32 bits if that lane’s SIGNED flag is set.</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_CTRL_LANE0.html" title="type rp2040_pac::sio::INTERP1_CTRL_LANE0">INTER<wbr>P1_<wbr>CTRL_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP1_CTRL_LANE0 (rw) register accessor: Control register for lane 0</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_CTRL_LANE1.html" title="type rp2040_pac::sio::INTERP1_CTRL_LANE1">INTER<wbr>P1_<wbr>CTRL_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP1_CTRL_LANE1 (rw) register accessor: Control register for lane 1</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_PEEK_FULL.html" title="type rp2040_pac::sio::INTERP1_PEEK_FULL">INTER<wbr>P1_<wbr>PEEK_<wbr>FULL</a></div><div class="desc docblock-short">INTERP1_PEEK_FULL (r) register accessor: Read FULL result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_PEEK_LANE0.html" title="type rp2040_pac::sio::INTERP1_PEEK_LANE0">INTER<wbr>P1_<wbr>PEEK_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP1_PEEK_LANE0 (r) register accessor: Read LANE0 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_PEEK_LANE1.html" title="type rp2040_pac::sio::INTERP1_PEEK_LANE1">INTER<wbr>P1_<wbr>PEEK_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP1_PEEK_LANE1 (r) register accessor: Read LANE1 result, without altering any internal state (PEEK).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_POP_FULL.html" title="type rp2040_pac::sio::INTERP1_POP_FULL">INTER<wbr>P1_<wbr>POP_<wbr>FULL</a></div><div class="desc docblock-short">INTERP1_POP_FULL (r) register accessor: Read FULL result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_POP_LANE0.html" title="type rp2040_pac::sio::INTERP1_POP_LANE0">INTER<wbr>P1_<wbr>POP_<wbr>LANE0</a></div><div class="desc docblock-short">INTERP1_POP_LANE0 (r) register accessor: Read LANE0 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.INTERP1_POP_LANE1.html" title="type rp2040_pac::sio::INTERP1_POP_LANE1">INTER<wbr>P1_<wbr>POP_<wbr>LANE1</a></div><div class="desc docblock-short">INTERP1_POP_LANE1 (r) register accessor: Read LANE1 result, and simultaneously write lane results to both accumulators (POP).</div></li><li><div class="item-name"><a class="type" href="type.SPINLOCK.html" title="type rp2040_pac::sio::SPINLOCK">SPINLOCK</a></div><div class="desc docblock-short">SPINLOCK (rw) register accessor: Reading from a spinlock address will:</div></li><li><div class="item-name"><a class="type" href="type.SPINLOCK_ST.html" title="type rp2040_pac::sio::SPINLOCK_ST">SPINLOCK_<wbr>ST</a></div><div class="desc docblock-short">SPINLOCK_ST (r) register accessor: Spinlock state<br />
|
|||
|
A bitmap containing the state of all 32 spinlocks (1=locked).<br />
|
|||
|
Mainly intended for debugging.</div></li></ul></section></div></main></body></html>
|