FastLED 3.9.15
Loading...
Searching...
No Matches
platforms.cpp.hpp
Go to the documentation of this file.
1
3
5#define FASTLED_INTERNAL
7#include "platforms/is_platform.h"
8
9// Removed duplicate weak definition of timer_millis for ATtiny1604.
10// The variable is already defined in avr_millis_timer_null_counter.hpp when needed,
11// so redefining it here caused multiple-definition linkage errors.
12
13// Provide a single consolidated weak timer_millis symbol for AVR tiny/x-y parts
14// whose cores do not export it, satisfying MS_COUNTER binding in led_sysdefs_avr.h.
15// This complements avr_millis_timer_null_counter.hpp when that TU is not built.
16#if defined(FL_IS_AVR)
17# if defined(FL_IS_AVR_ATTINY_MODERN) || defined(ARDUINO_attinyxy6)
18# ifdef __cplusplus
19extern "C" {
20# endif
21FL_LINK_WEAK volatile unsigned long timer_millis = 0;
22# ifdef __cplusplus
23}
24# endif
25# endif
26#endif
27
28// Interrupt handlers cannot be defined in the header.
29// They must be defined as C functions, or they won't
30// be found (due to name mangling), and thus won't
31// override any default weak definition.
32#if defined(FL_IS_NRF52)
33
34 #include "platforms/arm/is_arm.h" // ok platform headers
35 #include "platforms/arm/nrf52/led_sysdefs_arm_nrf52.h" // ok platform headers
36 #include "platforms/arm/nrf52/arbiter_nrf52.h" // ok platform headers
37
38 fl::u32 isrCount;
39
41 // NOTE: Update platforms.cpp in root of FastLED library if this changes
42 #if defined(FASTLED_NRF52_ENABLE_PWM_INSTANCE0)
43 void PWM0_IRQHandler(void) { ++isrCount; PWM_Arbiter<0>::isr_handler(); }
44 #endif
45 #if defined(FASTLED_NRF52_ENABLE_PWM_INSTANCE1)
46 void PWM1_IRQHandler(void) { ++isrCount; PWM_Arbiter<1>::isr_handler(); }
47 #endif
48 #if defined(FASTLED_NRF52_ENABLE_PWM_INSTANCE2)
49 void PWM2_IRQHandler(void) { ++isrCount; PWM_Arbiter<2>::isr_handler(); }
50 #endif
51 #if defined(FASTLED_NRF52_ENABLE_PWM_INSTANCE3)
52 void PWM3_IRQHandler(void) { ++isrCount; PWM_Arbiter<3>::isr_handler(); }
53 #endif
55
56#endif // defined(FL_IS_NRF52)
#define FL_EXTERN_C_BEGIN
#define FL_EXTERN_C_END
#define FL_LINK_WEAK