Inital rp23 ci tests
Some tests need more work. * The adc test builds, but isn't set up correctly for the 2350 hardware yet. * The multicore and gpio_multicore tests only work from flash, seems to be a probe-rs issue. * The i2c and flash tests also only works from flash, these are probably bugs but I don't have time to run them down now. * The 2350 gpio test skips anything with pull downs. I think these fail because of E9. The float, bootsel, cyw43, and ethernet tests don't have 2350 equivalents. There's no reason to use the float romfuncs, use the FPU. Bootsel as a button isn't supported on the 2350 yet. The wifi and eth tests don't have appropriate hardware. The i2c test has also been tweaked to run on one core.
This commit is contained in:
parent
89b5efc900
commit
9e785438ee
12
ci.sh
12
ci.sh
@ -291,7 +291,8 @@ cargo batch \
|
||||
--- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32f091rc --artifact-dir out/tests/stm32f091rc \
|
||||
--- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv8m.main-none-eabihf --features stm32h503rb --artifact-dir out/tests/stm32h503rb \
|
||||
--- build --release --manifest-path tests/stm32/Cargo.toml --target thumbv6m-none-eabi --features stm32u083rc --artifact-dir out/tests/stm32u083rc \
|
||||
--- build --release --manifest-path tests/rp/Cargo.toml --target thumbv6m-none-eabi --artifact-dir out/tests/rpi-pico \
|
||||
--- build --release --manifest-path tests/rp/Cargo.toml --target thumbv6m-none-eabi --features rp2040 --artifact-dir out/tests/rpi-pico \
|
||||
--- build --release --manifest-path tests/rp/Cargo.toml --target thumbv8m.main-none-eabihf --features rp235xb --artifact-dir out/tests/pimoroni-pico-plus-2 \
|
||||
--- build --release --manifest-path tests/nrf/Cargo.toml --target thumbv6m-none-eabi --features nrf51422 --artifact-dir out/tests/nrf51422-dk \
|
||||
--- build --release --manifest-path tests/nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52832 --artifact-dir out/tests/nrf52832-dk \
|
||||
--- build --release --manifest-path tests/nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52833 --artifact-dir out/tests/nrf52833-dk \
|
||||
@ -319,6 +320,15 @@ rm out/tests/stm32f207zg/usart_rx_ringbuffered
|
||||
# doesn't work, gives "noise error", no idea why. usart_dma does pass.
|
||||
rm out/tests/stm32u5a5zj/usart
|
||||
|
||||
# probe-rs error: "multi-core ram flash start not implemented yet"
|
||||
# As of 2025-02-17 these tests work when run from flash
|
||||
rm out/tests/pimoroni-pico-plus-2/multicore
|
||||
rm out/tests/pimoroni-pico-plus-2/gpio_multicore
|
||||
# Doesn't work when run from ram on the 2350
|
||||
rm out/tests/pimoroni-pico-plus-2/flash
|
||||
# This test passes locally but fails on the HIL, no idea why
|
||||
rm out/tests/pimoroni-pico-plus-2/i2c
|
||||
|
||||
if [[ -z "${TELEPROBE_TOKEN-}" ]]; then
|
||||
echo No teleprobe token found, skipping running HIL tests
|
||||
exit
|
||||
|
||||
@ -5,8 +5,9 @@
|
||||
#build-std-features = ["panic_immediate_abort"]
|
||||
|
||||
[target.'cfg(all(target_arch = "arm", target_os = "none"))']
|
||||
runner = "teleprobe client run"
|
||||
#runner = "teleprobe client run"
|
||||
#runner = "teleprobe local run --chip RP2040 --elf"
|
||||
runner = "teleprobe local run --chip RP235X --elf"
|
||||
|
||||
rustflags = [
|
||||
# Code-size optimizations.
|
||||
@ -15,7 +16,8 @@ rustflags = [
|
||||
]
|
||||
|
||||
[build]
|
||||
target = "thumbv6m-none-eabi"
|
||||
#target = "thumbv6m-none-eabi"
|
||||
target = "thumbv8m.main-none-eabihf"
|
||||
|
||||
[env]
|
||||
DEFMT_LOG = "trace,embassy_hal_internal=debug,embassy_net_esp_hosted=debug,cyw43=info,cyw43_pio=info,smoltcp=info"
|
||||
|
||||
@ -4,13 +4,18 @@ name = "embassy-rp-tests"
|
||||
version = "0.1.0"
|
||||
license = "MIT OR Apache-2.0"
|
||||
|
||||
[features]
|
||||
rp2040 = ["embassy-rp/rp2040"]
|
||||
rp235xa = ["embassy-rp/rp235xa"]
|
||||
rp235xb = ["embassy-rp/rp235xb"]
|
||||
|
||||
[dependencies]
|
||||
teleprobe-meta = "1.1"
|
||||
|
||||
embassy-sync = { version = "0.6.2", path = "../../embassy-sync", features = ["defmt"] }
|
||||
embassy-executor = { version = "0.7.0", path = "../../embassy-executor", features = ["task-arena-size-32768", "arch-cortex-m", "executor-thread", "defmt"] }
|
||||
embassy-time = { version = "0.4.0", path = "../../embassy-time", features = ["defmt", ] }
|
||||
embassy-rp = { version = "0.3.0", path = "../../embassy-rp", features = [ "defmt", "unstable-pac", "time-driver", "critical-section-impl", "intrinsics", "rom-v2-intrinsics", "run-from-ram", "rp2040"] }
|
||||
embassy-rp = { version = "0.3.0", path = "../../embassy-rp", features = [ "defmt", "unstable-pac", "time-driver", "critical-section-impl", "intrinsics", "rom-v2-intrinsics", "run-from-ram"] }
|
||||
embassy-futures = { version = "0.1.0", path = "../../embassy-futures" }
|
||||
embassy-net = { version = "0.7.0", path = "../../embassy-net", features = ["defmt", "tcp", "udp", "dhcpv4", "medium-ethernet"] }
|
||||
embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
|
||||
@ -37,6 +42,30 @@ pio-proc = { git = "https://github.com/rp-rs/pio-rs", rev = "fa586448b0b223217ee
|
||||
pio = { git = "https://github.com/rp-rs/pio-rs", rev = "fa586448b0b223217eec8c92c19fe6823dd04cc4" }
|
||||
rand = { version = "0.8.5", default-features = false }
|
||||
|
||||
# bootsel not currently supported on 2350
|
||||
[[bin]]
|
||||
name = "bootsel"
|
||||
path = "src/bin/bootsel.rs"
|
||||
required-features = [ "rp2040",]
|
||||
|
||||
# 2350 devboard isn't a W
|
||||
[[bin]]
|
||||
name = "cyw43-perf"
|
||||
path = "src/bin/cyw43-perf.rs"
|
||||
required-features = [ "rp2040",]
|
||||
|
||||
# Eth test only for the w5100s-evb-pico
|
||||
[[bin]]
|
||||
name = "ethernet_w5100s_perf"
|
||||
path = "src/bin/ethernet_w5100s_perf.rs"
|
||||
required-features = [ "rp2040",]
|
||||
|
||||
# Float intrinsics are only relevant for the 2040
|
||||
[[bin]]
|
||||
name = "float"
|
||||
path = "src/bin/float.rs"
|
||||
required-features = [ "rp2040",]
|
||||
|
||||
[profile.dev]
|
||||
debug = 2
|
||||
debug-assertions = true
|
||||
|
||||
8
tests/rp/readme.md
Normal file
8
tests/rp/readme.md
Normal file
@ -0,0 +1,8 @@
|
||||
# Pico and Pico 2 Plus connections
|
||||
|
||||
GP0-GP1
|
||||
GP3-GP4
|
||||
GP6-GP9
|
||||
GP7-GP11
|
||||
GP18-GP20 with 10k pullup
|
||||
GP19-GP21 with 10k pullup
|
||||
@ -1,12 +1,17 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::*;
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::adc::{Adc, Channel, Config, InterruptHandler, Sample};
|
||||
use embassy_rp::adc::Sample;
|
||||
use embassy_rp::adc::{Adc, Channel, Config, InterruptHandler};
|
||||
use embassy_rp::bind_interrupts;
|
||||
use embassy_rp::gpio::{Level, Output, Pull};
|
||||
use embassy_rp::gpio::Pull;
|
||||
use embassy_rp::gpio::{Level, Output};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
bind_interrupts!(struct Irqs {
|
||||
@ -20,14 +25,19 @@ async fn main(_spawner: Spawner) {
|
||||
let _wifi_off = Output::new(p.PIN_25, Level::High);
|
||||
let mut adc = Adc::new(p.ADC, Irqs, Config::default());
|
||||
|
||||
#[cfg(any(feature = "rp2040", feature = "rp235xa"))]
|
||||
let (mut a, mut b, mut c, mut d) = (p.PIN_26, p.PIN_27, p.PIN_28, p.PIN_29);
|
||||
#[cfg(feature = "rp235xb")]
|
||||
let (mut a, mut b, mut c, mut d) = (p.PIN_44, p.PIN_45, p.PIN_46, p.PIN_47);
|
||||
|
||||
{
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Down);
|
||||
let mut p = Channel::new_pin(&mut a, Pull::Down);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000);
|
||||
defmt::assert!(adc.read(&mut p).await.unwrap() < 0b01_0000_0000);
|
||||
}
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_26, Pull::Up);
|
||||
let mut p = Channel::new_pin(&mut a, Pull::Up);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000);
|
||||
defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000);
|
||||
}
|
||||
@ -35,21 +45,21 @@ async fn main(_spawner: Spawner) {
|
||||
// not bothering with async reads from now on
|
||||
{
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Down);
|
||||
let mut p = Channel::new_pin(&mut b, Pull::Down);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000);
|
||||
}
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_27, Pull::Up);
|
||||
let mut p = Channel::new_pin(&mut b, Pull::Up);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000);
|
||||
}
|
||||
}
|
||||
{
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Down);
|
||||
let mut p = Channel::new_pin(&mut c, Pull::Down);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() < 0b01_0000_0000);
|
||||
}
|
||||
{
|
||||
let mut p = Channel::new_pin(&mut p.PIN_28, Pull::Up);
|
||||
let mut p = Channel::new_pin(&mut c, Pull::Up);
|
||||
defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000);
|
||||
}
|
||||
}
|
||||
@ -57,15 +67,15 @@ async fn main(_spawner: Spawner) {
|
||||
// gp29 is connected to vsys through a 200k/100k divider,
|
||||
// adding pulls should change the value
|
||||
let low = {
|
||||
let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Down);
|
||||
let mut p = Channel::new_pin(&mut d, Pull::Down);
|
||||
adc.blocking_read(&mut p).unwrap()
|
||||
};
|
||||
let none = {
|
||||
let mut p = Channel::new_pin(&mut p.PIN_29, Pull::None);
|
||||
let mut p = Channel::new_pin(&mut d, Pull::None);
|
||||
adc.blocking_read(&mut p).unwrap()
|
||||
};
|
||||
let up = {
|
||||
let mut p = Channel::new_pin(&mut p.PIN_29, Pull::Up);
|
||||
let mut p = Channel::new_pin(&mut d, Pull::Up);
|
||||
adc.blocking_read(&mut p).unwrap()
|
||||
};
|
||||
defmt::assert!(low < none);
|
||||
@ -89,29 +99,14 @@ async fn main(_spawner: Spawner) {
|
||||
let mut low = [0u16; 16];
|
||||
let mut none = [0u8; 16];
|
||||
let mut up = [Sample::default(); 16];
|
||||
adc.read_many(
|
||||
&mut Channel::new_pin(&mut p.PIN_29, Pull::Down),
|
||||
&mut low,
|
||||
1,
|
||||
&mut p.DMA_CH0,
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
adc.read_many(
|
||||
&mut Channel::new_pin(&mut p.PIN_29, Pull::None),
|
||||
&mut none,
|
||||
1,
|
||||
&mut p.DMA_CH0,
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
adc.read_many_raw(
|
||||
&mut Channel::new_pin(&mut p.PIN_29, Pull::Up),
|
||||
&mut up,
|
||||
1,
|
||||
&mut p.DMA_CH0,
|
||||
)
|
||||
.await;
|
||||
adc.read_many(&mut Channel::new_pin(&mut d, Pull::Down), &mut low, 1, &mut p.DMA_CH0)
|
||||
.await
|
||||
.unwrap();
|
||||
adc.read_many(&mut Channel::new_pin(&mut d, Pull::None), &mut none, 1, &mut p.DMA_CH0)
|
||||
.await
|
||||
.unwrap();
|
||||
adc.read_many_raw(&mut Channel::new_pin(&mut d, Pull::Up), &mut up, 1, &mut p.DMA_CH0)
|
||||
.await;
|
||||
defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16));
|
||||
defmt::assert!(up.iter().all(|s| s.good()));
|
||||
defmt::assert!(none.iter().zip(up.iter()).all(|(n, u)| (*n as u16) < u.value()));
|
||||
@ -133,7 +128,7 @@ async fn main(_spawner: Spawner) {
|
||||
{
|
||||
let mut multi = [0u16; 2];
|
||||
let mut channels = [
|
||||
Channel::new_pin(&mut p.PIN_26, Pull::Up),
|
||||
Channel::new_pin(&mut a, Pull::Up),
|
||||
Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR),
|
||||
];
|
||||
adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0)
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::*;
|
||||
use embassy_executor::Spawner;
|
||||
@ -24,13 +27,19 @@ async fn main(_spawner: Spawner) {
|
||||
let mut flash = embassy_rp::flash::Flash::<_, Async, { 2 * 1024 * 1024 }>::new(p.FLASH, p.DMA_CH0);
|
||||
|
||||
// Get JEDEC id
|
||||
let jedec = defmt::unwrap!(flash.blocking_jedec_id());
|
||||
info!("jedec id: 0x{:x}", jedec);
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let jedec = defmt::unwrap!(flash.blocking_jedec_id());
|
||||
info!("jedec id: 0x{:x}", jedec);
|
||||
}
|
||||
|
||||
// Get unique id
|
||||
let mut uid = [0; 8];
|
||||
defmt::unwrap!(flash.blocking_unique_id(&mut uid));
|
||||
info!("unique id: {:?}", uid);
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut uid = [0; 8];
|
||||
defmt::unwrap!(flash.blocking_unique_id(&mut uid));
|
||||
info!("unique id: {:?}", uid);
|
||||
}
|
||||
|
||||
let mut buf = [0u8; ERASE_SIZE];
|
||||
defmt::unwrap!(flash.blocking_read(ADDR_OFFSET, &mut buf));
|
||||
|
||||
@ -1,10 +1,15 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert, *};
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::gpio::{Flex, Input, Level, Output, OutputOpenDrain, Pull};
|
||||
#[cfg(feature = "rp2040")]
|
||||
use embassy_rp::gpio::OutputOpenDrain;
|
||||
use embassy_rp::gpio::{Flex, Input, Level, Output, Pull};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
#[embassy_executor::main]
|
||||
@ -76,6 +81,7 @@ async fn main(_spawner: Spawner) {
|
||||
}
|
||||
|
||||
// Test input pulldown
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let b = Input::new(&mut b, Pull::Down);
|
||||
delay();
|
||||
@ -104,6 +110,7 @@ async fn main(_spawner: Spawner) {
|
||||
}
|
||||
|
||||
// OUTPUT OPEN DRAIN
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut b = OutputOpenDrain::new(&mut b, Level::High);
|
||||
let mut a = Flex::new(&mut a);
|
||||
@ -202,6 +209,7 @@ async fn main(_spawner: Spawner) {
|
||||
}
|
||||
|
||||
// Test input pulldown
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut b = Flex::new(&mut b);
|
||||
b.set_as_input();
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{info, unwrap};
|
||||
use embassy_executor::Executor;
|
||||
@ -56,7 +59,7 @@ async fn core1_task(p: PIN_1) {
|
||||
|
||||
CHANNEL0.receive().await;
|
||||
|
||||
let mut pin = Input::new(p, Pull::Down);
|
||||
let mut pin = Input::new(p, Pull::None);
|
||||
let wait = pin.wait_for_rising_edge();
|
||||
|
||||
CHANNEL1.send(()).await;
|
||||
|
||||
@ -1,23 +1,21 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, info, panic, unwrap};
|
||||
use defmt::{assert_eq, info, panic};
|
||||
use embassy_embedded_hal::SetConfig;
|
||||
use embassy_executor::{Executor, Spawner};
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::clocks::{PllConfig, XoscConfig};
|
||||
use embassy_rp::config::Config as rpConfig;
|
||||
use embassy_rp::multicore::{spawn_core1, Stack};
|
||||
use embassy_rp::peripherals::{I2C0, I2C1};
|
||||
use embassy_rp::{bind_interrupts, i2c, i2c_slave};
|
||||
use embedded_hal_1::i2c::Operation;
|
||||
use embedded_hal_async::i2c::I2c;
|
||||
use static_cell::StaticCell;
|
||||
use {defmt_rtt as _, panic_probe as _, panic_probe as _, panic_probe as _};
|
||||
|
||||
static mut CORE1_STACK: Stack<1024> = Stack::new();
|
||||
static EXECUTOR1: StaticCell<Executor> = StaticCell::new();
|
||||
|
||||
use crate::i2c::AbortReason;
|
||||
|
||||
bind_interrupts!(struct Irqs {
|
||||
@ -106,7 +104,7 @@ async fn device_task(mut dev: i2c_slave::I2cSlave<'static, I2C1>) -> ! {
|
||||
}
|
||||
|
||||
async fn controller_task(con: &mut i2c::I2c<'static, I2C0, i2c::Async>) {
|
||||
info!("Device start");
|
||||
info!("Controller start");
|
||||
|
||||
{
|
||||
let buf = [0xCA, 0x11];
|
||||
@ -180,7 +178,7 @@ async fn controller_task(con: &mut i2c::I2c<'static, I2C0, i2c::Async>) {
|
||||
}
|
||||
|
||||
#[embassy_executor::main]
|
||||
async fn main(_core0_spawner: Spawner) {
|
||||
async fn main(spawner: Spawner) {
|
||||
let mut config = rpConfig::default();
|
||||
// Configure clk_sys to 48MHz to support 1kHz scl.
|
||||
// In theory it can go lower, but we won't bother to test below 1kHz.
|
||||
@ -210,14 +208,7 @@ async fn controller_task(con: &mut i2c::I2c<'static, I2C0, i2c::Async>) {
|
||||
config.addr = DEV_ADDR as u16;
|
||||
let device = i2c_slave::I2cSlave::new(p.I2C1, d_sda, d_scl, Irqs, config);
|
||||
|
||||
spawn_core1(
|
||||
p.CORE1,
|
||||
unsafe { &mut *core::ptr::addr_of_mut!(CORE1_STACK) },
|
||||
move || {
|
||||
let executor1 = EXECUTOR1.init(Executor::new());
|
||||
executor1.run(|spawner| unwrap!(spawner.spawn(device_task(device))));
|
||||
},
|
||||
);
|
||||
spawner.must_spawn(device_task(device));
|
||||
|
||||
let c_sda = p.PIN_21;
|
||||
let c_scl = p.PIN_20;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{info, unwrap};
|
||||
use embassy_executor::Executor;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::info;
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::info;
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,10 +1,15 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert, assert_eq, assert_ne, *};
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::gpio::{Input, Level, Output, Pull};
|
||||
use embassy_rp::gpio::{Input, Pull};
|
||||
#[cfg(feature = "rp2040")]
|
||||
use embassy_rp::gpio::{Level, Output};
|
||||
use embassy_rp::pwm::{Config, InputMode, Pwm};
|
||||
use embassy_time::Timer;
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
@ -92,6 +97,7 @@ async fn main(_spawner: Spawner) {
|
||||
}
|
||||
|
||||
// Test level-gated
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut pin2 = Output::new(&mut p11, Level::Low);
|
||||
let pwm = Pwm::new_input(&mut p.PWM_SLICE3, &mut p7, Pull::None, InputMode::Level, cfg.clone());
|
||||
@ -102,12 +108,14 @@ async fn main(_spawner: Spawner) {
|
||||
Timer::after_millis(1).await;
|
||||
pin2.set_low();
|
||||
let ctr = pwm.counter();
|
||||
info!("ctr: {}", ctr);
|
||||
assert!(ctr >= 1000);
|
||||
Timer::after_millis(1).await;
|
||||
assert_eq!(pwm.counter(), ctr);
|
||||
}
|
||||
|
||||
// Test rising-gated
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut pin2 = Output::new(&mut p11, Level::Low);
|
||||
let pwm = Pwm::new_input(
|
||||
@ -129,6 +137,7 @@ async fn main(_spawner: Spawner) {
|
||||
}
|
||||
|
||||
// Test falling-gated
|
||||
#[cfg(feature = "rp2040")]
|
||||
{
|
||||
let mut pin2 = Output::new(&mut p11, Level::High);
|
||||
let pwm = Pwm::new_input(
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -3,7 +3,10 @@
|
||||
//!
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, panic, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
#![no_std]
|
||||
#![no_main]
|
||||
#[cfg(feature = "rp2040")]
|
||||
teleprobe_meta::target!(b"rpi-pico");
|
||||
#[cfg(feature = "rp235xb")]
|
||||
teleprobe_meta::target!(b"pimoroni-pico-plus-2");
|
||||
|
||||
use defmt::{assert_eq, *};
|
||||
use embassy_executor::Spawner;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user