30#include "platforms/pin.h"
52 platforms::digitalWrite(pin, val);
56 return platforms::digitalRead(pin);
60 return platforms::analogRead(pin);
64 platforms::setAdcRange(range);
206 if (!ch || ch->
pin < 0)
return;
232 u8 duty = (val > 255) ? 255 :
static_cast<u8>(val);
241 platforms::analogWrite(pin, val);
246 platforms::analogWrite(pin, val);
254 u8 duty =
static_cast<u8>(val >> 8);
262 platforms::setPwm16(pin, val);
267 platforms::setPwm16(pin, val);
285 if (frequency_hz == 0) {
286 FL_WARN(
"setPwmFrequency: Frequency must be > 0");
291 bool needs_isr = platforms::needsPwmIsrFallback(pin, frequency_hz);
295 int result = platforms::setPwmFrequencyNative(pin, frequency_hz);
297 FL_WARN(
"setPwmFrequency: Native backend failed: " <<
result);
330 if (isr_result != 0) {
361 return platforms::getPwmFrequencyNative(pin);
387 platforms::pinMode(pin, mode);
static T & instance() FL_NOEXCEPT
RAII helper for critical sections (interrupt disable/enable) Automatically disables interrupts on con...
Umbrella header for ISR subsystem.
Centralized logging categories for FastLED hardware interfaces and subsystems.
constexpr u32 ISR_FLAG_IRAM_SAFE
int detach_handler(handle &h)
Detach an ISR handler.
int attach_timer_handler(const config &cfg, handle *out_handle)
Attach a timer-based ISR handler.
const char * get_error_string(int error_code)
Get platform-specific error description.
constexpr u8 ISR_PRIORITY_MEDIUM
constexpr u8 MAX_PWM_CHANNELS
constexpr u32 MAX_ISR_PWM_FREQUENCY
void releaseChannel(PwmPinState *ch)
constexpr u32 ISR_FREQUENCY_HZ
void FL_IRAM pwm_isr_handler(void *user_data)
PwmPinState * findByPin(int pin)
void setAdcRange(AdcRange range)
Set ADC voltage range.
u32 getPwmFrequency(int pin)
Query the configured PWM frequency for a pin.
void setPwm16(int pin, u16 val)
Set PWM duty cycle with 16-bit resolution.
PinValue
Digital pin value.
@ Low
Logic low (0V / GND)
@ High
Logic high (3.3V / 5V, platform-dependent)
int setPwmFrequency(int pin, u32 frequency_hz)
Set PWM frequency for a pin.
int pwmEnd(int pin)
Release PWM channel and stop output on a pin.
AdcRange
ADC voltage range configuration.
expected< T, E > result
Alias for expected (Rust-style naming)
void pinMode(int pin, PinMode mode)
Set pin mode (input, output, pull-up, pull-down)
PinValue digitalRead(int pin)
Read digital value from pin.
void analogWrite(int pin, u16 val)
Write analog value to pin (PWM)
void digitalWrite(int pin, PinValue val)
Write digital value to pin.
u16 analogRead(int pin)
Read analog value from pin.
PinMode
Pin mode configuration.
@ Output
Digital output (push-pull)
Base definition for an LED controller.
Configuration for ISR attachment.
Opaque handle to an attached ISR.
PwmPinState() FL_NOEXCEPT
fl::isr::handle isr_handle
PwmStateData() FL_NOEXCEPT
PwmPinState channels[MAX_PWM_CHANNELS]