1#ifndef __INC_FL_DELAY_H
2#define __INC_FL_DELAY_H
12#if (!defined(NO_MINIMUM_WAIT) || (NO_MINIMUM_WAIT==0))
28 diff = (micros() & 0xFFFF) - mLastMicros;
33 void mark() { mLastMicros = micros() & 0xFFFF; }
64# define FL_NOP __asm__ __volatile__ ("cp r0,r0\n");
65# define FL_NOP2 __asm__ __volatile__ ("rjmp .+0");
68# define FL_NOP __asm__ __volatile__ ("nop\n");
70# define FL_NOP2 __asm__ __volatile__ ("nop\n\t nop\n");
92#if defined(FASTLED_AVR)
94template<
int LOOP,
int PAD>
inline void _delaycycles_AVR() {
99 __asm__ __volatile__ (
109template<
int CYCLES> __attribute__((always_inline))
inline void delaycycles() {
110 _delaycycles_AVR<CYCLES / 3, CYCLES % 3>();
129template<
int CYCLES> __attribute__((always_inline))
inline void delaycycles() {
140template<> __attribute__((always_inline))
inline void delaycycles<-10>() {}
141template<> __attribute__((always_inline))
inline void delaycycles<-9>() {}
142template<> __attribute__((always_inline))
inline void delaycycles<-8>() {}
143template<> __attribute__((always_inline))
inline void delaycycles<-7>() {}
144template<> __attribute__((always_inline))
inline void delaycycles<-6>() {}
145template<> __attribute__((always_inline))
inline void delaycycles<-5>() {}
146template<> __attribute__((always_inline))
inline void delaycycles<-4>() {}
147template<> __attribute__((always_inline))
inline void delaycycles<-3>() {}
148template<> __attribute__((always_inline))
inline void delaycycles<-2>() {}
149template<> __attribute__((always_inline))
inline void delaycycles<-1>() {}
150template<> __attribute__((always_inline))
inline void delaycycles<0>() {}
151template<> __attribute__((always_inline))
inline void delaycycles<1>() {
FL_NOP;}
152template<> __attribute__((always_inline))
inline void delaycycles<2>() {
FL_NOP2;}
153template<> __attribute__((always_inline))
inline void delaycycles<3>() {
FL_NOP;
FL_NOP2;}
154template<> __attribute__((always_inline))
inline void delaycycles<4>() {
FL_NOP2;
FL_NOP2;}
168#define F_CPU_MHZ (F_CPU / 1000000L)
173#define NS(_NS) (((_NS * F_CPU_MHZ) + 999) / 1000)
175#define CLKS_TO_MICROS(_CLKS) ((long)(_CLKS)) / (F_CPU / 1000000L)
178#define NO_TIME(A, B, C) (NS(A) < 3 || NS(B) < 3 || NS(C) < 6)
central include file for FastLED, defines the CFastLED class/object
Class to ensure that a minimum amount of time has kicked since the last time run - and delay if not e...
void mark()
Reset the timestamp that marks the start of the wait period.
void wait()
Blocking delay until WAIT time since mark() has passed.
#define FL_NOP2
Double no operation ("no-op") instruction for delay.
void delaycycles_min1()
A variant of delaycycles that will always delay at least one cycle.
void delaycycles()
Delay N clock cycles.
#define FL_NOP
Single no operation ("no-op") instruction for delay.