From f56ec10bcfd2e674281aa4b0e8fa538e1c5a3391 Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 16 Nov 2017 20:52:50 -0800 Subject: [PATCH] Only return lower 32 bits of FPGA time (#741) Works around an NI bug in image 10. --- hal/src/main/native/athena/HAL.cpp | 3 +++ hal/src/main/native/athena/PWM.cpp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/hal/src/main/native/athena/HAL.cpp b/hal/src/main/native/athena/HAL.cpp index a57a06d2c2..4ec4136b1d 100644 --- a/hal/src/main/native/athena/HAL.cpp +++ b/hal/src/main/native/athena/HAL.cpp @@ -219,6 +219,9 @@ uint64_t HAL_GetFPGATime(int32_t* status) { *status = NiFpga_Status_ResourceNotInitialized; return 0; } + // Because of a bug in FPGA image 10, just return the lower 32 bits of time. + return global->readLocalTime(status); + uint64_t upper1 = global->readLocalTimeUpper(status); uint32_t lower = global->readLocalTime(status); uint64_t upper2 = global->readLocalTimeUpper(status); diff --git a/hal/src/main/native/athena/PWM.cpp b/hal/src/main/native/athena/PWM.cpp index c51799a412..6e03cd3a8f 100644 --- a/hal/src/main/native/athena/PWM.cpp +++ b/hal/src/main/native/athena/PWM.cpp @@ -473,6 +473,10 @@ int32_t HAL_GetPWMLoopTiming(int32_t* status) { uint64_t HAL_GetPWMCycleStartTime(int32_t* status) { initializeDigital(status); if (*status != 0) return 0; + // Because of a bug in FPGA image 10, just return the lower 32 bits of cycle + // time. + return pwmSystem->readCycleStartTime(status); + uint64_t upper1 = pwmSystem->readCycleStartTimeUpper(status); uint32_t lower = pwmSystem->readCycleStartTime(status); uint64_t upper2 = pwmSystem->readCycleStartTimeUpper(status);