EEPROM?

I have a sketch running on an Arduino Mega that I’d like to run on the Blackboard Artemis Nano. It uses EEPROM to store values, but I don’t see any mention of EEPROM in the Apollo3 specs. I just ordered my board (so I should have it in about a week), but I’d like to know if the EERPOM will be there for my sketch?

OK. I found the note announcing EEPROM support in Artemis (that seems to be dated 8.27.2019 - weird), and I loaded the board definition for nano into the IDE. Not surprisingly, the compiler throws several errors, however only 1 (so far) relating to EEPROM:

190719_2017_uMatic:178: error: ‘class ap3_EEPROM’ has no member named ‘length’

for (int i = 0 ; i < EEPROM.length() ; i++) {

^~~~~~

I was following the examples given in the Ardino reference (e.g. https://www.arduino.cc/en/Tutorial/EEPROMClear ) that use the function. However, I understand that the function is undocumented. Any idea if support for the function is planned for the future.

We’ve implemented flash based EEPROM on the Artemis (meaning you can easily store values and NVM stuff into flash). Sounds like you’ve found it. And as you’ve discovered, .length() was not implemented (I didn’t know that existed!) but can be added easily enough. I’ve started an issue over on the [Artemis core repo.](Add .length feature to EEPROM library · Issue #38 · sparkfun/Arduino_Apollo3 · GitHub)

Thanks, sparky! I really appreciate the help!

To bypass the .length() issue, I’ve decided to store my values as an object. The following code works fine on a Mega board,

/*
 * This is (mostly) just the EEPROM section of my current project
 */

#include <EEPROM.h>  //Library to use (or simulate the use of) EEPROM memory for non-volitile storage of values

// PINS
const int pinKeyStraight = 2; //TRS plug TIP
int pinKeyDit = 3; //TRS plug TIP
int pinKeyDah = 4; //TRS plug RING
const int pinXMIT = 6; //TRS plug TIP
const int pinPTT = 5; //TRS plug RING
const int pinOnboardLed = 13;
const int SDcrd = 53;


// KEYER MODE
const int Iambic = 0;
const int Iambic_Rev = 1;
const int Bug = 2;

// DEFAULT STATE with EEPROM Override <<<<<<<<<<<<<<<
int toneFreq = 600;
int toneVol = 2;
float k_WPM = 20;
float f_WPM = 20;
float wt = 5;
float rpt = 0;
float W_Factor = 5;
float T_Const = 80;
int Mode = Iambic;
int PTTwait = 5;
int testI = 0;
int CL = 6;
char call[] = "KK9ABC";

// Setup EEPROM storage
#define E_INIT 1023  
int EEloc = 0;

struct myObject{
int e_toneFreq;
int e_toneVol;
float e_k_WPM;
float e_f_WPM;
float e_wt;
float e_rpt;
float e_W_Factor;
float e_T_Const;
int e_Mode;
int e_PTTwait;
int e_testI;
};


int addr = 0;
bool unMute = true;
bool Stop = false;
bool Pause = false;
bool ps = false; // The switch to send a combination of letters as a prosign
bool cmnt = false; // The switch to indicate that the following text is a comment in a .TXT file 
bool PRACon = false;
bool LOADon = false;
bool PAUSEon = false;
bool SENDon = false;
bool NORMon = false;
int numi=0;
String numb;
String keyBuff = "";
String pauseBuff = "";
bool tuneState = false;
bool pracState = false;
bool firstPush = true;
bool endFile = false;
String SendHold; 
float dit;
float element;
float k_const=T_Const/100; //Adjustment needed for timing variance introduced by keyer hardware
float f_element; //(Farnsworth) Character delay time


void setup() {
  loadSettings(); //Loads keyer settings from EEPROM/default
}

void loop() {
  // this is where the magic happens
}


void loadSettings() {
  int CL; //Call Length fixed
  int cl; //Call Length variable
  int ii;
  char charHold[1];

  myObject keyerSettings;
  if (EEPROM.read(E_INIT) == 'T'){
  }else{
    saveSettings();
    EEPROM.put(E_INIT, 'T');    
  } 
  EEPROM.get(1, keyerSettings); 
  toneFreq = keyerSettings.e_toneFreq;
  toneVol = keyerSettings.e_toneVol;
  k_WPM = keyerSettings.e_k_WPM;
  f_WPM = keyerSettings.e_f_WPM;
  wt = keyerSettings.e_wt;
  rpt = keyerSettings.e_rpt;
  W_Factor = keyerSettings.e_W_Factor;
  T_Const = keyerSettings.e_T_Const;
  Mode = keyerSettings.e_Mode;
  PTTwait = keyerSettings.e_PTTwait;
  testI = keyerSettings.e_testI;
  EEPROM.get(200, call);
}

void saveSettings() {
  int CL; //Call Length
  int i;
  int ii;
  char charHold[1];
  myObject keyerSettings;
  keyerSettings.e_toneFreq = toneFreq;
  keyerSettings.e_toneVol = toneVol;
  keyerSettings.e_k_WPM = k_WPM;
  keyerSettings.e_f_WPM = f_WPM;
  keyerSettings.e_wt = wt;
  keyerSettings.e_rpt = rpt;
  keyerSettings.e_W_Factor = W_Factor;
  keyerSettings.e_T_Const = T_Const;
  keyerSettings.e_Mode = Mode;
  keyerSettings.e_PTTwait = PTTwait;
  keyerSettings.e_testI = testI;
  EEPROM.put(1, keyerSettings); 
  EEPROM.put(200, call);
}

but throws the following errors on Artemis Nano

Arduino: 1.8.9 (Windows 7), Board: "SparkFun BlackBoard Artemis Nano, 115200, SparkFun Variable Loader (Recommended)"

R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino: In function 'void loadSettings()':
uMatic_Artemis_EEPROM_Exp:107:30: error: no matching function for call to 'ap3_EEPROM::get(int, myObject&)'
   EEPROM.get(1, keyerSettings);
                              ^
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:73:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint8_t&)'
   void get(uint16_t eepromLocation, uint8_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:73:8: note:   no known conversion for argument 2 from 'myObject' to 'uint8_t&' {aka 'unsigned char&'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:76:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint16_t&)'
   void get(uint16_t eepromLocation, uint16_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:76:8: note:   no known conversion for argument 2 from 'myObject' to 'uint16_t&' {aka 'short unsigned int&'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:77:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int16_t&)'
   void get(uint16_t eepromLocation, int16_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:77:8: note:   no known conversion for argument 2 from 'myObject' to 'int16_t&' {aka 'short int&'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:80:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int&)'
   void get(uint16_t eepromLocation, int &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:80:8: note:   no known conversion for argument 2 from 'myObject' to 'int&'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:81:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, unsigned int&)'
   void get(uint16_t eepromLocation, unsigned int &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:81:8: note:   no known conversion for argument 2 from 'myObject' to 'unsigned int&'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:82:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int32_t&)'
   void get(uint16_t eepromLocation, int32_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:82:8: note:   no known conversion for argument 2 from 'myObject' to 'int32_t&' {aka 'long int&'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:83:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint32_t&)'
   void get(uint16_t eepromLocation, uint32_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:83:8: note:   no known conversion for argument 2 from 'myObject' to 'uint32_t&' {aka 'long unsigned int&'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:84:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, float&)'
   void get(uint16_t eepromLocation, float &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:84:8: note:   no known conversion for argument 2 from 'myObject' to 'float&'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:87:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, double&)'
   void get(uint16_t eepromLocation, double &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:87:8: note:   no known conversion for argument 2 from 'myObject' to 'double&'
uMatic_Artemis_EEPROM_Exp:119:23: error: no matching function for call to 'get(int, char [7])'
   EEPROM.get(200, call);
                       ^
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:73:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint8_t&)' <near match>
   void get(uint16_t eepromLocation, uint8_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:73:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'uint8_t' {aka 'unsigned char'} [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(uint8_t)((char*)(& call))' to 'uint8_t&' {aka 'unsigned char&'}
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:76:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint16_t&)' <near match>
   void get(uint16_t eepromLocation, uint16_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:76:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'uint16_t' {aka 'short unsigned int'} [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(uint16_t)((char*)(& call))' to 'uint16_t&' {aka 'short unsigned int&'}
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:77:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int16_t&)' <near match>
   void get(uint16_t eepromLocation, int16_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:77:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'int16_t' {aka 'short int'} [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(int16_t)((char*)(& call))' to 'int16_t&' {aka 'short int&'}
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:80:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int&)' <near match>
   void get(uint16_t eepromLocation, int &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:80:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'int' [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(int)((char*)(& call))' to 'int&'
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:81:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, unsigned int&)' <near match>
   void get(uint16_t eepromLocation, unsigned int &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:81:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'unsigned int' [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(unsigned int)((char*)(& call))' to 'unsigned int&'
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:82:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, int32_t&)' <near match>
   void get(uint16_t eepromLocation, int32_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:82:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'int32_t' {aka 'long int'} [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(int32_t)((char*)(& call))' to 'int32_t&' {aka 'long int&'}
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:83:8: note: candidate: 'void ap3_EEPROM::get(uint16_t, uint32_t&)' <near match>
   void get(uint16_t eepromLocation, uint32_t &dataToGet);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:83:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:119:19: error: invalid conversion from 'char*' to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
   EEPROM.get(200, call);
                   ^~~~
uMatic_Artemis_EEPROM_Exp:119:19: error: cannot bind rvalue '(uint32_t)((char*)(& call))' to 'uint32_t&' {aka 'long unsigned int&'}
R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino: In function 'void saveSettings()':
uMatic_Artemis_EEPROM_Exp:139:30: error: no matching function for call to 'ap3_EEPROM::put(int, myObject&)'
   EEPROM.put(1, keyerSettings);
                              ^
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:92:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint8_t)'
   void put(uint16_t eepromLocation, uint8_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:92:8: note:   no known conversion for argument 2 from 'myObject' to 'uint8_t' {aka 'unsigned char'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:95:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint16_t)'
   void put(uint16_t eepromLocation, uint16_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:95:8: note:   no known conversion for argument 2 from 'myObject' to 'uint16_t' {aka 'short unsigned int'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:96:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int16_t)'
   void put(uint16_t eepromLocation, int16_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:96:8: note:   no known conversion for argument 2 from 'myObject' to 'int16_t' {aka 'short int'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:99:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int)'
   void put(uint16_t eepromLocation, int dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:99:8: note:   no known conversion for argument 2 from 'myObject' to 'int'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:100:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, unsigned int)'
   void put(uint16_t eepromLocation, unsigned int dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:100:8: note:   no known conversion for argument 2 from 'myObject' to 'unsigned int'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:101:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int32_t)'
   void put(uint16_t eepromLocation, int32_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:101:8: note:   no known conversion for argument 2 from 'myObject' to 'int32_t' {aka 'long int'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:102:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint32_t)'
   void put(uint16_t eepromLocation, uint32_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:102:8: note:   no known conversion for argument 2 from 'myObject' to 'uint32_t' {aka 'long unsigned int'}
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:103:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, float)'
   void put(uint16_t eepromLocation, float dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:103:8: note:   no known conversion for argument 2 from 'myObject' to 'float'
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:106:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, double)'
   void put(uint16_t eepromLocation, double dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:106:8: note:   no known conversion for argument 2 from 'myObject' to 'double'
uMatic_Artemis_EEPROM_Exp:140:23: error: no matching function for call to 'put(int, char [7])'
   EEPROM.put(200, call);
                       ^
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:92:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint8_t)' <near match>
   void put(uint16_t eepromLocation, uint8_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:92:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'uint8_t' {aka 'unsigned char'} [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:95:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint16_t)' <near match>
   void put(uint16_t eepromLocation, uint16_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:95:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'uint16_t' {aka 'short unsigned int'} [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:96:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int16_t)' <near match>
   void put(uint16_t eepromLocation, int16_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:96:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'int16_t' {aka 'short int'} [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:99:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int)' <near match>
   void put(uint16_t eepromLocation, int dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:99:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'int' [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:100:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, unsigned int)' <near match>
   void put(uint16_t eepromLocation, unsigned int dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:100:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'unsigned int' [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:101:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, int32_t)' <near match>
   void put(uint16_t eepromLocation, int32_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:101:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'int32_t' {aka 'long int'} [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
In file included from R:\Documents\Documents\Arduino\uMatic_Artemis_EEPROM_Exp\uMatic_Artemis_EEPROM_Exp.ino:3:
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:102:8: note: candidate: 'void ap3_EEPROM::put(uint16_t, uint32_t)' <near match>
   void put(uint16_t eepromLocation, uint32_t dataToWrite);
        ^~~
C:\Users\Rick\AppData\Local\Arduino15\packages\SparkFun\hardware\apollo3\1.0.6\libraries\EEPROM\src/EEPROM.h:102:8: note:   conversion of argument 2 would be ill-formed:
uMatic_Artemis_EEPROM_Exp:140:19: error: invalid conversion from 'char*' to 'uint32_t' {aka 'long unsigned int'} [-fpermissive]
   EEPROM.put(200, call);
                   ^~~~
exit status 1
no matching function for call to 'ap3_EEPROM::get(int, myObject&)'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I’m just a hacker, so I’ll readily admit that I may have defined my object in a non-standard way. If there is any way you can see that I could change my object, or my use of EEPROM commands, so that the above code works on all Arduino boards, then I’ll happily make those changes.