Closed RoganDawes closed 1 year ago
I looks to me like timeOW must take a constexpr.
microsecondsToClockCycles is an inlinable function on my cores or was.
I'm not sure why that was the case when it's a macro on the official core, since that makes the difference between it working in cases like that and not working. Grab the latest wiring.c and Arduino.h from the github repo. I.... don't think it will break anything to pull those in without other changes, or you can modify the files in your copy of the core - wiring.c loses the definitions for microsecondsToClockCycles and clockCyclesToMicroseconds and clockCyclesPerMicrosecond. and Arduino.h loses all reference to those three functions, and instead gets this set of defines
#define clockCyclesPerMicrosecond() ((uint16_t)(F_CPU / 1000000L))
#define clockCyclesToMicroseconds(a) ((uint32_t)((a) / clockCyclesPerMicrosecond()))
#define microsecondsToClockCycles(a) ((uint32_t)((a) * clockCyclesPerMicrosecond()))
As an aside, what the hell is that library doing calling microsecondsToClockCycles(1) instead of clockCyclesPerMicrosecond()?
Fixed with 5e40bbf394dfc87e726339a2050387cc794ae804 on mTC and dc001ca478b626c6c690323220d3f248e824a048 on DxC
Issue should be resolved with current github version, closing. (note, this is megaTinyCore, not tinyMegaCore.
Hi, I'm trying to compile the OneWireHub examples for an ATTiny412, and am running into a number of issues relating to use of constexpr vs a
#define
(as far as I can make out, I'm no expert C++ programmer!)I've tried to add
constexpr
annotation to these lines in~/.platformio/packages/framework-arduino-megaavr-megatinycore/cores/megatinycore/Arduino.h
:but then the error changes to:
I'm honestly not sure where the definition is that I should be updating? From what I can make out, the #include for Arduino.h is happening in platform.h, which is included via OneWireHub.h. Surely that is the right place for the definition of the functions?