DelayUs should not be implemented with thread::sleep
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- linux, rust
Línea de trabajo
Comienza con la implementación de Delay y su punto de entrada DelayUs::delay_us; después, reproduce el ejemplo de Rust proporcionado en Linux para medir thread::sleep. Compara el tiempo observado con la precisión de microsegundos solicitada y documenta un enfoque concreto y probado; se considera terminado cuando la implementación y la recomendación abordan la discrepancia demostrada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I believe thread::sleep cannot provide microsecond precision on linux.
Failing example:
extern crate embedded_hal;
extern crate linux_embedded_hal as hal;
use embedded_hal::blocking::delay::DelayUs;
fn main() {
let us = 10u8;
let t = ::std::time::SystemTime::now();
let mut delay = hal::Delay{};
delay.delay_us(us);
println!("Expecting {}us, got {}us", us, t.elapsed().unwrap().subsec_nanos() / 1000);
}
Prints
Running `target/release/test_hal`
Expecting 10us, got 84us
What is the recommended way to get this level of precision?
As an example this very bad loop works:
pub fn delay_us(us: u32) {
let target = Instant::now() + Duration::new(0, us * 1000);
while Instant::now() < target { }
}
- Lenguaje dominante
- Rust
- Estrellas
- 319
- Forks
- 60
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de rust-embedded/linux-embedded-hal
-
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
rust-embedded/linux-embedded-hal#121 · 4 comentarios ·
-
[feature request] PWM supportAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
rust-embedded/linux-embedded-hal#117 · 3 reacciones ·
-
How to use SPI with gpio_cdevAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
rust-embedded/linux-embedded-hal#116 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
Todos los issues de rust-embedded/linux-embedded-hal
Issues similares
-
backend::vllm diffusion multimodal
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
lambdaclass/ethrex#7329 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
shadowsocks/shadowsocks-rust#2186 · 1 comentario ·
-
[Chore]: Inconsistent wasm-pack binary invocation in justfile breaks cross-platform executionAbiertoC-bug S-awaiting-triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
juspay/hyperswitch#14479 ·
Los mantenedores suelen responder en 1 día