commit
						fcee67a0d2
					
				
							
								
								
									
										14
									
								
								ci.sh
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								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 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 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/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 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 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 \
 | 
					    --- build --release --manifest-path tests/nrf/Cargo.toml --target thumbv7em-none-eabi --features nrf52833 --artifact-dir out/tests/nrf52833-dk \
 | 
				
			||||||
@ -319,6 +320,17 @@ rm out/tests/stm32f207zg/usart_rx_ringbuffered
 | 
				
			|||||||
# doesn't work, gives "noise error", no idea why. usart_dma does pass.
 | 
					# doesn't work, gives "noise error", no idea why. usart_dma does pass.
 | 
				
			||||||
rm out/tests/stm32u5a5zj/usart
 | 
					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
 | 
				
			||||||
 | 
					# The pico2 plus doesn't have the adcs hooked up like the picoW does.
 | 
				
			||||||
 | 
					rm out/tests/pimoroni-pico-plus-2/adc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -z "${TELEPROBE_TOKEN-}" ]]; then
 | 
					if [[ -z "${TELEPROBE_TOKEN-}" ]]; then
 | 
				
			||||||
    echo No teleprobe token found, skipping running HIL tests
 | 
					    echo No teleprobe token found, skipping running HIL tests
 | 
				
			||||||
    exit
 | 
					    exit
 | 
				
			||||||
 | 
				
			|||||||
@ -5,8 +5,9 @@
 | 
				
			|||||||
#build-std-features = ["panic_immediate_abort"]
 | 
					#build-std-features = ["panic_immediate_abort"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[target.'cfg(all(target_arch = "arm", target_os = "none"))']
 | 
					[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 RP2040 --elf"
 | 
				
			||||||
 | 
					runner = "teleprobe local run --chip RP235X --elf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rustflags = [
 | 
					rustflags = [
 | 
				
			||||||
  # Code-size optimizations.
 | 
					  # Code-size optimizations.
 | 
				
			||||||
@ -15,7 +16,8 @@ rustflags = [
 | 
				
			|||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[build]
 | 
					[build]
 | 
				
			||||||
target = "thumbv6m-none-eabi"
 | 
					#target = "thumbv6m-none-eabi"
 | 
				
			||||||
 | 
					target = "thumbv8m.main-none-eabihf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[env]
 | 
					[env]
 | 
				
			||||||
DEFMT_LOG = "trace,embassy_hal_internal=debug,embassy_net_esp_hosted=debug,cyw43=info,cyw43_pio=info,smoltcp=info"
 | 
					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"
 | 
					version = "0.1.0"
 | 
				
			||||||
license = "MIT OR Apache-2.0"
 | 
					license = "MIT OR Apache-2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[features]
 | 
				
			||||||
 | 
					rp2040 = ["embassy-rp/rp2040"]
 | 
				
			||||||
 | 
					rp235xa = ["embassy-rp/rp235xa"]
 | 
				
			||||||
 | 
					rp235xb = ["embassy-rp/rp235xb"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
teleprobe-meta = "1.1"
 | 
					teleprobe-meta = "1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
embassy-sync = { version = "0.6.2", path = "../../embassy-sync", features = ["defmt"] }
 | 
					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-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-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-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 = { 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"] }
 | 
					embassy-net-wiznet = { version = "0.2.0", path = "../../embassy-net-wiznet", features = ["defmt"] }
 | 
				
			||||||
@ -35,6 +40,30 @@ static_cell = "2"
 | 
				
			|||||||
portable-atomic = { version = "1.5", features = ["critical-section"] }
 | 
					portable-atomic = { version = "1.5", features = ["critical-section"] }
 | 
				
			||||||
rand = { version = "0.8.5", default-features = false }
 | 
					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]
 | 
					[profile.dev]
 | 
				
			||||||
debug = 2
 | 
					debug = 2
 | 
				
			||||||
debug-assertions = true
 | 
					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,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::*;
 | 
					use defmt::*;
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
@ -20,14 +23,19 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    let _wifi_off = Output::new(p.PIN_25, Level::High);
 | 
					    let _wifi_off = Output::new(p.PIN_25, Level::High);
 | 
				
			||||||
    let mut adc = Adc::new(p.ADC, Irqs, Config::default());
 | 
					    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.blocking_read(&mut p).unwrap() < 0b01_0000_0000);
 | 
				
			||||||
            defmt::assert!(adc.read(&mut p).await.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.blocking_read(&mut p).unwrap() > 0b11_0000_0000);
 | 
				
			||||||
            defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000);
 | 
					            defmt::assert!(adc.read(&mut p).await.unwrap() > 0b11_0000_0000);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -35,21 +43,21 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    // not bothering with async reads from now on
 | 
					    // 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);
 | 
					            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);
 | 
					            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);
 | 
					            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);
 | 
					            defmt::assert!(adc.blocking_read(&mut p).unwrap() > 0b11_0000_0000);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -57,15 +65,15 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
        // gp29 is connected to vsys through a 200k/100k divider,
 | 
					        // gp29 is connected to vsys through a 200k/100k divider,
 | 
				
			||||||
        // adding pulls should change the value
 | 
					        // adding pulls should change the value
 | 
				
			||||||
        let low = {
 | 
					        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()
 | 
					            adc.blocking_read(&mut p).unwrap()
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        let none = {
 | 
					        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()
 | 
					            adc.blocking_read(&mut p).unwrap()
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        let up = {
 | 
					        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()
 | 
					            adc.blocking_read(&mut p).unwrap()
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        defmt::assert!(low < none);
 | 
					        defmt::assert!(low < none);
 | 
				
			||||||
@ -89,28 +97,13 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
        let mut low = [0u16; 16];
 | 
					        let mut low = [0u16; 16];
 | 
				
			||||||
        let mut none = [0u8; 16];
 | 
					        let mut none = [0u8; 16];
 | 
				
			||||||
        let mut up = [Sample::default(); 16];
 | 
					        let mut up = [Sample::default(); 16];
 | 
				
			||||||
        adc.read_many(
 | 
					        adc.read_many(&mut Channel::new_pin(&mut d, Pull::Down), &mut low, 1, &mut p.DMA_CH0)
 | 
				
			||||||
            &mut Channel::new_pin(&mut p.PIN_29, Pull::Down),
 | 
					 | 
				
			||||||
            &mut low,
 | 
					 | 
				
			||||||
            1,
 | 
					 | 
				
			||||||
            &mut p.DMA_CH0,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
            .await
 | 
					            .await
 | 
				
			||||||
            .unwrap();
 | 
					            .unwrap();
 | 
				
			||||||
        adc.read_many(
 | 
					        adc.read_many(&mut Channel::new_pin(&mut d, Pull::None), &mut none, 1, &mut p.DMA_CH0)
 | 
				
			||||||
            &mut Channel::new_pin(&mut p.PIN_29, Pull::None),
 | 
					 | 
				
			||||||
            &mut none,
 | 
					 | 
				
			||||||
            1,
 | 
					 | 
				
			||||||
            &mut p.DMA_CH0,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
            .await
 | 
					            .await
 | 
				
			||||||
            .unwrap();
 | 
					            .unwrap();
 | 
				
			||||||
        adc.read_many_raw(
 | 
					        adc.read_many_raw(&mut Channel::new_pin(&mut d, Pull::Up), &mut up, 1, &mut p.DMA_CH0)
 | 
				
			||||||
            &mut Channel::new_pin(&mut p.PIN_29, Pull::Up),
 | 
					 | 
				
			||||||
            &mut up,
 | 
					 | 
				
			||||||
            1,
 | 
					 | 
				
			||||||
            &mut p.DMA_CH0,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
            .await;
 | 
					            .await;
 | 
				
			||||||
        defmt::assert!(low.iter().zip(none.iter()).all(|(l, n)| *l >> 4 < *n as u16));
 | 
					        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!(up.iter().all(|s| s.good()));
 | 
				
			||||||
@ -133,7 +126,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut multi = [0u16; 2];
 | 
					        let mut multi = [0u16; 2];
 | 
				
			||||||
        let mut channels = [
 | 
					        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),
 | 
					            Channel::new_temp_sensor(&mut p.ADC_TEMP_SENSOR),
 | 
				
			||||||
        ];
 | 
					        ];
 | 
				
			||||||
        adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0)
 | 
					        adc.read_many_multichannel(&mut channels, &mut multi, 1, &mut p.DMA_CH0)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::*;
 | 
					use defmt::*;
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					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);
 | 
					    let mut flash = embassy_rp::flash::Flash::<_, Async, { 2 * 1024 * 1024 }>::new(p.FLASH, p.DMA_CH0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Get JEDEC id
 | 
					    // Get JEDEC id
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
        let jedec = defmt::unwrap!(flash.blocking_jedec_id());
 | 
					        let jedec = defmt::unwrap!(flash.blocking_jedec_id());
 | 
				
			||||||
        info!("jedec id: 0x{:x}", jedec);
 | 
					        info!("jedec id: 0x{:x}", jedec);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Get unique id
 | 
					    // Get unique id
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
        let mut uid = [0; 8];
 | 
					        let mut uid = [0; 8];
 | 
				
			||||||
        defmt::unwrap!(flash.blocking_unique_id(&mut uid));
 | 
					        defmt::unwrap!(flash.blocking_unique_id(&mut uid));
 | 
				
			||||||
        info!("unique id: {:?}", uid);
 | 
					        info!("unique id: {:?}", uid);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let mut buf = [0u8; ERASE_SIZE];
 | 
					    let mut buf = [0u8; ERASE_SIZE];
 | 
				
			||||||
    defmt::unwrap!(flash.blocking_read(ADDR_OFFSET, &mut buf));
 | 
					    defmt::unwrap!(flash.blocking_read(ADDR_OFFSET, &mut buf));
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,15 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert, *};
 | 
					use defmt::{assert, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					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 _};
 | 
					use {defmt_rtt as _, panic_probe as _};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[embassy_executor::main]
 | 
					#[embassy_executor::main]
 | 
				
			||||||
@ -76,6 +81,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test input pulldown
 | 
					    // Test input pulldown
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let b = Input::new(&mut b, Pull::Down);
 | 
					        let b = Input::new(&mut b, Pull::Down);
 | 
				
			||||||
        delay();
 | 
					        delay();
 | 
				
			||||||
@ -104,6 +110,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // OUTPUT OPEN DRAIN
 | 
					    // OUTPUT OPEN DRAIN
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut b = OutputOpenDrain::new(&mut b, Level::High);
 | 
					        let mut b = OutputOpenDrain::new(&mut b, Level::High);
 | 
				
			||||||
        let mut a = Flex::new(&mut a);
 | 
					        let mut a = Flex::new(&mut a);
 | 
				
			||||||
@ -202,6 +209,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test input pulldown
 | 
					    // Test input pulldown
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut b = Flex::new(&mut b);
 | 
					        let mut b = Flex::new(&mut b);
 | 
				
			||||||
        b.set_as_input();
 | 
					        b.set_as_input();
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert, *};
 | 
					use defmt::{assert, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{info, unwrap};
 | 
					use defmt::{info, unwrap};
 | 
				
			||||||
use embassy_executor::Executor;
 | 
					use embassy_executor::Executor;
 | 
				
			||||||
@ -56,7 +59,7 @@ async fn core1_task(p: PIN_1) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    CHANNEL0.receive().await;
 | 
					    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();
 | 
					    let wait = pin.wait_for_rising_edge();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CHANNEL1.send(()).await;
 | 
					    CHANNEL1.send(()).await;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,23 +1,21 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					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_embedded_hal::SetConfig;
 | 
				
			||||||
use embassy_executor::{Executor, Spawner};
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
use embassy_rp::clocks::{PllConfig, XoscConfig};
 | 
					use embassy_rp::clocks::{PllConfig, XoscConfig};
 | 
				
			||||||
use embassy_rp::config::Config as rpConfig;
 | 
					use embassy_rp::config::Config as rpConfig;
 | 
				
			||||||
use embassy_rp::multicore::{spawn_core1, Stack};
 | 
					 | 
				
			||||||
use embassy_rp::peripherals::{I2C0, I2C1};
 | 
					use embassy_rp::peripherals::{I2C0, I2C1};
 | 
				
			||||||
use embassy_rp::{bind_interrupts, i2c, i2c_slave};
 | 
					use embassy_rp::{bind_interrupts, i2c, i2c_slave};
 | 
				
			||||||
use embedded_hal_1::i2c::Operation;
 | 
					use embedded_hal_1::i2c::Operation;
 | 
				
			||||||
use embedded_hal_async::i2c::I2c;
 | 
					use embedded_hal_async::i2c::I2c;
 | 
				
			||||||
use static_cell::StaticCell;
 | 
					 | 
				
			||||||
use {defmt_rtt as _, panic_probe as _, panic_probe as _, panic_probe as _};
 | 
					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;
 | 
					use crate::i2c::AbortReason;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bind_interrupts!(struct Irqs {
 | 
					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>) {
 | 
					async fn controller_task(con: &mut i2c::I2c<'static, I2C0, i2c::Async>) {
 | 
				
			||||||
    info!("Device start");
 | 
					    info!("Controller start");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let buf = [0xCA, 0x11];
 | 
					        let buf = [0xCA, 0x11];
 | 
				
			||||||
@ -180,7 +178,7 @@ async fn controller_task(con: &mut i2c::I2c<'static, I2C0, i2c::Async>) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[embassy_executor::main]
 | 
					    #[embassy_executor::main]
 | 
				
			||||||
    async fn main(_core0_spawner: Spawner) {
 | 
					    async fn main(spawner: Spawner) {
 | 
				
			||||||
        let mut config = rpConfig::default();
 | 
					        let mut config = rpConfig::default();
 | 
				
			||||||
        // Configure clk_sys to 48MHz to support 1kHz scl.
 | 
					        // Configure clk_sys to 48MHz to support 1kHz scl.
 | 
				
			||||||
        // In theory it can go lower, but we won't bother to test below 1kHz.
 | 
					        // 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;
 | 
					        config.addr = DEV_ADDR as u16;
 | 
				
			||||||
        let device = i2c_slave::I2cSlave::new(p.I2C1, d_sda, d_scl, Irqs, config);
 | 
					        let device = i2c_slave::I2cSlave::new(p.I2C1, d_sda, d_scl, Irqs, config);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        spawn_core1(
 | 
					        spawner.must_spawn(device_task(device));
 | 
				
			||||||
            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))));
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        let c_sda = p.PIN_21;
 | 
					        let c_sda = p.PIN_21;
 | 
				
			||||||
        let c_scl = p.PIN_20;
 | 
					        let c_scl = p.PIN_20;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{info, unwrap};
 | 
					use defmt::{info, unwrap};
 | 
				
			||||||
use embassy_executor::Executor;
 | 
					use embassy_executor::Executor;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::info;
 | 
					use defmt::info;
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::info;
 | 
					use defmt::info;
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +1,15 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					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 defmt::{assert, assert_eq, assert_ne, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					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_rp::pwm::{Config, InputMode, Pwm};
 | 
				
			||||||
use embassy_time::Timer;
 | 
					use embassy_time::Timer;
 | 
				
			||||||
use {defmt_rtt as _, panic_probe as _};
 | 
					use {defmt_rtt as _, panic_probe as _};
 | 
				
			||||||
@ -92,6 +97,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test level-gated
 | 
					    // Test level-gated
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut pin2 = Output::new(&mut p11, Level::Low);
 | 
					        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());
 | 
					        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;
 | 
					        Timer::after_millis(1).await;
 | 
				
			||||||
        pin2.set_low();
 | 
					        pin2.set_low();
 | 
				
			||||||
        let ctr = pwm.counter();
 | 
					        let ctr = pwm.counter();
 | 
				
			||||||
 | 
					        info!("ctr: {}", ctr);
 | 
				
			||||||
        assert!(ctr >= 1000);
 | 
					        assert!(ctr >= 1000);
 | 
				
			||||||
        Timer::after_millis(1).await;
 | 
					        Timer::after_millis(1).await;
 | 
				
			||||||
        assert_eq!(pwm.counter(), ctr);
 | 
					        assert_eq!(pwm.counter(), ctr);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test rising-gated
 | 
					    // Test rising-gated
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut pin2 = Output::new(&mut p11, Level::Low);
 | 
					        let mut pin2 = Output::new(&mut p11, Level::Low);
 | 
				
			||||||
        let pwm = Pwm::new_input(
 | 
					        let pwm = Pwm::new_input(
 | 
				
			||||||
@ -129,6 +137,7 @@ async fn main(_spawner: Spawner) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Test falling-gated
 | 
					    // Test falling-gated
 | 
				
			||||||
 | 
					    #[cfg(feature = "rp2040")]
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        let mut pin2 = Output::new(&mut p11, Level::High);
 | 
					        let mut pin2 = Output::new(&mut p11, Level::High);
 | 
				
			||||||
        let pwm = Pwm::new_input(
 | 
					        let pwm = Pwm::new_input(
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,10 @@
 | 
				
			|||||||
//!
 | 
					//!
 | 
				
			||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert, *};
 | 
					use defmt::{assert, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, panic, *};
 | 
					use defmt::{assert_eq, panic, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,9 @@
 | 
				
			|||||||
#![no_std]
 | 
					#![no_std]
 | 
				
			||||||
#![no_main]
 | 
					#![no_main]
 | 
				
			||||||
 | 
					#[cfg(feature = "rp2040")]
 | 
				
			||||||
teleprobe_meta::target!(b"rpi-pico");
 | 
					teleprobe_meta::target!(b"rpi-pico");
 | 
				
			||||||
 | 
					#[cfg(feature = "rp235xb")]
 | 
				
			||||||
 | 
					teleprobe_meta::target!(b"pimoroni-pico-plus-2");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use defmt::{assert_eq, *};
 | 
					use defmt::{assert_eq, *};
 | 
				
			||||||
use embassy_executor::Spawner;
 | 
					use embassy_executor::Spawner;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user