Closed samarth003 closed 8 years ago
Hi @samarth003, can you try to use an example from the SoftwareSerial library on your DUE board and let me know if it will compile for you? (Both libraries use the statements that appear in the errors.)
Hi @Kevin-M-Smith, Thanks for the prompt reply. I tried importing SoftwareSerial library and used its example on the DUE board. It gives me the following error:
/home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:128:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'bool SoftwareSerial::listen()': /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:184:23: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:185:9: error: 'cli' was not declared in this scope cli(); ^ In file included from /opt/arduino-1.5.7/hardware/arduino/sam/cores/arduino/Arduino.h:189:0, from /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:43: /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'void SoftwareSerial::setTX(uint8_t)': /opt/arduino-1.5.7/hardware/arduino/sam/variants/arduino_duex/variant.h:62:65: error: invalid conversion from 'Pio' to 'uint8_t {aka unsigned char}' [-fpermissive]
^
/home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:362:18: note: in expansion of macro 'digitalPinToPort' uint8_t port = digitalPinToPort(tx); ^ /opt/arduino-1.5.7/hardware/arduino/sam/variants/arduino_due_x/variant.h:66:44: error: base operand of '->' is not a pointer
^
/home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:363:27: note: in expansion of macro 'portOutputRegister' _transmitPortRegister = portOutputRegister(port); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'void SoftwareSerial::setRX(uint8_t)': /opt/arduino-1.5.7/hardware/arduino/sam/variants/arduino_duex/variant.h:62:65: error: invalid conversion from 'Pio' to 'uint8_t {aka unsigned char}' [-fpermissive]
^
/home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:373:18: note: in expansion of macro 'digitalPinToPort' uint8_t port = digitalPinToPort(rx); ^ /opt/arduino-1.5.7/hardware/arduino/sam/variants/arduino_due_x/variant.h:67:44: error: base operand of '->' is not a pointer
^
/home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:374:26: note: in expansion of macro 'portInputRegister' _receivePortRegister = portInputRegister(port); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'void SoftwareSerial::begin(long int)': /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:385:31: error: 'table' was not declared in this scope for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i) ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:401:38: error: 'digitalPinToPCICR' was not declared in this scope if (digitalPinToPCICR(_receivePin)) ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:403:78: error: 'digitalPinToPCICRbit' was not declared in this scope digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:403:79: error: '_BV' was not declared in this scope digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:404:37: error: 'digitalPinToPCMSK' was not declared in this scope digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:404:78: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'void SoftwareSerial::end()': /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:419:36: error: 'digitalPinToPCMSK' was not declared in this scope if (digitalPinToPCMSK(_receivePin)) ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:420:77: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:420:78: error: '_BV' was not declared in this scope digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin)); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'virtual size_t SoftwareSerial::write(uint8_t)': /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:455:21: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:456:7: error: 'cli' was not declared in this scope cli(); // turn off interrupts for a clean txmit ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:460:26: error: 'XMIT_START_ADJUSTMENT' was not declared in this scope tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT); ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp: In member function 'virtual void SoftwareSerial::flush()': /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:503:21: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ /home/bmubuntu/Arduino/libraries/SoftwareSerial/SoftwareSerial.cpp:504:7: error: 'cli' was not declared in this scope cli(); ^
checking the SoftwareSerial.h, it is configured for 8,16 and 20MHz processors, so i guess it is not compatible with DUE's ARM processor. Any workaround for this? Is the Arduino-SDI12 lib also made to work with 8,16 and 20 MHz processors?
Thanks!
I'm not worried about the speed of the ARM chip, but the errors later on (e.g. digitalPinToPCICR not defined) are pretty serious. The library is set up to respond to incoming signals from the sensors by detecting a change of state on the input pin (pin change interrupt / PCINT). It does not appear that the ARM chip uses the same code bindings for creating PCINTs. I will send a note to the Arduino developers mailing list to see if there is a remedy. Thanks for bringing this to my attention, I'll let you know what I find out.
Thanks @Kevin-M-Smith, Do let me know where we can go with this.
Hi @samarth003, my email finally got through the approval process to go out to the developers list.
The responses will come back here: https://groups.google.com/a/arduino.cc/forum/#!topic/developers/4nFR-zx8kZA.
I'll try to monitor the thread to see if anything helpful comes through - but you may also want to track it.
Regards, Kevin
Hello, I have the same error with Arduino DUE. I don't understand the solution that you propose.
here is the error message:
C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:125:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors
^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'bool SoftwareSerial::listen()': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:181:23: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:182:9: error: 'cli' was not declared in this scope cli(); ^ In file included from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/Arduino.h:189:0, from C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:43: C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'void SoftwareSerial::setTX(uint8_t)': C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_duex/variant.h:62:65: error: invalid conversion from 'Pio' to 'uint8_t {aka unsigned char}' [-fpermissive]
^
C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:357:18: note: in expansion of macro 'digitalPinToPort' uint8_t port = digitalPinToPort(tx); ^ C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:65:44: error: base operand of '->' is not a pointer
^
C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:358:27: note: in expansion of macro 'portOutputRegister' _transmitPortRegister = portOutputRegister(port); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'void SoftwareSerial::setRX(uint8_t)': C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_duex/variant.h:62:65: error: invalid conversion from 'Pio' to 'uint8_t {aka unsigned char}' [-fpermissive]
^
C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:368:18: note: in expansion of macro 'digitalPinToPort' uint8_t port = digitalPinToPort(rx); ^ C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:66:44: error: base operand of '->' is not a pointer
^
C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:369:26: note: in expansion of macro 'portInputRegister' _receivePortRegister = portInputRegister(port); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'void SoftwareSerial::begin(long int)': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:380:31: error: 'table' was not declared in this scope for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i) ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:396:38: error: 'digitalPinToPCICR' was not declared in this scope if (digitalPinToPCICR(_receivePin)) ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:398:78: error: 'digitalPinToPCICRbit' was not declared in this scope digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:398:79: error: '_BV' was not declared in this scope digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:399:37: error: 'digitalPinToPCMSK' was not declared in this scope digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:399:78: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'void SoftwareSerial::end()': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:414:36: error: 'digitalPinToPCMSK' was not declared in this scope if (digitalPinToPCMSK(_receivePin)) ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:415:77: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:415:78: error: '_BV' was not declared in this scope digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin)); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'virtual size_t SoftwareSerial::write(uint8_t)': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:450:21: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:451:7: error: 'cli' was not declared in this scope cli(); // turn off interrupts for a clean txmit ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:455:26: error: 'XMIT_START_ADJUSTMENT' was not declared in this scope tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT); ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function 'virtual void SoftwareSerial::flush()': C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:498:21: error: 'SREG' was not declared in this scope uint8_t oldSREG = SREG; ^ C:\Program Files (x86)\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:499:7: error: 'cli' was not declared in this scope cli(); ^ Erreur lors de la compilation.
I would be grateful for your help
@tchkikouna, at the time there is no solution to this problem.
The library does not currently support the ARM CPU architecture.
The following boards should work: * Arduino Uno (and other ATmega328 boards, like Arduino Duemilanove) * Arduino Mega (and other ATmega2560 boards)
@steve-2 , did I miss any other compatible boards that you know of?
Hi, I am using arduino-1.5.7 and trying to work with decagon sensors using serial event example code with some modifications to suit my project. The library works great with arduino uno but with arduino due, it gives me the following error message:
home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp: In member function 'void SDI12::setState(uint8_t)': /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:377:32: error: 'digitalPinToPCMSK' was not declared in this scope digitalPinToPCMSK(_dataPin) &= ~(1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:377:71: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_dataPin) &= ~(1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:389:29: error: 'digitalPinToPCICR' was not declared in this scope digitalPinToPCICR(_dataPin) |= (1<<digitalPinToPCICRbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:389:67: error: 'digitalPinToPCICRbit' was not declared in this scope digitalPinToPCICR(_dataPin) |= (1<<digitalPinToPCICRbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:390:32: error: 'digitalPinToPCMSK' was not declared in this scope digitalPinToPCMSK(_dataPin) |= (1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:390:70: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_dataPin) |= (1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:394:31: error: 'digitalPinToPCMSK' was not declared in this scope digitalPinToPCMSK(_dataPin) &= ~(1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:394:70: error: 'digitalPinToPCMSKbit' was not declared in this scope digitalPinToPCMSK(_dataPin) &= ~(1<<digitalPinToPCMSKbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:396:32: error: 'digitalPinToPCICR' was not declared in this scope digitalPinToPCICR(_dataPin) &= ~(1<<digitalPinToPCICRbit(_dataPin)); ^ /home/bmubuntu/Arduino/libraries/Arduino-SDI-12-master/SDI12.cpp:396:71: error: 'digitalPinToPCICRbit' was not declared in this scope digitalPinToPCICR(_dataPin) &= ~(1<<digitalPinToPCICRbit(_dataPin)); ^
I am a newbie to the arduino board. Please help me in the regard.
Thanks!