From fa343624e7fa9851ce530eca6a10561a44970855 Mon Sep 17 00:00:00 2001 From: Priec Date: Wed, 12 Nov 2025 23:37:32 +0100 Subject: [PATCH] tx stale nefunguje --- semestralka_1b_cpu/Cargo.toml | 46 ---------------- .../.cargo/config.toml | 0 .../.gitignore | 0 .../Cargo.lock | 0 semestralka_1b_rx/Cargo.toml | 45 ++++++++++++++++ .../LICENSE-APACHE | 0 .../LICENSE-MIT | 0 .../Makefile | 0 .../README.md | 0 .../src/bin/main.rs | 25 ++++++--- .../src/config.rs | 0 .../src/hw_uart_internal/driver.rs | 0 .../src/hw_uart_internal/mod.rs | 0 .../src/hw_uart_internal/usart2.rs | 0 .../src/hw_uart_pc/driver.rs | 0 .../src/hw_uart_pc/mod.rs | 0 .../src/hw_uart_pc/safety.rs | 0 .../src/hw_uart_pc/usart1.rs | 0 .../src/lib.rs | 0 .../src/software_uart/debug.rs | 0 .../src/software_uart/dma_timer.rs | 0 .../src/software_uart/gpio_dma_uart_rx.rs | 0 .../src/software_uart/gpio_dma_uart_tx.rs | 0 .../src/software_uart/mod.rs | 0 .../src/software_uart/uart_emulation.rs | 0 .../tests/uart_emulation.rs | 0 semestralka_1c/Cargo.toml | 46 ---------------- .../.cargo/config.toml | 0 .../.gitignore | 0 .../Cargo.lock | 16 ------ semestralka_1c_tx/Cargo.toml | 45 ++++++++++++++++ .../LICENSE-APACHE | 0 .../LICENSE-MIT | 0 .../Makefile | 0 .../README.md | 0 .../src/bin/main.rs | 52 ++++++++----------- .../src/config.rs | 4 +- .../src/hw_uart_internal/driver.rs | 0 .../src/hw_uart_internal/mod.rs | 0 .../src/hw_uart_internal/usart2.rs | 0 .../src/hw_uart_pc/driver.rs | 0 .../src/hw_uart_pc/mod.rs | 0 .../src/hw_uart_pc/safety.rs | 0 .../src/hw_uart_pc/usart1.rs | 0 .../src/lib.rs | 0 .../src/software_uart/debug.rs | 0 .../src/software_uart/dma_timer.rs | 0 .../src/software_uart/gpio_dma_uart_rx.rs | 0 .../src/software_uart/gpio_dma_uart_tx.rs | 4 +- .../src/software_uart/mod.rs | 0 .../src/software_uart/uart_emulation.rs | 0 .../tests/uart_emulation.rs | 0 52 files changed, 133 insertions(+), 150 deletions(-) delete mode 100644 semestralka_1b_cpu/Cargo.toml rename {semestralka_1b_cpu => semestralka_1b_rx}/.cargo/config.toml (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/.gitignore (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/Cargo.lock (100%) create mode 100644 semestralka_1b_rx/Cargo.toml rename {semestralka_1b_cpu => semestralka_1b_rx}/LICENSE-APACHE (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/LICENSE-MIT (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/Makefile (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/README.md (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/bin/main.rs (88%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/config.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_internal/driver.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_internal/mod.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_internal/usart2.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_pc/driver.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_pc/mod.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_pc/safety.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/hw_uart_pc/usart1.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/lib.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/debug.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/dma_timer.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/gpio_dma_uart_rx.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/gpio_dma_uart_tx.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/mod.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/src/software_uart/uart_emulation.rs (100%) rename {semestralka_1b_cpu => semestralka_1b_rx}/tests/uart_emulation.rs (100%) delete mode 100644 semestralka_1c/Cargo.toml rename {semestralka_1c => semestralka_1c_tx}/.cargo/config.toml (100%) rename {semestralka_1c => semestralka_1c_tx}/.gitignore (100%) rename {semestralka_1c => semestralka_1c_tx}/Cargo.lock (95%) create mode 100644 semestralka_1c_tx/Cargo.toml rename {semestralka_1c => semestralka_1c_tx}/LICENSE-APACHE (100%) rename {semestralka_1c => semestralka_1c_tx}/LICENSE-MIT (100%) rename {semestralka_1c => semestralka_1c_tx}/Makefile (100%) rename {semestralka_1c => semestralka_1c_tx}/README.md (100%) rename {semestralka_1c => semestralka_1c_tx}/src/bin/main.rs (76%) rename {semestralka_1c => semestralka_1c_tx}/src/config.rs (95%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_internal/driver.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_internal/mod.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_internal/usart2.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_pc/driver.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_pc/mod.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_pc/safety.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/hw_uart_pc/usart1.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/lib.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/debug.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/dma_timer.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/gpio_dma_uart_rx.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/gpio_dma_uart_tx.rs (95%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/mod.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/src/software_uart/uart_emulation.rs (100%) rename {semestralka_1c => semestralka_1c_tx}/tests/uart_emulation.rs (100%) diff --git a/semestralka_1b_cpu/Cargo.toml b/semestralka_1b_cpu/Cargo.toml deleted file mode 100644 index 8a6d4b1..0000000 --- a/semestralka_1b_cpu/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -[package] -authors = ["Priec "] -name = "dma_gpio" -edition = "2024" -version = "0.1.0" - - -[dependencies] -cortex-m = { version = "0.7.7", features = ["inline-asm", "critical-section-single-core"] } -cortex-m-rt = "0.7.5" -panic-halt = "1.0.0" - -embassy-executor = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["arch-cortex-m", "executor-thread"] } -embassy-futures = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-sync = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-time = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["tick-hz-32_768"] } -embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-usb = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-stm32 = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["unstable-pac", "stm32u575zi", "time-driver-tim2", "memory-x", "defmt"] } - -embedded-hal = "1.0.0" -embedded-graphics = "0.8.1" -heapless = { version = "0.9.1", default-features = false } -micromath = "2.1.0" -tinybmp = "0.6.0" -panic-probe = { version = "1.0.0", features = ["defmt"] } -defmt-rtt = "1.1.0" -defmt = "1.0.1" -static_cell = "2.1.1" -embedded-io = "0.6.1" -embedded-io-async = "0.6.1" - -[dev-dependencies] -defmt-test = "0.4.0" - -[[test]] -name = "uart_emulation" -harness = false - -[lib] -test = false - -[[bin]] -name = "main" -path = "src/bin/main.rs" -test = false diff --git a/semestralka_1b_cpu/.cargo/config.toml b/semestralka_1b_rx/.cargo/config.toml similarity index 100% rename from semestralka_1b_cpu/.cargo/config.toml rename to semestralka_1b_rx/.cargo/config.toml diff --git a/semestralka_1b_cpu/.gitignore b/semestralka_1b_rx/.gitignore similarity index 100% rename from semestralka_1b_cpu/.gitignore rename to semestralka_1b_rx/.gitignore diff --git a/semestralka_1b_cpu/Cargo.lock b/semestralka_1b_rx/Cargo.lock similarity index 100% rename from semestralka_1b_cpu/Cargo.lock rename to semestralka_1b_rx/Cargo.lock diff --git a/semestralka_1b_rx/Cargo.toml b/semestralka_1b_rx/Cargo.toml new file mode 100644 index 0000000..46083aa --- /dev/null +++ b/semestralka_1b_rx/Cargo.toml @@ -0,0 +1,45 @@ +[package] +authors = ["Priec "] +name = "dma_gpio" +edition = "2024" +version = "0.1.0" + + +[dependencies] +cortex-m = { version = "0.7.7", features = ["inline-asm", "critical-section-single-core"] } +cortex-m-rt = "0.7.5" +panic-halt = "1.0.0" +embassy-executor = { path = "/home/filip/programs/embassy/embassy-executor", features = ["arch-cortex-m", "executor-thread"] } +embassy-futures = { path = "/home/filip/programs/embassy/embassy-futures" } +embassy-sync = { path = "/home/filip/programs/embassy/embassy-sync" } +embassy-time = { path = "/home/filip/programs/embassy/embassy-time", features = ["tick-hz-32_768"] } +embassy-hal-internal = { path = "/home/filip/programs/embassy/embassy-hal-internal" } +embassy-usb = { path = "/home/filip/programs/embassy/embassy-usb" } +embassy-stm32 = { path = "/home/filip/programs/embassy/embassy-stm32", features = ["unstable-pac", "stm32u575zi", "time-driver-tim2", "memory-x", "defmt"] } + +embedded-hal = "1.0.0" +embedded-graphics = "0.8.1" +heapless = { version = "0.9.1", default-features = false } +micromath = "2.1.0" +tinybmp = "0.6.0" +panic-probe = { version = "1.0.0", features = ["defmt"] } +defmt-rtt = "1.1.0" +defmt = "1.0.1" +static_cell = "2.1.1" +embedded-io = "0.6.1" +embedded-io-async = "0.6.1" + +[dev-dependencies] +defmt-test = "0.4.0" + +[[test]] +name = "uart_emulation" +harness = false + +[lib] +test = false + +[[bin]] +name = "main" +path = "src/bin/main.rs" +test = false diff --git a/semestralka_1b_cpu/LICENSE-APACHE b/semestralka_1b_rx/LICENSE-APACHE similarity index 100% rename from semestralka_1b_cpu/LICENSE-APACHE rename to semestralka_1b_rx/LICENSE-APACHE diff --git a/semestralka_1b_cpu/LICENSE-MIT b/semestralka_1b_rx/LICENSE-MIT similarity index 100% rename from semestralka_1b_cpu/LICENSE-MIT rename to semestralka_1b_rx/LICENSE-MIT diff --git a/semestralka_1b_cpu/Makefile b/semestralka_1b_rx/Makefile similarity index 100% rename from semestralka_1b_cpu/Makefile rename to semestralka_1b_rx/Makefile diff --git a/semestralka_1b_cpu/README.md b/semestralka_1b_rx/README.md similarity index 100% rename from semestralka_1b_cpu/README.md rename to semestralka_1b_rx/README.md diff --git a/semestralka_1b_cpu/src/bin/main.rs b/semestralka_1b_rx/src/bin/main.rs similarity index 88% rename from semestralka_1b_cpu/src/bin/main.rs rename to semestralka_1b_rx/src/bin/main.rs index ea270ae..ac4421e 100644 --- a/semestralka_1b_cpu/src/bin/main.rs +++ b/semestralka_1b_rx/src/bin/main.rs @@ -27,6 +27,7 @@ use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, pipe::Pipe}; use dma_gpio::hw_uart_internal::usart2; use dma_gpio::hw_uart_internal::driver::uart_task as uart_task_internal; use dma_gpio::config::{PIPE_INT_TX, PIPE_INT_RX}; +use embassy_time::{Duration, Timer}; use {defmt_rtt as _, panic_probe as _}; bind_interrupts!(struct Irqs { @@ -79,12 +80,10 @@ async fn main(spawner: Spawner) { RX_BUF2.init([0; 256]), Irqs2, cfg2, - ) - .unwrap(); + ).unwrap(); let _ = usart2::setup_and_spawn(BAUD); - spawner - .spawn(uart_task_internal(uart2, &PIPE_INT_TX, &PIPE_INT_RX).unwrap()); + spawner.spawn(uart_task_internal(uart2, &PIPE_INT_TX, &PIPE_INT_RX).unwrap()); info!("USART2 ready"); // END OF INTERNAL HARDWARE UART (USART2) @@ -95,7 +94,8 @@ async fn main(spawner: Spawner) { // END OF USART1 <-> USART2 bridge // SOFTWARE UART - let _rx = Input::new(p.PC3, Pull::Up); + // let _rx = Input::new(p.PD6, Pull::Up); + let mut rx_pin = Input::new(p.PD6, Pull::Up); let _tx = Output::new(p.PB0, Level::High, Speed::VeryHigh); init_tim6_for_uart(p.TIM6, BAUD, TX_OVERSAMPLE); init_tim7_for_uart(p.TIM7, BAUD, RX_OVERSAMPLE); @@ -105,8 +105,8 @@ async fn main(spawner: Spawner) { let sw_rx_ring: &mut [u8; RX_RING_BYTES] = SW_RX_RING.init([0; RX_RING_BYTES]); // let sw_tx_ring: &mut [u32; TX_RING_BYTES] = SW_TX_RING.init([0; TX_RING_BYTES]); - let gpioc_idr = embassy_stm32::pac::GPIOC.idr().as_ptr() as *mut u8; // POZOR C REGISTER - spawner.spawn(rx_dma_task(p.GPDMA1_CH1, gpioc_idr, sw_rx_ring, &PIPE_SW_RX).unwrap()); + let gpio_idr = embassy_stm32::pac::GPIOD.idr().as_ptr() as *mut u8; // POZOR C REGISTER + spawner.spawn(rx_dma_task(p.GPDMA1_CH1, gpio_idr, sw_rx_ring, &PIPE_SW_RX).unwrap()); // Create and start the TX DMA ring in main. let bsrr_ptr = embassy_stm32::pac::GPIOB.bsrr().as_ptr() as *mut u32; // POZOR B REGISTER @@ -118,6 +118,7 @@ async fn main(spawner: Spawner) { let mut last_yield = Instant::now(); let mut buf = [0u8; 32]; + let mut last_state: u8 = 0; loop { info!("tick start"); // Timer::after(Duration::from_millis(100)).await; @@ -131,6 +132,16 @@ async fn main(spawner: Spawner) { // } // yield_now().await; + let bit = rx_pin.is_high(); + if bit as u8 != last_state { + info!( + "SW RX -> PD6 changed, new state = {}", + if bit { "HIGH" } else { "LOW" } + ); + last_state = bit as u8; + } + Timer::after(Duration::from_millis(1)).await; + let n2 = PIPE_SW_RX.read(&mut buf).await; if n2 > 0 { info!("SW UART RX pipe: {:a}", &buf[..n2]); diff --git a/semestralka_1b_cpu/src/config.rs b/semestralka_1b_rx/src/config.rs similarity index 100% rename from semestralka_1b_cpu/src/config.rs rename to semestralka_1b_rx/src/config.rs diff --git a/semestralka_1b_cpu/src/hw_uart_internal/driver.rs b/semestralka_1b_rx/src/hw_uart_internal/driver.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_internal/driver.rs rename to semestralka_1b_rx/src/hw_uart_internal/driver.rs diff --git a/semestralka_1b_cpu/src/hw_uart_internal/mod.rs b/semestralka_1b_rx/src/hw_uart_internal/mod.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_internal/mod.rs rename to semestralka_1b_rx/src/hw_uart_internal/mod.rs diff --git a/semestralka_1b_cpu/src/hw_uart_internal/usart2.rs b/semestralka_1b_rx/src/hw_uart_internal/usart2.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_internal/usart2.rs rename to semestralka_1b_rx/src/hw_uart_internal/usart2.rs diff --git a/semestralka_1b_cpu/src/hw_uart_pc/driver.rs b/semestralka_1b_rx/src/hw_uart_pc/driver.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_pc/driver.rs rename to semestralka_1b_rx/src/hw_uart_pc/driver.rs diff --git a/semestralka_1b_cpu/src/hw_uart_pc/mod.rs b/semestralka_1b_rx/src/hw_uart_pc/mod.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_pc/mod.rs rename to semestralka_1b_rx/src/hw_uart_pc/mod.rs diff --git a/semestralka_1b_cpu/src/hw_uart_pc/safety.rs b/semestralka_1b_rx/src/hw_uart_pc/safety.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_pc/safety.rs rename to semestralka_1b_rx/src/hw_uart_pc/safety.rs diff --git a/semestralka_1b_cpu/src/hw_uart_pc/usart1.rs b/semestralka_1b_rx/src/hw_uart_pc/usart1.rs similarity index 100% rename from semestralka_1b_cpu/src/hw_uart_pc/usart1.rs rename to semestralka_1b_rx/src/hw_uart_pc/usart1.rs diff --git a/semestralka_1b_cpu/src/lib.rs b/semestralka_1b_rx/src/lib.rs similarity index 100% rename from semestralka_1b_cpu/src/lib.rs rename to semestralka_1b_rx/src/lib.rs diff --git a/semestralka_1b_cpu/src/software_uart/debug.rs b/semestralka_1b_rx/src/software_uart/debug.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/debug.rs rename to semestralka_1b_rx/src/software_uart/debug.rs diff --git a/semestralka_1b_cpu/src/software_uart/dma_timer.rs b/semestralka_1b_rx/src/software_uart/dma_timer.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/dma_timer.rs rename to semestralka_1b_rx/src/software_uart/dma_timer.rs diff --git a/semestralka_1b_cpu/src/software_uart/gpio_dma_uart_rx.rs b/semestralka_1b_rx/src/software_uart/gpio_dma_uart_rx.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/gpio_dma_uart_rx.rs rename to semestralka_1b_rx/src/software_uart/gpio_dma_uart_rx.rs diff --git a/semestralka_1b_cpu/src/software_uart/gpio_dma_uart_tx.rs b/semestralka_1b_rx/src/software_uart/gpio_dma_uart_tx.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/gpio_dma_uart_tx.rs rename to semestralka_1b_rx/src/software_uart/gpio_dma_uart_tx.rs diff --git a/semestralka_1b_cpu/src/software_uart/mod.rs b/semestralka_1b_rx/src/software_uart/mod.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/mod.rs rename to semestralka_1b_rx/src/software_uart/mod.rs diff --git a/semestralka_1b_cpu/src/software_uart/uart_emulation.rs b/semestralka_1b_rx/src/software_uart/uart_emulation.rs similarity index 100% rename from semestralka_1b_cpu/src/software_uart/uart_emulation.rs rename to semestralka_1b_rx/src/software_uart/uart_emulation.rs diff --git a/semestralka_1b_cpu/tests/uart_emulation.rs b/semestralka_1b_rx/tests/uart_emulation.rs similarity index 100% rename from semestralka_1b_cpu/tests/uart_emulation.rs rename to semestralka_1b_rx/tests/uart_emulation.rs diff --git a/semestralka_1c/Cargo.toml b/semestralka_1c/Cargo.toml deleted file mode 100644 index 8a6d4b1..0000000 --- a/semestralka_1c/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -[package] -authors = ["Priec "] -name = "dma_gpio" -edition = "2024" -version = "0.1.0" - - -[dependencies] -cortex-m = { version = "0.7.7", features = ["inline-asm", "critical-section-single-core"] } -cortex-m-rt = "0.7.5" -panic-halt = "1.0.0" - -embassy-executor = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["arch-cortex-m", "executor-thread"] } -embassy-futures = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-sync = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-time = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["tick-hz-32_768"] } -embassy-hal-internal = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-usb = { git = "https://github.com/embassy-rs/embassy.git", branch = "main" } -embassy-stm32 = { git = "https://github.com/embassy-rs/embassy.git", branch = "main", features = ["unstable-pac", "stm32u575zi", "time-driver-tim2", "memory-x", "defmt"] } - -embedded-hal = "1.0.0" -embedded-graphics = "0.8.1" -heapless = { version = "0.9.1", default-features = false } -micromath = "2.1.0" -tinybmp = "0.6.0" -panic-probe = { version = "1.0.0", features = ["defmt"] } -defmt-rtt = "1.1.0" -defmt = "1.0.1" -static_cell = "2.1.1" -embedded-io = "0.6.1" -embedded-io-async = "0.6.1" - -[dev-dependencies] -defmt-test = "0.4.0" - -[[test]] -name = "uart_emulation" -harness = false - -[lib] -test = false - -[[bin]] -name = "main" -path = "src/bin/main.rs" -test = false diff --git a/semestralka_1c/.cargo/config.toml b/semestralka_1c_tx/.cargo/config.toml similarity index 100% rename from semestralka_1c/.cargo/config.toml rename to semestralka_1c_tx/.cargo/config.toml diff --git a/semestralka_1c/.gitignore b/semestralka_1c_tx/.gitignore similarity index 100% rename from semestralka_1c/.gitignore rename to semestralka_1c_tx/.gitignore diff --git a/semestralka_1c/Cargo.lock b/semestralka_1c_tx/Cargo.lock similarity index 95% rename from semestralka_1c/Cargo.lock rename to semestralka_1c_tx/Cargo.lock index 0556be2..b12cb20 100644 --- a/semestralka_1c/Cargo.lock +++ b/semestralka_1c_tx/Cargo.lock @@ -330,7 +330,6 @@ dependencies = [ [[package]] name = "embassy-embedded-hal" version = "0.5.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "defmt 1.0.1", "embassy-futures", @@ -348,7 +347,6 @@ dependencies = [ [[package]] name = "embassy-executor" version = "0.9.1" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "cordyceps", "cortex-m", @@ -361,7 +359,6 @@ dependencies = [ [[package]] name = "embassy-executor-macros" version = "0.7.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "darling", "proc-macro2", @@ -372,17 +369,14 @@ dependencies = [ [[package]] name = "embassy-executor-timer-queue" version = "0.1.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" [[package]] name = "embassy-futures" version = "0.1.2" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" [[package]] name = "embassy-hal-internal" version = "0.3.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "cortex-m", "critical-section", @@ -393,7 +387,6 @@ dependencies = [ [[package]] name = "embassy-net-driver" version = "0.2.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "defmt 1.0.1", ] @@ -401,7 +394,6 @@ dependencies = [ [[package]] name = "embassy-net-driver-channel" version = "0.3.2" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "embassy-futures", "embassy-net-driver", @@ -411,7 +403,6 @@ dependencies = [ [[package]] name = "embassy-stm32" version = "0.4.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "aligned", "bit_field", @@ -460,7 +451,6 @@ dependencies = [ [[package]] name = "embassy-sync" version = "0.7.2" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "cfg-if", "critical-section", @@ -474,7 +464,6 @@ dependencies = [ [[package]] name = "embassy-time" version = "0.5.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "cfg-if", "critical-section", @@ -490,7 +479,6 @@ dependencies = [ [[package]] name = "embassy-time-driver" version = "0.2.1" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "document-features", ] @@ -498,7 +486,6 @@ dependencies = [ [[package]] name = "embassy-time-queue-utils" version = "0.3.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "embassy-executor-timer-queue", "heapless 0.8.0", @@ -507,7 +494,6 @@ dependencies = [ [[package]] name = "embassy-usb" version = "0.5.1" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "embassy-futures", "embassy-net-driver-channel", @@ -522,7 +508,6 @@ dependencies = [ [[package]] name = "embassy-usb-driver" version = "0.2.0" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "defmt 1.0.1", "embedded-io-async", @@ -531,7 +516,6 @@ dependencies = [ [[package]] name = "embassy-usb-synopsys-otg" version = "0.3.1" -source = "git+https://github.com/embassy-rs/embassy.git?branch=main#9b1add3d83e98c6c9ae9230bf35cd89bba530a20" dependencies = [ "critical-section", "defmt 1.0.1", diff --git a/semestralka_1c_tx/Cargo.toml b/semestralka_1c_tx/Cargo.toml new file mode 100644 index 0000000..46083aa --- /dev/null +++ b/semestralka_1c_tx/Cargo.toml @@ -0,0 +1,45 @@ +[package] +authors = ["Priec "] +name = "dma_gpio" +edition = "2024" +version = "0.1.0" + + +[dependencies] +cortex-m = { version = "0.7.7", features = ["inline-asm", "critical-section-single-core"] } +cortex-m-rt = "0.7.5" +panic-halt = "1.0.0" +embassy-executor = { path = "/home/filip/programs/embassy/embassy-executor", features = ["arch-cortex-m", "executor-thread"] } +embassy-futures = { path = "/home/filip/programs/embassy/embassy-futures" } +embassy-sync = { path = "/home/filip/programs/embassy/embassy-sync" } +embassy-time = { path = "/home/filip/programs/embassy/embassy-time", features = ["tick-hz-32_768"] } +embassy-hal-internal = { path = "/home/filip/programs/embassy/embassy-hal-internal" } +embassy-usb = { path = "/home/filip/programs/embassy/embassy-usb" } +embassy-stm32 = { path = "/home/filip/programs/embassy/embassy-stm32", features = ["unstable-pac", "stm32u575zi", "time-driver-tim2", "memory-x", "defmt"] } + +embedded-hal = "1.0.0" +embedded-graphics = "0.8.1" +heapless = { version = "0.9.1", default-features = false } +micromath = "2.1.0" +tinybmp = "0.6.0" +panic-probe = { version = "1.0.0", features = ["defmt"] } +defmt-rtt = "1.1.0" +defmt = "1.0.1" +static_cell = "2.1.1" +embedded-io = "0.6.1" +embedded-io-async = "0.6.1" + +[dev-dependencies] +defmt-test = "0.4.0" + +[[test]] +name = "uart_emulation" +harness = false + +[lib] +test = false + +[[bin]] +name = "main" +path = "src/bin/main.rs" +test = false diff --git a/semestralka_1c/LICENSE-APACHE b/semestralka_1c_tx/LICENSE-APACHE similarity index 100% rename from semestralka_1c/LICENSE-APACHE rename to semestralka_1c_tx/LICENSE-APACHE diff --git a/semestralka_1c/LICENSE-MIT b/semestralka_1c_tx/LICENSE-MIT similarity index 100% rename from semestralka_1c/LICENSE-MIT rename to semestralka_1c_tx/LICENSE-MIT diff --git a/semestralka_1c/Makefile b/semestralka_1c_tx/Makefile similarity index 100% rename from semestralka_1c/Makefile rename to semestralka_1c_tx/Makefile diff --git a/semestralka_1c/README.md b/semestralka_1c_tx/README.md similarity index 100% rename from semestralka_1c/README.md rename to semestralka_1c_tx/README.md diff --git a/semestralka_1c/src/bin/main.rs b/semestralka_1c_tx/src/bin/main.rs similarity index 76% rename from semestralka_1c/src/bin/main.rs rename to semestralka_1c_tx/src/bin/main.rs index ea270ae..7c12cc6 100644 --- a/semestralka_1c/src/bin/main.rs +++ b/semestralka_1c_tx/src/bin/main.rs @@ -4,7 +4,7 @@ use defmt::*; use embassy_executor::Spawner; -use embassy_time::Instant; +use embassy_time::{Instant, Timer, Duration}; use embassy_stm32::dma::Request; use embassy_stm32::gpio::{Input, Output, Level, Pull, Speed}; use dma_gpio::software_uart::{ @@ -73,18 +73,16 @@ async fn main(spawner: Spawner) { let uart2 = BufferedUart::new( p.USART2, - p.PA3, // RX + p.PD6, // RX p.PA2, // TX TX_BUF2.init([0; 256]), RX_BUF2.init([0; 256]), Irqs2, cfg2, - ) - .unwrap(); + ).unwrap(); let _ = usart2::setup_and_spawn(BAUD); - spawner - .spawn(uart_task_internal(uart2, &PIPE_INT_TX, &PIPE_INT_RX).unwrap()); + spawner.spawn(uart_task_internal(uart2, &PIPE_INT_TX, &PIPE_INT_RX).unwrap()); info!("USART2 ready"); // END OF INTERNAL HARDWARE UART (USART2) @@ -95,53 +93,45 @@ async fn main(spawner: Spawner) { // END OF USART1 <-> USART2 bridge // SOFTWARE UART - let _rx = Input::new(p.PC3, Pull::Up); - let _tx = Output::new(p.PB0, Level::High, Speed::VeryHigh); + let tx = Output::new(p.PB0, Level::High, Speed::VeryHigh); init_tim6_for_uart(p.TIM6, BAUD, TX_OVERSAMPLE); - init_tim7_for_uart(p.TIM7, BAUD, RX_OVERSAMPLE); dump_tim6_regs(); // Safe one-time init from StaticCell - let sw_rx_ring: &mut [u8; RX_RING_BYTES] = SW_RX_RING.init([0; RX_RING_BYTES]); - // let sw_tx_ring: &mut [u32; TX_RING_BYTES] = SW_TX_RING.init([0; TX_RING_BYTES]); + let sw_tx_ring: &mut [u32; TX_RING_BYTES] = SW_TX_RING.init([0; TX_RING_BYTES]); - let gpioc_idr = embassy_stm32::pac::GPIOC.idr().as_ptr() as *mut u8; // POZOR C REGISTER - spawner.spawn(rx_dma_task(p.GPDMA1_CH1, gpioc_idr, sw_rx_ring, &PIPE_SW_RX).unwrap()); - - // Create and start the TX DMA ring in main. let bsrr_ptr = embassy_stm32::pac::GPIOB.bsrr().as_ptr() as *mut u32; // POZOR B REGISTER // let odr_ptr = embassy_stm32::pac::GPIOA.odr().as_ptr() as *mut u32; // NEEDS DECODE CHANGE - // spawner.spawn(tx_dma_task(p.GPDMA1_CH0, bsrr_ptr, sw_tx_ring, &PIPE_SW_TX).unwrap()); + spawner.spawn(tx_dma_task(p.GPDMA1_CH0, bsrr_ptr, sw_tx_ring, &PIPE_SW_TX).unwrap()); // EDN OF SOFTWARE UART let mut last_yield = Instant::now(); let mut buf = [0u8; 32]; + let mut counter: u32 = 0; loop { info!("tick start"); // Timer::after(Duration::from_millis(100)).await; // info!("tick end"); - // let n1 = PIPE_HW_RX.read(&mut buf).await; - // if n1 > 0 { - // info!("PC received: {:a}", &buf[..n1]); - // let _ = PIPE_SW_TX.write(&buf[..n1]).await; - // info!("SW UART TX sent echo: {:a}", &buf[..n1]); - // } - // yield_now().await; + counter += 1; + let msg = if counter % 2 == 0 { + b"AAAAA\n" + } else { + b"Hello\n" + }; + PIPE_SW_TX.write(msg).await; + info!("Sent: {:a}", msg); - let n2 = PIPE_SW_RX.read(&mut buf).await; + Timer::after(Duration::from_secs(3)).await; + // Also read any incoming data from SW RX pipe + let n2 = PIPE_INT_RX.read(&mut buf).await; if n2 > 0 { - info!("SW UART RX pipe: {:a}", &buf[..n2]); + info!("HW INT UART RX pipe: {:a}", &buf[..n2]); } + yield_now().await; - - // if Instant::now().duration_since(last_yield) >= yield_period { - // yield_now().await; - // last_yield = Instant::now(); - // } - } } diff --git a/semestralka_1c/src/config.rs b/semestralka_1c_tx/src/config.rs similarity index 95% rename from semestralka_1c/src/config.rs rename to semestralka_1c_tx/src/config.rs index e2c6377..2d88a77 100644 --- a/semestralka_1c/src/config.rs +++ b/semestralka_1c_tx/src/config.rs @@ -3,13 +3,13 @@ use crate::software_uart::uart_emulation::{Parity, StopBits, UartConfig}; use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; use embassy_sync::pipe::Pipe; -pub const BAUD: u32 = 9_600; +pub const BAUD: u32 = 115_200; // pub const TX_PIN_BIT: u8 = 2; // PA2 // pub const RX_PIN_BIT: u8 = 3; // PA3 pub const TX_PIN_BIT: u8 = 0; // PB2 pub const RX_PIN_BIT: u8 = 3; // PC3 pub const TX_OVERSAMPLE: u16 = 1; -pub const RX_OVERSAMPLE: u16 = 16; +pub const RX_OVERSAMPLE: u16 = 13; pub const RX_RING_BYTES: usize = 4096; pub const TX_RING_BYTES: usize = 4096; diff --git a/semestralka_1c/src/hw_uart_internal/driver.rs b/semestralka_1c_tx/src/hw_uart_internal/driver.rs similarity index 100% rename from semestralka_1c/src/hw_uart_internal/driver.rs rename to semestralka_1c_tx/src/hw_uart_internal/driver.rs diff --git a/semestralka_1c/src/hw_uart_internal/mod.rs b/semestralka_1c_tx/src/hw_uart_internal/mod.rs similarity index 100% rename from semestralka_1c/src/hw_uart_internal/mod.rs rename to semestralka_1c_tx/src/hw_uart_internal/mod.rs diff --git a/semestralka_1c/src/hw_uart_internal/usart2.rs b/semestralka_1c_tx/src/hw_uart_internal/usart2.rs similarity index 100% rename from semestralka_1c/src/hw_uart_internal/usart2.rs rename to semestralka_1c_tx/src/hw_uart_internal/usart2.rs diff --git a/semestralka_1c/src/hw_uart_pc/driver.rs b/semestralka_1c_tx/src/hw_uart_pc/driver.rs similarity index 100% rename from semestralka_1c/src/hw_uart_pc/driver.rs rename to semestralka_1c_tx/src/hw_uart_pc/driver.rs diff --git a/semestralka_1c/src/hw_uart_pc/mod.rs b/semestralka_1c_tx/src/hw_uart_pc/mod.rs similarity index 100% rename from semestralka_1c/src/hw_uart_pc/mod.rs rename to semestralka_1c_tx/src/hw_uart_pc/mod.rs diff --git a/semestralka_1c/src/hw_uart_pc/safety.rs b/semestralka_1c_tx/src/hw_uart_pc/safety.rs similarity index 100% rename from semestralka_1c/src/hw_uart_pc/safety.rs rename to semestralka_1c_tx/src/hw_uart_pc/safety.rs diff --git a/semestralka_1c/src/hw_uart_pc/usart1.rs b/semestralka_1c_tx/src/hw_uart_pc/usart1.rs similarity index 100% rename from semestralka_1c/src/hw_uart_pc/usart1.rs rename to semestralka_1c_tx/src/hw_uart_pc/usart1.rs diff --git a/semestralka_1c/src/lib.rs b/semestralka_1c_tx/src/lib.rs similarity index 100% rename from semestralka_1c/src/lib.rs rename to semestralka_1c_tx/src/lib.rs diff --git a/semestralka_1c/src/software_uart/debug.rs b/semestralka_1c_tx/src/software_uart/debug.rs similarity index 100% rename from semestralka_1c/src/software_uart/debug.rs rename to semestralka_1c_tx/src/software_uart/debug.rs diff --git a/semestralka_1c/src/software_uart/dma_timer.rs b/semestralka_1c_tx/src/software_uart/dma_timer.rs similarity index 100% rename from semestralka_1c/src/software_uart/dma_timer.rs rename to semestralka_1c_tx/src/software_uart/dma_timer.rs diff --git a/semestralka_1c/src/software_uart/gpio_dma_uart_rx.rs b/semestralka_1c_tx/src/software_uart/gpio_dma_uart_rx.rs similarity index 100% rename from semestralka_1c/src/software_uart/gpio_dma_uart_rx.rs rename to semestralka_1c_tx/src/software_uart/gpio_dma_uart_rx.rs diff --git a/semestralka_1c/src/software_uart/gpio_dma_uart_tx.rs b/semestralka_1c_tx/src/software_uart/gpio_dma_uart_tx.rs similarity index 95% rename from semestralka_1c/src/software_uart/gpio_dma_uart_tx.rs rename to semestralka_1c_tx/src/software_uart/gpio_dma_uart_tx.rs index d995156..69a01dc 100644 --- a/semestralka_1c/src/software_uart/gpio_dma_uart_tx.rs +++ b/semestralka_1c_tx/src/software_uart/gpio_dma_uart_tx.rs @@ -44,7 +44,7 @@ pub async fn tx_dma_task( ch: Peri<'static, GPDMA1_CH0>, register: *mut u32, // Either odr or bsrr tx_ring_mem: &'static mut [u32], - pipe_rx: &'static Pipe, + pipe_tx: &'static Pipe, ) { let mut tx_opts = TransferOptions::default(); tx_opts.half_transfer_ir = true; @@ -68,7 +68,7 @@ pub async fn tx_dma_task( let mut rx_buf = [0u8; 256]; loop { - let n = pipe_rx.read(&mut rx_buf).await; + let n = pipe_tx.read(&mut rx_buf).await; if n == 0 { yield_now().await; continue; diff --git a/semestralka_1c/src/software_uart/mod.rs b/semestralka_1c_tx/src/software_uart/mod.rs similarity index 100% rename from semestralka_1c/src/software_uart/mod.rs rename to semestralka_1c_tx/src/software_uart/mod.rs diff --git a/semestralka_1c/src/software_uart/uart_emulation.rs b/semestralka_1c_tx/src/software_uart/uart_emulation.rs similarity index 100% rename from semestralka_1c/src/software_uart/uart_emulation.rs rename to semestralka_1c_tx/src/software_uart/uart_emulation.rs diff --git a/semestralka_1c/tests/uart_emulation.rs b/semestralka_1c_tx/tests/uart_emulation.rs similarity index 100% rename from semestralka_1c/tests/uart_emulation.rs rename to semestralka_1c_tx/tests/uart_emulation.rs