Among PinChangeInt libraries, I want to use PinState in Arduino DUE. What should I do?

Hello
Secondly, I will leave you with a question.
Still, please understand my poor English.

I am currently trying to control RC cars through Arduino through the information provided by the blog address below.
< RCArduino: How To Read Multiple RC Channels >

Therefore, while using the code he provided, i noticed that the "PinChangeInt Library" used in these codes is a code that works normally on AVR processors such as Arduino Uno.

I am currently using the ARM processor Arduino DUE, so uploading the code below seems to fail with the error message below.

[[
In file included from C:\Users\kkddy\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:201:0,
from sketch\sketch_DUE.ino.cpp:1:
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: In constructor 'PCintPort::PCintPort(int, int, volatile uint8_t&)':
C:\Users\kkddy\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x/variant.h:67:44: error: base operand of '->' is not a pointer
#define portInputRegister(port) ( &(port->PIO_PDSR) )
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:172:16: note: in expansion of macro 'portInputRegister'
portInputReg(portInputRegister(index)),
^
In file included from C:\Users\kkddy\Desktop\인턴\INROL\RCarduino\sketch_DUE\sketch_DUE.ino:18:0:
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: At global scope:
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:301:32: error: 'PCMSK0' was not declared in this scope
PCintPort portB=PCintPort(2, 0,PCMSK0); // port PB==2 (from Arduino.h, Arduino version 1.0)
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:304:32: error: 'PCMSK1' was not declared in this scope
PCintPort portC=PCintPort(3, 1,PCMSK1); // port PC==3 (also in pins_arduino.c, Arduino version 022)
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:307:32: error: 'PCMSK2' was not declared in this scope
PCintPort portD=PCintPort(4, 2,PCMSK2); // port PD==4
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: In member function 'void PCintPort::enable(PCintPort::PCintPin, PCIntvoidFuncPtr, uint8_t)':

C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:374:2: error: 'PCICR' was not declared in this scope
PCICR |= PCICRbit;
^
In file included from C:\Users\kkddy\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\cores\arduino/Arduino.h:201:0,
from sketch\sketch_DUE.ino.cpp:1:
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: In static member function 'static int8_t PCintPort::attachInterrupt(uint8_t, PCIntvoidFuncPtr, int)':
C:\Users\kkddy\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x/variant.h:63:65: error: invalid conversion from 'Pio' to 'uint8_t {ak*
#define digitalPinToPort(P) ( g_APinDescription[P].pPort )
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:424:20: note: in expansion of macro 'digitalPinToPort'
uint8_t portNum = digitalPinToPort(arduinoPin);
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: In static member function 'static void PCintPort::detachInterrupt(uint8_t)':
C:\Users\kkddy\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.12\variants\arduino_due_x/variant.h:63:65: error: invalid conversion from 'Pio' to 'uint8_t {ak*
#define digitalPinToPort(P) ( g_APinDescription[P].pPort )
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:447:20: note: in expansion of macro 'digitalPinToPort'
uint8_t portNum = digitalPinToPort(arduinoPin);
^
In file included from C:\Users\kkddy\Desktop\인턴\INROL\RCarduino\sketch_DUE\sketch_DUE.ino:18:0:
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:455:22: error: 'SREG' was not declared in this scope
uint8_t oldSREG = SREG;
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:456:8: error: 'cli' was not declared in this scope
cli(); // disable interrupts
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:458:31: error: 'PCICR' was not declared in this scope
if (port->portPCMask == 0) PCICR &= ~(port->PCICRbit);
^
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h: In member function 'void PCintPort::PCint()':
C:\Users\kkddy\Documents\Arduino\libraries\PinChangeInt/PinChangeInt.h:533:11: error: 'PCIFR' was not declared in this scope
pcifr = PCIFR & PCICRbit;

]]

I'd like to ask you if the reason I thought was right and how to use "PCintPort:pinState" in this code.

looks like code uses AVR hardware registers that don't exist on ARM

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.