diff --git a/cores/arduino/Arduino.h b/cores/arduino/Arduino.h index 005563aec..d1d128d0b 100644 --- a/cores/arduino/Arduino.h +++ b/cores/arduino/Arduino.h @@ -116,6 +116,8 @@ int digitalPinToInterrupt(pin_size_t pin); #define LED_BUILTIN ZARD_LED_BUILTIN #endif // LED_BUILTIN +#include + #ifdef __cplusplus #include #endif // __cplusplus diff --git a/cores/arduino/inlines.h b/cores/arduino/inlines.h new file mode 100644 index 000000000..a0b710bd8 --- /dev/null +++ b/cores/arduino/inlines.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * Provide implementations for inline functions. + */ + +#ifndef __INLINES_H__ +#define __INLINES_H__ + +#include + +inline __attribute__((always_inline)) void delay(unsigned long ms) { + k_sleep(K_MSEC(ms)); +} + +inline __attribute__((always_inline)) void delayMicroseconds(unsigned int us) { + if (us == 0) { + return; + } + k_busy_wait(us - 1); +} + +#endif /* __INLINES_H__ */ diff --git a/cores/arduino/time_macros.h b/cores/arduino/time_macros.h new file mode 100644 index 000000000..4be801b5e --- /dev/null +++ b/cores/arduino/time_macros.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) Arduino s.r.l. and/or its affiliated companies + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include + +#define clockCyclesPerMicrosecond() (1000000 / k_cyc_to_ns_near64(1000)) +#define clockCyclesToMicroseconds(a) (a / clockCyclesPerMicrosecond()) +#define microsecondsToClockCycles(a) (a * clockCyclesPerMicrosecond()) diff --git a/cores/arduino/zephyrCommon.cpp b/cores/arduino/zephyrCommon.cpp index dd670fe54..0b3e37ed7 100644 --- a/cores/arduino/zephyrCommon.cpp +++ b/cores/arduino/zephyrCommon.cpp @@ -338,14 +338,6 @@ void noTone(pin_size_t pinNumber) { gpio_pin_set_dt(&arduino_pins[pinNumber], 0); } -void delay(unsigned long ms) { - k_sleep(K_MSEC(ms)); -} - -void delayMicroseconds(unsigned int us) { - k_busy_wait(us); -} - unsigned long micros(void) { return k_cyc_to_us_floor32(k_cycle_get_32()); }