I'm writing a simple EEPROM test program on an arduino Mega to test the storage of a structure containing a few integers and booleans.
I encounter this behaviour:
The output from Serial.print provokes a serial communication window arrest. Any ideas what could cause this?
#include <EEPROM.h>
int doodpunt;
int ahDoodpunt;
boolean ahWaVolttabelOpgeslagen=false;
boolean ahGradenVolttabelOpgeslagen=false;
int onthouAddr = 0;
int versie;
typedef struct {
int ahDoodpunt;
int doodpunt;
int versie;
boolean ahWaVolttabelOpgeslagen;
boolean ahGradenVolttabelOpgeslagen;
}onthou_type;
onthou_type onthou ;
boolean EEPROMTest=true;
void setup() {
// put your setup code here, to run once:
Serial.begin(57600); Serial.println("");
if (EEPROMTest) {
leesOnthouUitEeprom(); // read data stored in previous sessions
// change some data
ahDoodpunt=99;
doodpunt=88;
ahWaVolttabelOpgeslagen=true;
ahGradenVolttabelOpgeslagen=true;
Serial.println("Gegevens gewijzigd=> nu hierna wegschrijven");
schrijfOnthouNrEeprom;// write to EEPROM
Serial.println("en herinlezen:");
leesOnthouUitEeprom(); // read it back to check
exit(0);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
void leesOnthouUitEeprom(){ // read the data from Eeprom
EEPROM.get(onthouAddr, onthou);
doodpunt=onthou.doodpunt;
ahDoodpunt=onthou.ahDoodpunt;
ahWaVolttabelOpgeslagen=onthou.ahWaVolttabelOpgeslagen;
ahGradenVolttabelOpgeslagen=onthou.ahGradenVolttabelOpgeslagen;
Serial.println("eeprom onthou is read:");
toononthouEEPROM();
}
void schrijfOnthouNrEeprom(){ // write the structure to Eeprom
onthou.doodpunt=doodpunt;
onthou.ahDoodpunt=ahDoodpunt;
onthou.versie=versie;
onthou.ahWaVolttabelOpgeslagen=ahWaVolttabelOpgeslagen;
onthou.ahGradenVolttabelOpgeslagen=ahGradenVolttabelOpgeslagen;
EEPROM.put(onthouAddr, onthou);
toononthouEEPROM();
Serial.println(" Eeprom written");
delay(10000);
}
void toononthouEEPROM(){ // show the content op Eeprom
Serial.print(" EEPROM doodpunt=");Serial.println(onthou.doodpunt);
Serial.print(" EEPROM ahdoodpunt=");Serial.println(onthou.ahDoodpunt);
Serial.print(" EEPROM versie=");Serial.println(onthou.versie);
Serial.print(" EEPROM ahGr="); // this stops the output!!
Serial.println(onthou.ahGradenVolttabelOpgeslagen);
Serial.print(" EEPROM ahWaVolttabelOpgeslagen=");
Serial.println(onthou.ahGradenVolttabelOpgeslagen);
}
// ...
eeprom onthou is read:
EEPROM doodpunt=-333
EEPROM ahdoodpunt=0
EEPROM versie=29
EEPROM ahGr=0
EEPROM ahWaVolttabelOpgeslagen=0
Gegevens gewijzigd=> nu hierna wegschrijven
en herinlezen:
eeprom onthou is read:
EEPROM doodpunt=-333
EEPROM ahdoodpunt=0
EEPROM ver