I'm trying to communicate between two Arduino Due and Nano. Nano as Master and Due as a slave. As given in the library description Wire Lib

When the master request for data from the slave, first it goes to Request ISR. Wire.onRequest(requestEvent) But when compile the program for Arduino Due I get following errors.

In file included from C:\Users\\Slave_Test3.ino:14:0:

C:\Users\..\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\libraries\Wire\src/Wire.h:59:7: error:   initializing argument 1 of 'void TwoWire::onRequest(void (*)())' [-fpermissive]

 void onRequest(void(*)(void));


But If I change from Arduino Due to any other board this error does not come.

Thank you

  • It looks like a problem with the Wire lib that the Due BSP includes. Aug 14 '17 at 13:44

Dead easy !! (Well only because I had a -fpermissive yesterday :) )

You are trying to implicitly cast, and you can't do that with modern GCC versions (quite rightly).

So you need to explicitly cast the first parameter to void*.

Because this is in a "core" library for the Due I would get the latest version of the board package and see if it goes away. You can turn the check off, but you will need to google on how to do that.

  • Thank you for the solution. Yes, I have the latest version of the board package. Still, I'm getting those errors. Can please elaborate your last suggestion I am new to this. Aug 14 '17 at 14:00
  • Not really because I can't see the code that has the problem. Aug 14 '17 at 15:01
  • I have written the same come as given here . Aug 14 '17 at 15:16
  • 1
    That link won't help. This "error" is not in your code, its in Wire.h as per your original post Aug 15 '17 at 7:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.