abse/smart-ring-flex
A tscircuit package created by abse.
- Version
- 0.0.24
- License
- unset
- Stars
- 0
firmware/onboard-programmer/upstream/src/delay.c
// ===================================================================================
// Delay Functions for CH551, CH552 and CH554 * v1.1 *
// ===================================================================================
#include "delay.h"
// ===================================================================================
// Delay in Units of us
// ===================================================================================
void DLY_us(uint16_t n) { // delay in us
#ifdef F_CPU
#if F_CPU <= 6000000
n >>= 2;
#endif
#if F_CPU <= 3000000
n >>= 2;
#endif
#if F_CPU <= 750000
n >>= 4;
#endif
#endif
while(n) { // total = 12~13 Fsys cycles, 1uS @Fsys=12MHz
__asm__("inc _SAFE_MOD"); // 2 Fsys cycles, for higher Fsys, add operation here
#ifdef F_CPU
#if F_CPU >= 14000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 16000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 18000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 20000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 22000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 24000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 26000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 28000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 30000000
__asm__("inc _SAFE_MOD");
#endif
#if F_CPU >= 32000000
__asm__("inc _SAFE_MOD");
#endif
#endif
--n;
}
}
// ===================================================================================
// Delay in Units of ms
// ===================================================================================
void DLY_ms(uint16_t n) { // delay in ms
while(n) {
while(!(TKEY_CTRL & bTKC_IF));
while(TKEY_CTRL & bTKC_IF);
--n;
}
}