36#define _UTIL_DELAY_H_ 1
39# ifndef __HAS_DELAY_CYCLES
40# define __HAS_DELAY_CYCLES 1
47#include <bits/attribs.h>
99# warning "F_CPU not defined for <util/delay.h>"
115# define F_CPU 1000000UL
119# warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
166static __ATTR_ALWAYS_INLINE__
void
169#if (__HAS_DELAY_CYCLES \
170 && defined(__OPTIMIZE__) \
171 && !defined(__DELAY_BACKWARD_COMPATIBLE__))
173 double __tmp = ((
F_CPU) / 1e3) * __ms;
175 #if defined(__DELAY_ROUND_DOWN__)
176 __tmp = __builtin_fabs (__tmp);
177 #elif defined(__DELAY_ROUND_CLOSEST__)
178 __tmp = __builtin_fabs (__tmp) + 0.5;
181 __tmp = __builtin_ceil (__builtin_fabs (__tmp));
186 __ticks_dc = __tmp >= 4294967040.0 ? 0xffffff00 : (
uint32_t) __tmp;
187 __builtin_avr_delay_cycles(__ticks_dc);
190 double __tmp = ((
F_CPU) / 4e3) * __ms;
193 else if (__tmp > 65535)
253static __ATTR_ALWAYS_INLINE__
void
256#if (__HAS_DELAY_CYCLES \
257 && defined(__OPTIMIZE__) \
258 && !defined(__DELAY_BACKWARD_COMPATIBLE__))
260 double __tmp = ((
F_CPU) / 1e6) * __us;
262 #if defined(__DELAY_ROUND_DOWN__)
263 __tmp = __builtin_fabs (__tmp);
264 #elif defined(__DELAY_ROUND_CLOSEST__)
265 __tmp = __builtin_fabs (__tmp) + 0.5;
268 __tmp = __builtin_ceil (__builtin_fabs (__tmp));
273 __ticks_dc = __tmp >= 4294967040.0 ? 0xffffff00 : (
uint32_t) __tmp;
274 __builtin_avr_delay_cycles(__ticks_dc);
277 double __tmp = ((
F_CPU) / 3e6) * __us;
278 double __tmp2 = ((
F_CPU) / 4e6) * __us;
281 else if (__tmp2 > 65535)
286 else if (__tmp > 255)
unsigned int uint16_t
Definition: stdint.h:96
unsigned long int uint32_t
Definition: stdint.h:114
unsigned char uint8_t
Definition: stdint.h:88
void _delay_loop_1(uint8_t __count)
Definition: delay_basic.h:84
void _delay_loop_2(uint16_t __count)
Definition: delay_basic.h:111
static void _delay_ms(double __ms)
Definition: delay.h:167
#define F_CPU
CPU frequency in Hz.
Definition: delay.h:115
static void _delay_us(double __us)
Definition: delay.h:254