Hi, out of sudden madness and possibly explained by too much beer I have tried my hand on implementing overclocking in embassy-rp for the rp2040. After shouting at an AI for a long time and reading through the datasheet and trying to make sense of the official sdk, I can now set frequency and measure the expected speed increase. So far, so good. The ongoing issue I have is, that all attempts i made setting the core voltage to anything else than 1.1V (and one is supposed to run the rp2040 at 1.15V when at 200Mhz), freezes the chip, probe-rs looses connection and i need to flash_nuke the chip before i can use it again. This is on initialization.... any ideas what i can do to try and debug this? Or better, has anybody successfully changed the core voltage before and I could copypaste? I am pretty sure I am missing some crucial step somewhere, but without seeing how far i get, hard to tell what exactly. My lst hope was that if i do not touch brownout detection it might work, but no... the offending code - i think - is: ```Rust #[cfg(feature = "rp2040")] if let Some(voltage) = config.voltage_scale { let vreg = pac::VREG_AND_CHIP_RESET; let current_vsel = vreg.vreg().read().vsel(); let target_vsel = voltage as u8; if target_vsel != current_vsel { // IMPORTANT: Set voltage first, THEN configure BOD // This is a key change to ensure voltage stabilizes before BOD is set vreg.vreg().write(|w| w.set_vsel(target_vsel)); // For higher voltage settings (overclocking), we need a longer stabilization time // Default to 1000 µs (1ms) like the SDK, but allow user override let settling_time_us = config.voltage_stabilization_delay_us.unwrap_or_else(|| { match voltage { VoltageScale::V1_15 => 1000, // 1ms for 1.15V (matches SDK default) VoltageScale::V1_20 | VoltageScale::V1_25 | VoltageScale::V1_30 => 2000, // 2ms for higher voltages _ => 500, // 500 µs for standard voltages } }); // We need a clock that's guaranteed to be running at this point // Use ROSC which should be configured by now let rosc_freq_rough = 6_000_000; // Rough ROSC frequency estimate let cycles_per_us = rosc_freq_rough / 1_000_000; let delay_cycles = settling_time_us * cycles_per_us; // Wait for voltage to stabilize cortex_m::asm::delay(delay_cycles); // Only NOW set the BOD level after voltage has stabilized vreg.bod().write(|w| w.set_vsel(voltage.recommended_bod())); } } ```