36#define _UTIL_DELAY_H_ 1
39# ifndef __HAS_DELAY_CYCLES
40# define __HAS_DELAY_CYCLES 1
47#include <bits/attribs.h>
88# warning "F_CPU not defined for <util/delay.h>"
104# define F_CPU 1000000UL
108# warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
148static __ATTR_ALWAYS_INLINE__
void _delay_ms(
double __ms);
154#if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) \
155 && !defined(__DELAY_BACKWARD_COMPATIBLE__)
157 __tmp = ((
F_CPU) / 1e3) * __ms;
159 #if defined(__DELAY_ROUND_DOWN__)
160 __ticks_dc = (
uint32_t)__builtin_fabs(__tmp);
162 #elif defined(__DELAY_ROUND_CLOSEST__)
163 __ticks_dc = (
uint32_t)(__builtin_fabs(__tmp)+0.5);
167 __ticks_dc = (
uint32_t)(__builtin_ceil(__builtin_fabs(__tmp)));
170 __builtin_avr_delay_cycles(__ticks_dc);
174 __tmp = ((
F_CPU) / 4e3) * __ms;
177 else if (__tmp > 65535)
230static __ATTR_ALWAYS_INLINE__
void _delay_us(
double __us);
236#if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) \
237 && !defined(__DELAY_BACKWARD_COMPATIBLE__)
239 __tmp = ((
F_CPU) / 1e6) * __us;
241 #if defined(__DELAY_ROUND_DOWN__)
242 __ticks_dc = (
uint32_t)__builtin_fabs(__tmp);
244 #elif defined(__DELAY_ROUND_CLOSEST__)
245 __ticks_dc = (
uint32_t)(__builtin_fabs(__tmp)+0.5);
249 __ticks_dc = (
uint32_t)(__builtin_ceil(__builtin_fabs(__tmp)));
252 __builtin_avr_delay_cycles(__ticks_dc);
257 __tmp = ((
F_CPU) / 3e6) * __us;
258 __tmp2 = ((
F_CPU) / 4e6) * __us;
261 else if (__tmp2 > 65535)
266 else if (__tmp > 255)
unsigned int uint16_t
Definition: stdint.h:91
unsigned long int uint32_t
Definition: stdint.h:101
unsigned char uint8_t
Definition: stdint.h:81
void _delay_loop_1(uint8_t __count)
Definition: delay_basic.h:79
void _delay_loop_2(uint16_t __count)
Definition: delay_basic.h:101
#define F_CPU
CPU frequency in Hz.
Definition: delay.h:104
static void _delay_us(double __us)
Definition: delay.h:233
static void _delay_ms(double __ms)
Definition: delay.h:151