From 46e8523752b41bb012870db45aaa2f970c850800 Mon Sep 17 00:00:00 2001 From: alanbjohnston Date: Fri, 19 Aug 2022 09:52:34 -0400 Subject: [PATCH] CW fixes to make input work reliably --- cubesatsim/cubesatsim.ino | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cubesatsim/cubesatsim.ino b/cubesatsim/cubesatsim.ino index 8d15678a..c27a5e22 100644 --- a/cubesatsim/cubesatsim.ino +++ b/cubesatsim/cubesatsim.ino @@ -2947,9 +2947,9 @@ void sleep(float time) { // sleeps for intervals more than 0.1 seconds } */ -void sleep(float time) { // sleeps for intervals more than 0.01 milli seconds +void sleep(float timer) { // sleeps for intervals more than 0.01 milli seconds - unsigned long time_us = (unsigned long)(time * 1000000.0); + unsigned long time_us = (unsigned long)(timer * 1000000.0); unsigned long startSleep = micros(); while ((micros() - startSleep) < time_us) { // busy_wait_us(100); @@ -3475,7 +3475,8 @@ void transmit_cw(int freq, float duration) { // freq in Hz, duration in millise while((micros() - start) < duration_us) { digitalWrite(AUDIO_OUT_PIN, phase); // ToDo: if no TXC, just turn on PWM carrier phase = !phase; - sleep(min(start + duration_us - micros(), period_us) / 1.0E6); + float time_left = (float)(start + duration_us - micros()); + sleep(min(time_left, period_us) / 1.0E6); } digitalWrite(AUDIO_OUT_PIN, LOW); }