mrrwa / NmraDcc

NMRA Digital Command Control (DCC) Library
GNU Lesser General Public License v2.1
135 stars 53 forks source link

NMRADCC on Arduino R4 Wifi #80

Open SombreYellowBuffalo opened 3 weeks ago

SombreYellowBuffalo commented 3 weeks ago

Aiming to migrate working sketches from UNO R3 to UNO R4 Wifi board - however including the NMRADCC library in an R4 sketch generates the below error (even if it is the only line in an otherwise new sketch). Any hope to have NMRADCC work on UNO R4 WiFi boards?

/Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'void ExternalInterruptHandler()': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49:0: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'uint8_t validCV(uint16_t, uint8_t)': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:134:22: error: 'E2END' was not declared in this scope

define MAXCV E2END // the upper limit of the CV value currently defined to max memory.

                  ^

/Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:846:14: note: in expansion of macro 'MAXCV' if (CV > MAXCV) ^~~~~

exit status 1

Compilation error: exit status 1

kiwi64ajs commented 3 weeks ago

Hi SombreYellowBuffalo,

I’ve added a couple of MACRO definitions for the UNO R4 to the NmraDcc.cpp and NmraDcc.h files for you to try.

Download the most recent library code from here: https://github.com/mrrwa/NmraDcc/archive/refs/heads/master.zip

The code compiles ok, but I’ve not been able to test it on any hardware so please let me know if this works ok for you, so I can release the change.

Regards

Alex Shepherd

m: +64-21-777764 e: @.***

On 16 Jun 2024, at 10:12 PM, SombreYellowBuffalo @.***> wrote:

Aiming to migrate working sketches from UNO R3 to UNO R4 Wifi board - however including the NMRADCC library in an R4 sketch generates the below error (even if it is the only line in an otherwise new sketch). Any hope to have NMRADCC work on UNO R4 WiFi boards?

/Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'void ExternalInterruptHandler()': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49:0: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'uint8_t validCV(uint16_t, uint8_t)': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:134:22: error: 'E2END' was not declared in this scope

define MAXCV E2END // the upper limit of the CV value currently defined to max memory.

^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:846:14: note: in expansion of macro 'MAXCV' if (CV > MAXCV) ^~~~~

exit status 1

Compilation error: exit status 1

— Reply to this email directly, view it on GitHub https://github.com/mrrwa/NmraDcc/issues/80, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5Y53IPWZFACXCKAFQ7KILZHVQJNAVCNFSM6AAAAABJMO7WYCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGM2TKNRUGIZTKMY. You are receiving this because you are subscribed to this thread.

SombreYellowBuffalo commented 3 weeks ago

Hi Alex,

I imported the zip library into IDE and the simple (otherwise new sketch) verified without errors, so initially looks good.

I'll see if I can get the full script working now and let you know of any NMRADCC related issues.

Many thanks

David


From: Alex Shepherd @.> Sent: 16 June 2024 11:37 To: mrrwa/NmraDcc @.> Cc: SombreYellowBuffalo @.>; Author @.> Subject: Re: [mrrwa/NmraDcc] NMRADCC on Arduino R4 Wifi (Issue #80)

Hi SombreYellowBuffalo,

I’ve added a couple of MACRO definitions for the UNO R4 to the NmraDcc.cpp and NmraDcc.h files for you to try.

Download the most recent library code from here: https://github.com/mrrwa/NmraDcc/archive/refs/heads/master.zip

The code compiles ok, but I’ve not been able to test it on any hardware so please let me know if this works ok for you, so I can release the change.

Regards

Alex Shepherd

m: +64-21-777764 e: @.***

On 16 Jun 2024, at 10:12 PM, SombreYellowBuffalo @.***> wrote:

Aiming to migrate working sketches from UNO R3 to UNO R4 Wifi board - however including the NMRADCC library in an R4 sketch generates the below error (even if it is the only line in an otherwise new sketch). Any hope to have NMRADCC work on UNO R4 WiFi boards?

/Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'void ExternalInterruptHandler()': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:520:95: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:577:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: no matching function for call to 'attachInterrupt(uint8_t&, void (&)(), byte&)' attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:8:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: candidate: void attachInterrupt(pin_size_t, voidFuncPtr, PinStatus) void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus mode); ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Common.h:113:6: note: conversion of argument 3 would be ill-formed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: error: invalid conversion from 'byte {aka unsigned char}' to 'PinStatus' [-fpermissive] attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam<T>, PinStatus, T) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:38:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/ArduinoAPI.h:29:0, from /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/Arduino.h:4, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:52, from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49: /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: candidate: template void arduino::attachInterrupt(pin_size_t, arduino::voidTemplateFuncPtrParam, PinStatus, T&) template void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam userFunc, PinStatus mode, T& param) { ^~~~~~~ /Users/davidcooksey/Library/Arduino15/packages/arduino/hardware/renesas_uno/1.2.0/cores/arduino/api/Interrupts.h:21:27: note: template argument deduction/substitution failed: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:626:87: note: candidate expects 1 argument, 0 provided attachInterrupt (DccProcState.ExtIntNum, ExternalInterruptHandler, ISREdge); ^ In file included from /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:49:0: /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp: In function 'uint8_t validCV(uint16_t, uint8_t)': /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.h:134:22: error: 'E2END' was not declared in this scope

define MAXCV E2END // the upper limit of the CV value currently defined to max memory.

^ /Users/davidcooksey/Documents/Arduino/libraries/NmraDcc/NmraDcc.cpp:846:14: note: in expansion of macro 'MAXCV' if (CV > MAXCV) ^~~~~

exit status 1

Compilation error: exit status 1

— Reply to this email directly, view it on GitHub https://github.com/mrrwa/NmraDcc/issues/80, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5Y53IPWZFACXCKAFQ7KILZHVQJNAVCNFSM6AAAAABJMO7WYCVHI2DSMVQWIX3LMV43ASLTON2WKOZSGM2TKNRUGIZTKMY. You are receiving this because you are subscribed to this thread.

— Reply to this email directly, view it on GitHubhttps://github.com/mrrwa/NmraDcc/issues/80#issuecomment-2171460770, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BJHUHOGD2E446EKNC5R4PB3ZHV2I5AVCNFSM6AAAAABJMO7WYCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNZRGQ3DANZXGA. You are receiving this because you authored the thread.Message ID: @.***>

SombreYellowBuffalo commented 3 weeks ago

Everything is looking good now on Arduino R4 WiFi. Thanks for the quick response. David