and here's the setup code
// b_setup
void setup(){
pinMode (ssOutput, OUTPUT); // need for SPI
pinMode (ss0, OUTPUT);
digitalWrite (ss0, HIGH);
pinMode (ss1, OUTPUT);
digitalWrite (ss1, HIGH);
pinMode (ss2, OUTPUT);
digitalWrite (ss2, HIGH);
pinMode (ss3, OUTPUT);
digitalWrite (ss3, HIGH);
pinMode (button0, INPUT); // internal pullup in IDE 1.0.1
digitalWrite (button0, HIGH);
pinMode (button1, INPUT);
digitalWrite (button1, HIGH);
// turn on serial port
Serial.begin(115200);
Serial.println("");
Serial.println ("start setup ");
// turn on SPI port
SPI.begin();
/* set up MAX7219 registers */
// loop thru the array from current start position and send it out
// do it in 4 passes, one for each MAX7219, LSB out first
// clear the MAX7219 digit registers
digitRegister = 0x01; // digit0, up to 0x80 for digit7
for (x = 0; x<8; x=x+1){
digitalWrite (ss0, LOW);
SPI.transfer (digitRegister);
SPI.transfer(0);
digitalWrite (ss0, HIGH);
digitRegister = digitRegister+1;
}
// next digit
digitRegister = 0x01; // digit0, up to 0x80 for digit7
for (x = 0; x<8; x=x+1){
digitalWrite (ss1, LOW);
SPI.transfer (digitRegister);
SPI.transfer (0);
digitalWrite (ss1, HIGH);
digitRegister = digitRegister+1;
}
// next digit
digitRegister = 0x01; // digit0, up to 0x08 for digit7
for (x = 0; x<8; x=x+1){
digitalWrite (ss2, LOW);
SPI.transfer (digitRegister);
SPI.transfer(0);
digitalWrite (ss2, HIGH);
digitRegister = digitRegister+1;
}
// next digit
digitRegister = 0x01; // digit0, up to 0x08 for digit7
for (x = 0; x<8; x=x+1){
digitalWrite (ss3, LOW);
SPI.transfer (digitRegister);
SPI.transfer(0);
digitalWrite (ss3, HIGH);
digitRegister = digitRegister+1;
}
// decode to No decode mode
digitalWrite (ss0, LOW);
SPI.transfer (decode_mode);
SPI.transfer (0x00);
digitalWrite (ss0, HIGH);
digitalWrite (ss1, LOW);
SPI.transfer (decode_mode);
SPI.transfer (0x00);
digitalWrite (ss1, HIGH);
digitalWrite (ss2, LOW);
SPI.transfer (decode_mode);
SPI.transfer (0x00);
digitalWrite (ss2, HIGH);
digitalWrite (ss3, LOW);
SPI.transfer (decode_mode);
SPI.transfer (0x00);
digitalWrite (ss3, HIGH);
// intensity to high level
digitalWrite (ss0, LOW);
SPI.transfer (intensity_level);
SPI.transfer (0x0f);
digitalWrite (ss0, HIGH);
digitalWrite (ss1, LOW);
SPI.transfer (intensity_level);
SPI.transfer (0x0f);
digitalWrite (ss1, HIGH);
digitalWrite (ss2, LOW);
SPI.transfer (intensity_level);
SPI.transfer (0x0f);
digitalWrite (ss2, HIGH);
digitalWrite (ss3, LOW);
SPI.transfer (intensity_level);
SPI.transfer (0x0f);
digitalWrite (ss3, HIGH);
// set scan limit to all 8 columns
digitalWrite (ss0, LOW);
SPI.transfer (scan_limit);
SPI.transfer (0x07);
digitalWrite (ss0, HIGH);
digitalWrite (ss1, LOW);
SPI.transfer (scan_limit);
SPI.transfer (0x07);
digitalWrite (ss1, HIGH);
digitalWrite (ss2, LOW);
SPI.transfer (scan_limit);
SPI.transfer (0x07);
digitalWrite (ss2, HIGH);
digitalWrite (ss3, LOW);
SPI.transfer (scan_limit);
SPI.transfer (0x07);
digitalWrite (ss3, HIGH);
// dispay test On
digitalWrite (ss0, LOW);
SPI.transfer (display_test);
SPI.transfer (0x01);
digitalWrite (ss0, HIGH);
delay(50);
digitalWrite (ss1, LOW);
SPI.transfer (display_test);
SPI.transfer (0x01);
digitalWrite (ss1, HIGH);
delay(50);
digitalWrite (ss2, LOW);
SPI.transfer (display_test);
SPI.transfer (0x01);
digitalWrite (ss2, HIGH);
delay(50);
digitalWrite (ss3, LOW);
SPI.transfer (display_test);
SPI.transfer (0x01);
digitalWrite (ss3, HIGH);
delay(50);
// dispay test to normal
digitalWrite (ss0, LOW);
SPI.transfer (display_test);
SPI.transfer (0x00);
digitalWrite (ss0, HIGH);
delay(50);
digitalWrite (ss1, LOW);
SPI.transfer (display_test);
SPI.transfer (0x00);
digitalWrite (ss1, HIGH);
delay(50);
digitalWrite (ss2, LOW);
SPI.transfer (display_test);
SPI.transfer (0x00);
digitalWrite (ss2, HIGH);
delay(50);
digitalWrite (ss3, LOW);
SPI.transfer (display_test);
SPI.transfer (0x00);
digitalWrite (ss3, HIGH);
delay(50);
// shutdown to Normal mode
digitalWrite (ss0, LOW);
SPI.transfer (shutdown_normal);
SPI.transfer (0x01);
digitalWrite (ss0, HIGH);
digitalWrite (ss1, LOW);
SPI.transfer (shutdown_normal);
SPI.transfer (0x01);
digitalWrite (ss1, HIGH);
digitalWrite (ss2, LOW);
SPI.transfer (shutdown_normal);
SPI.transfer (0x01);
digitalWrite (ss2, HIGH);
digitalWrite (ss3, LOW);
SPI.transfer (shutdown_normal);
SPI.transfer (0x01);
digitalWrite (ss3, HIGH);
// clear out the displayArray
for (x=0; x<(arraySize+1); x=x+1){
displayArray[x] = 0;
}
Serial.print ("EEPROM 0, 1 = ");
// check if loading from EEPROM
lowEEPROM = EEPROM.read(0);
// Serial.print(lowEEPROM );
highEEPROM = EEPROM.read(1);
// Serial.println (highEEPROM );
EEPROMend = (highEEPROM<<8) + lowEEPROM;
// EEPROMend = EEPROMend + lowEEPROM;
Serial.print ("EEPROMend = ");
Serial.println (EEPROMend, HEX);
if (EEPROMend == 0 || EEPROMend == 0xffff){
// do nothing, normal startup waiting for data via serial port
}
else {
// EEPROM had been previously loaded, start showing it
dataEntry = Memory;
displayEnd = EEPROMend;
for (x = 2; x<EEPROMend +1; x=x+1){
Serial.print ("Writing array address ");
Serial.print (x, HEX);
displayArray[x-1] = EEPROM.read(x);
Serial.print (" ");
Serial.println (displayArray[x-1]);
}
}
// Serial.print ("dataEntry source (1=PC, 2=EEPROM)" );
// Serial.println (dataEntry);
// Serial.println("Setup");
} // end setup
void loop(){}
presetup with
void setup(){}
void loop(){}
tacked on the end compiles fine.
I'm thinking it has to do with something towards the end where I was messing with the EEPROM address. I can't seem to undo anything to fix it tho.