Strange Errors

Hello, I am trying to parse some data from the serial monitor for my GPS Receiver using the posted code. I keep getting this error and I’m not sure what to do with it. Any input is greatly appreciated, thank you.

Arduino: 1.8.3 (Windows 10), Board: “Adafruit Feather M0”

In file included from R:\Engineering\Internship 2017\Alex\IDE\Parsing\Parsing.ino:14:0:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\NewSoftSerial/NewSoftSerial.h:71:16: error: conflicting return type specified for ‘virtual void NewSoftSerial::write(uint8_t)’

virtual void write(uint8_t byte);

^

In file included from C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/Stream.h:26:0,

from C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/HardwareSerial.h:24,

from C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/Arduino.h:78,

from sketch\Parsing.ino.cpp:1:

C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/Print.h:47:20: error: overriding ‘virtual size_t Print::write(uint8_t)’

virtual size_t write(uint8_t) = 0;

^

exit status 1
Error compiling for board Adafruit Feather M0.

This report would have more information with
“Show verbose output during compilation”
option enabled in File → Preferences.

// Test code for Adafruit Flora GPS modules

     
#include <Adafruit_GPS.h>
#include <NewSoftSerial.h>
Adafruit_GPS GPS(&Serial1);
     
// Set GPSECHO to 'false' to turn off echoing the GPS data to the Serial console
// Set to 'true' if you want to debug and listen to the raw GPS sentences
#define GPSECHO false
     
// this keeps track of whether we're using the interrupt
// off by default!
boolean usingInterrupt = false;
     
void setup()
{
  // connect at 115200 so we can read the GPS fast enough and echo without dropping chars
  // also spit it out
  Serial.begin(115200);
  Serial.println("Adafruit GPS library basic test!");
     
  // 9600 NMEA is the default baud rate for Adafruit MTK GPS's- some use 4800
  GPS.begin(9600);
  // uncomment this line to turn on RMC (recommended minimum) and GGA (fix data) including altitude
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  // uncomment this line to turn on only the "minimum recommended" data
  //GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY);
  // For parsing data, we don't suggest using anything but either RMC only or RMC+GGA since
  // the parser doesn't care about other sentences at this time
  // Set the update rate
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); // 1 Hz update rate
  // For the parsing code to work nicely and have time to sort thru the data, and
  // print it out we don't suggest using anything higher than 1 Hz
     
  // Request updates on antenna status, comment out to keep quiet
  GPS.sendCommand(PGCMD_ANTENNA);

  delay(1000);
  // Ask for firmware version
  Serial1.println(PMTK_Q_RELEASE);
}
     
     
     
uint32_t timer = millis();
void loop() // run over and over again
{
  // read data from the GPS in the 'main loop'
  char c = GPS.read();
  // if you want to debug, this is a good time to do it!
  if (GPSECHO)
    if (c) Serial.print(c);
  // if a sentence is received, we can check the checksum, parse it...
  if (GPS.newNMEAreceived()) {
    // a tricky thing here is if we print the NMEA sentence, or data
    // we end up not listening and catching other sentences!
    // so be very wary if using OUTPUT_ALLDATA and trytng to print out data
    Serial.println(GPS.lastNMEA()); // this also sets the newNMEAreceived() flag to false
    if (!GPS.parse(GPS.lastNMEA())) // this also sets the newNMEAreceived() flag to false
      return; // we can fail to parse a sentence in which case we should just wait for another
  }
  // if millis() or timer wraps around, we'll just reset it
  if (timer > millis()) timer = millis();
     
  // approximately every 2 seconds or so, print out the current stats
  if (millis() - timer > 2000) {
    timer = millis(); // reset the timer
    Serial.print("\nTime: ");
    Serial.print(GPS.hour, DEC); Serial.print(':');
    Serial.print(GPS.minute, DEC); Serial.print(':');
    Serial.print(GPS.seconds, DEC); Serial.print('.');
    Serial.println(GPS.milliseconds);
    Serial.print("Date: ");
    Serial.print(GPS.day, DEC); Serial.print('/');
    Serial.print(GPS.month, DEC); Serial.print("/20");
    Serial.println(GPS.year, DEC);
    Serial.print("Fix: "); Serial.print((int)GPS.fix);
    Serial.print(" quality: "); Serial.println((int)GPS.fixquality);
    if (GPS.fix) {
      Serial.print("Location: ");
      Serial.print(GPS.latitude, 4); Serial.print(GPS.lat);
      Serial.print(", ");
      Serial.print(GPS.longitude, 4); Serial.println(GPS.lon);
      Serial.print("Speed (knots): "); Serial.println(GPS.speed);
      Serial.print("Angle: "); Serial.println(GPS.angle);
      Serial.print("Altitude: "); Serial.println(GPS.altitude);
      Serial.print("Satellites: "); Serial.println((int)GPS.satellites);
    }
  }
}

Arduino: 1.8.3 (Windows 10), Board: "Adafruit Feather M0"

In file included from R:\Engineering\Internship 2017\Alex\IDE\Parsing\Parsing.ino:14:0:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\NewSoftSerial/NewSoftSerial.h:71:16: error: conflicting return type specified for 'virtual void NewSoftSerial::write(uint8_t)'

Why are you trying to use NewSoftSerial with post 1.0.0 version of the IDE?

PaulS:
Why are you trying to use NewSoftSerial with post 1.0.0 version of the IDE?

I’m new to using libraries. Do you know of a newer version that would serve the same function?

Do you know of a newer version that would serve the same function?

SoftwareSerial, which ships with the IDE.

I get even more errors when I try to use that

abeglan:
I get even more errors when I try to use that

Let's see the code and the errors

UKHeliBob:
Let’s see the code and the errors

The code stays the same apart from instead of “#include <NewSoftSerial.h>” it’s “#include <SoftwareSerial.h>”

Errors:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:260:2: error: #error This version of SoftwareSerial supports only 20, 16 and 8MHz processors

#error This version of SoftwareSerial supports only 20, 16 and 8MHz processors

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘bool SoftwareSerial::listen()’:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:316:23: error: ‘SREG’ was not declared in this scope

uint8_t oldSREG = SREG;

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:317:9: error: ‘cli’ was not declared in this scope

cli();

^

In file included from C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/delay.h:27:0,

from C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\cores\arduino/Arduino.h:81,

from \DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:43:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘void SoftwareSerial::setTX(uint8_t)’:

C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\variants\arduino_zero/variant.h:62:82: error: invalid conversion from ‘PortGroup*’ to ‘uint8_t {aka unsigned char}’ [-fpermissive]

#define digitalPinToPort(P) ( &(PORT->Group[g_APinDescription[P].ulPort]) )

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:492:18: note: in expansion of macro ‘digitalPinToPort’

uint8_t port = digitalPinToPort(tx);

^

C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\variants\arduino_zero/variant.h:65:44: error: base operand of ‘->’ is not a pointer

#define portOutputRegister(port) ( &(port->OUT.reg) )

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:493:27: note: in expansion of macro ‘portOutputRegister’

_transmitPortRegister = portOutputRegister(port);

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘void SoftwareSerial::setRX(uint8_t)’:

C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\variants\arduino_zero/variant.h:62:82: error: invalid conversion from ‘PortGroup*’ to ‘uint8_t {aka unsigned char}’ [-fpermissive]

#define digitalPinToPort(P) ( &(PORT->Group[g_APinDescription[P].ulPort]) )

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:503:18: note: in expansion of macro ‘digitalPinToPort’

uint8_t port = digitalPinToPort(rx);

^

C:\Users\alexander.beglan\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.0.19\variants\arduino_zero/variant.h:66:44: error: base operand of ‘->’ is not a pointer

#define portInputRegister(port) ( &(port->IN.reg) )

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:504:26: note: in expansion of macro ‘portInputRegister’

_receivePortRegister = portInputRegister(port);

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘void SoftwareSerial::begin(long int)’:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:515:31: error: ‘table’ was not declared in this scope

for (unsigned i=0; i<sizeof(table)/sizeof(table[0]); ++i)

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:531:38: error: ‘digitalPinToPCICR’ was not declared in this scope

if (digitalPinToPCICR(_receivePin))

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:533:78: error: ‘digitalPinToPCICRbit’ was not declared in this scope

*digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:533:79: error: ‘_BV’ was not declared in this scope

*digitalPinToPCICR(_receivePin) |= _BV(digitalPinToPCICRbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:534:37: error: ‘digitalPinToPCMSK’ was not declared in this scope

*digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:534:78: error: ‘digitalPinToPCMSKbit’ was not declared in this scope

*digitalPinToPCMSK(_receivePin) |= _BV(digitalPinToPCMSKbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘void SoftwareSerial::end()’:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:549:36: error: ‘digitalPinToPCMSK’ was not declared in this scope

if (digitalPinToPCMSK(_receivePin))

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:550:77: error: ‘digitalPinToPCMSKbit’ was not declared in this scope

*digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:550:78: error: ‘_BV’ was not declared in this scope

*digitalPinToPCMSK(_receivePin) &= ~_BV(digitalPinToPCMSKbit(_receivePin));

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘virtual size_t SoftwareSerial::write(uint8_t)’:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:585:21: error: ‘SREG’ was not declared in this scope

uint8_t oldSREG = SREG;

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:586:7: error: ‘cli’ was not declared in this scope

cli(); // turn off interrupts for a clean txmit

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:590:26: error: ‘XMIT_START_ADJUSTMENT’ was not declared in this scope

tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT);

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp: In member function ‘virtual void SoftwareSerial::flush()’:

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:633:21: error: ‘SREG’ was not declared in this scope

uint8_t oldSREG = SREG;

^

\DOMAIN01\RedirectedFolders\alexander.beglan\My Documents\Arduino\libraries\SoftwareSerial\SoftwareSerial.cpp:634:7: error: ‘cli’ was not declared in this scope

cli();

^

exit status 1
Error compiling for board Adafruit Feather M0.

Is there any difference with your other thread?

sterretje:
Is there any difference with your other thread?

No, it's the same problem I just made mistake posting that thread and figured I should post the problem properly

I doubt the M0 has a SREG; that's AVR (e.g. for the Uno) specific to my knowledge.

sterretje:
I doubt the M0 has a SREG; that's AVR (e.g. for the Uno) specific to my knowledge.

I don't know what to do with that

abeglan:
I don't know what to do with that

I do not believe that ARM processors support SoftwareSerial.

Ah, there is some hope; from the SAMD21 datasheet

The series provide one full-speed USB 2.0 embedded host and device
interface; up to six Serial Communication Modules (SERCOM) that each can be configured to act as an USART, UART, SPI, I2C up to 3.4MHz, ...

And that's how far I can help you.

Just get rid of that #include <whichever-soft-serial.h> and the sketch compiles fine.

Instructions for configuring an additional Serial port: