1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-15 07:29:15 +01:00

Pios Delay: Add function for measuring time difference between two cycle counts

This commit is contained in:
James Cotton 2011-08-12 04:05:08 -05:00
parent b3b4fcd007
commit 1d1f351233
3 changed files with 50 additions and 0 deletions

View File

@ -148,6 +148,25 @@ uint32_t PIOS_DELAY_GetuSSince(uint32_t t)
return (PIOS_DELAY_GetuS() - t);
}
/**
* @brief Get the raw delay timer, useful for timing
* @return Unitless value (uint32 wrap around)
*/
uint32_t PIOS_DELAY_GetRaw()
{
return DWT_CYCCNT;
}
/**
* @brief Compare to raw times to and convert to us
* @return A microsecond value
*/
uint32_t PIOS_DELAY_DiffuS(uint32_t raw)
{
uint32_t diff = DWT_CYCCNT - raw;
return diff / us_ticks;
}
#endif
/**

View File

@ -138,6 +138,35 @@ uint32_t PIOS_DELAY_GetuS()
return DWT_CYCCNT / us_ticks;
}
/**
* @brief Calculate time in microseconds since a previous time
* @param[in] t previous time
* @return time in us since previous time t.
*/
uint32_t PIOS_DELAY_GetuSSince(uint32_t t)
{
return (PIOS_DELAY_GetuS() - t);
}
/**
* @brief Get the raw delay timer, useful for timing
* @return Unitless value (uint32 wrap around)
*/
uint32_t PIOS_DELAY_GetRaw()
{
return DWT_CYCCNT;
}
/**
* @brief Compare to raw times to and convert to us
* @return A microsecond value
*/
uint32_t PIOS_DELAY_DiffuS(uint32_t raw)
{
uint32_t diff = DWT_CYCCNT - raw;
return diff / us_ticks;
}
#endif
/**

View File

@ -38,6 +38,8 @@ extern int32_t PIOS_DELAY_WaituS(uint32_t uS);
extern int32_t PIOS_DELAY_WaitmS(uint32_t mS);
extern uint32_t PIOS_DELAY_GetuS();
extern uint32_t PIOS_DELAY_GetuSSince(uint32_t t);
extern uint32_t PIOS_DELAY_GetRaw();
extern uint32_t PIOS_DELAY_DiffuS(uint32_t raw);
#endif /* PIOS_DELAY_H */