From 844ee7e892aa4c902e2fed8555a6decabe49e921 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut Date: Mon, 23 Aug 2021 13:35:07 +0000 Subject: [PATCH 1/2] Fix microseconds delay, typos --- src/lib.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 27569b0..a53d106 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -46,7 +46,7 @@ pub fn delay(count: u32) { :)} } -///delay for N miliseconds +///delay for N milliseconds /// # Arguments /// * 'ms' - an u32, number of milliseconds to busy-wait pub fn delay_ms(ms: u32) { @@ -57,12 +57,10 @@ pub fn delay_ms(ms: u32) { ///delay for N microseconds /// # Arguments -/// * 'ms' - an u32, number of microseconds to busy-wait +/// * 'us' - an u32, number of microseconds to busy-wait pub fn delay_us(us: u32) { - // picoseconds - let ps = us * 1000; - let ps_lp = 1000000000 / (avr_config::CPU_FREQUENCY_HZ / 4); - let loops = (ps / ps_lp) as u32; + let us_lp = avr_config::CPU_FREQUENCY_HZ / 1000000 / 4; + let loops = (us * us_lp) as u32; delay(loops); } From 69161c5b886218531e51d25468679232b8fef473 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut Date: Mon, 23 Aug 2021 15:13:54 +0000 Subject: [PATCH 2/2] Expand count parameters to u64 to accomodate values > ~1000s --- src/lib.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a53d106..449f6b6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,8 +23,8 @@ /// Internal function to implement a variable busy-wait loop. /// # Arguments -/// * 'count' - an i32, the number of times to cycle the loop. -pub fn delay(count: u32) { +/// * 'count' - a u64, the number of times to cycle the loop. +pub fn delay(count: u64) { // Our asm busy-wait takes a 16 bit word as an argument, // so the max number of loops is 2^16 let outer_count = count / 65536; @@ -48,8 +48,8 @@ pub fn delay(count: u32) { ///delay for N milliseconds /// # Arguments -/// * 'ms' - an u32, number of milliseconds to busy-wait -pub fn delay_ms(ms: u32) { +/// * 'ms' - a u64, number of milliseconds to busy-wait +pub fn delay_ms(ms: u64) { // microseconds let us = ms * 1000; delay_us(us); @@ -57,10 +57,10 @@ pub fn delay_ms(ms: u32) { ///delay for N microseconds /// # Arguments -/// * 'us' - an u32, number of microseconds to busy-wait -pub fn delay_us(us: u32) { - let us_lp = avr_config::CPU_FREQUENCY_HZ / 1000000 / 4; - let loops = (us * us_lp) as u32; +/// * 'us' - a u64, number of microseconds to busy-wait +pub fn delay_us(us: u64) { + let us_in_loop = (avr_config::CPU_FREQUENCY_HZ / 1000000 / 4) as u64; + let loops = us * us_in_loop; delay(loops); }