rp/pio: update pio-rs crate, reexport it so users don't get version mismatches.
This commit is contained in:
@@ -33,8 +33,6 @@ embedded-io-async = { version = "0.6.1" }
|
||||
embedded-storage = { version = "0.3" }
|
||||
static_cell = "2"
|
||||
portable-atomic = { version = "1.5", features = ["critical-section"] }
|
||||
pio-proc = { git = "https://github.com/rp-rs/pio-rs", rev = "fa586448b0b223217eec8c92c19fe6823dd04cc4" }
|
||||
pio = { git = "https://github.com/rp-rs/pio-rs", rev = "fa586448b0b223217eec8c92c19fe6823dd04cc4" }
|
||||
rand = { version = "0.8.5", default-features = false }
|
||||
|
||||
[profile.dev]
|
||||
|
||||
@@ -6,6 +6,7 @@ use defmt::info;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::bind_interrupts;
|
||||
use embassy_rp::peripherals::PIO0;
|
||||
use embassy_rp::pio::program::pio_asm;
|
||||
use embassy_rp::pio::{Config, InterruptHandler, Pio};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
@@ -24,7 +25,7 @@ async fn main(_spawner: Spawner) {
|
||||
..
|
||||
} = Pio::new(pio, Irqs);
|
||||
|
||||
let prg = pio_proc::pio_asm!(
|
||||
let prg = pio_asm!(
|
||||
"irq set 0",
|
||||
"irq wait 0",
|
||||
"irq set 1",
|
||||
|
||||
@@ -6,6 +6,7 @@ use defmt::info;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::bind_interrupts;
|
||||
use embassy_rp::peripherals::PIO0;
|
||||
use embassy_rp::pio::program::pio_asm;
|
||||
use embassy_rp::pio::{Config, InterruptHandler, LoadError, Pio};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
@@ -27,7 +28,7 @@ async fn main(_spawner: Spawner) {
|
||||
} = Pio::new(pio, Irqs);
|
||||
|
||||
// load with explicit origin works
|
||||
let prg1 = pio_proc::pio_asm!(
|
||||
let prg1 = pio_asm!(
|
||||
".origin 4"
|
||||
"nop",
|
||||
"nop",
|
||||
@@ -46,15 +47,14 @@ async fn main(_spawner: Spawner) {
|
||||
assert_eq!(loaded1.wrap.target, 4);
|
||||
|
||||
// load without origin chooses a free space
|
||||
let prg2 = pio_proc::pio_asm!("nop", "nop", "nop", "nop", "nop", "nop", "nop", "irq 1", "nop", "nop",);
|
||||
let prg2 = pio_asm!("nop", "nop", "nop", "nop", "nop", "nop", "nop", "irq 1", "nop", "nop",);
|
||||
let loaded2 = common.load_program(&prg2.program);
|
||||
assert_eq!(loaded2.origin, 14);
|
||||
assert_eq!(loaded2.wrap.source, 23);
|
||||
assert_eq!(loaded2.wrap.target, 14);
|
||||
|
||||
// wrapping around the end of program space automatically works
|
||||
let prg3 =
|
||||
pio_proc::pio_asm!("nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "irq 2",);
|
||||
let prg3 = pio_asm!("nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "nop", "irq 2",);
|
||||
let loaded3 = common.load_program(&prg3.program);
|
||||
assert_eq!(loaded3.origin, 24);
|
||||
assert_eq!(loaded3.wrap.source, 3);
|
||||
@@ -88,13 +88,13 @@ async fn main(_spawner: Spawner) {
|
||||
|
||||
// instruction memory is full now. all loads should fail.
|
||||
{
|
||||
let prg = pio_proc::pio_asm!(".origin 0", "nop");
|
||||
let prg = pio_asm!(".origin 0", "nop");
|
||||
match common.try_load_program(&prg.program) {
|
||||
Err(LoadError::AddressInUse(0)) => (),
|
||||
_ => panic!("program loaded when it shouldn't"),
|
||||
};
|
||||
|
||||
let prg = pio_proc::pio_asm!("nop");
|
||||
let prg = pio_asm!("nop");
|
||||
match common.try_load_program(&prg.program) {
|
||||
Err(LoadError::InsufficientSpace) => (),
|
||||
_ => panic!("program loaded when it shouldn't"),
|
||||
@@ -106,13 +106,13 @@ async fn main(_spawner: Spawner) {
|
||||
common.free_instr(loaded3.used_memory);
|
||||
}
|
||||
{
|
||||
let prg = pio_proc::pio_asm!(".origin 0", "nop");
|
||||
let prg = pio_asm!(".origin 0", "nop");
|
||||
match common.try_load_program(&prg.program) {
|
||||
Ok(_) => (),
|
||||
_ => panic!("program didn't loaded when it shouldn"),
|
||||
};
|
||||
|
||||
let prg = pio_proc::pio_asm!("nop");
|
||||
let prg = pio_asm!("nop");
|
||||
match common.try_load_program(&prg.program) {
|
||||
Ok(_) => (),
|
||||
_ => panic!("program didn't loaded when it shouldn"),
|
||||
|
||||
Reference in New Issue
Block a user