I have some weird code that I would like someone else to run to see if you get the same results.
/*
* Q(1-2) - (Q1) Memory Load (Q2) RTC - Memory Read
*/
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
// Global Variables
long randNumber;
int command = 0; // This is the command char, in ascii form, sent from the serial port
byte zero;
int state = 96; // State machine variable
int counter = 255; // Master counter variable
int magnum1 = 90; // dummy var
int magnum2 = 9; // dummy var
void setup() {
randomSeed(analogRead(0));
Wire.begin(); // join i2c bus
Serial.begin(57600);
zero=0x00; // not sure what this is for
}
void loop() {
if (Serial.available()) { // Look for char in serial que and process if found
command = Serial.read();
if (command == 'Q' || command == 'q') {
delay(100);
if (Serial.available()) {
command = Serial.read();
if (command == 49) { //If command = "1" load data to RAM
WriteRTCRAM();
}
else if (command == 50) { //If command = "2" Read data from RAM
ReadRTCRAM();
}
}
}
}
command = 0; // reset command
delay(100);
}
//********************************
void WriteRTCRAM(){
randNumber = random(250);
Serial.println(randNumber);
Wire.beginTransmission(DS1307_I2C_ADDRESS); // 255 will be the init value and 0 will be considered
Wire.write(32); // Set the register pointer to before data location
Wire.write(randNumber); // Write magic number before storing data
Wire.write(state); // Store State variable
Wire.write(counter >> 8); // writes the high byte of counter
Wire.write(counter & 0xFF); // writes the low byte of counter
Wire.write(randNumber); // Write magic number after storing data
Wire.endTransmission();
Serial.println("Data Stored");
}
void ReadRTCRAM(){
Serial.println("Begin Read");
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(zero); // not sure what this is for
Wire.endTransmission();
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0x20); // not sure what this is doing
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 32); // Set pointer to the first byte of data
magnum1 = Wire.read(); //magic number written before data write
state = Wire.read(); // Read state data
counter = Wire.read() << 8 + Wire.read(); // Read first byte shift left read second byte
magnum2 = Wire.read(); // Read Magic number written after data write
Serial.print(" Magic Number = ");
Serial.println(magnum1);
Serial.print(" State = ");
Serial.println(state);
Serial.print(" Counter = ");
Serial.println(counter);
Serial.print(" Magic Number = ");
Serial.println(magnum2);
Serial.println(" RTC1307 Dump end");
if (magnum1 != magnum2){
Serial.print (" Write Error!!!");
}
}
This compiles but will not upload
/*
* Q(1-2) - (Q1) Memory Load (Q2) RTC - Memory Read
*/
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68 // This is the I2C address
// Global Variables
long randNumber;
int command = 0; // This is the command char, in ascii form, sent from the serial port
byte zero;
int state = 96; // State machine variable
int counter = 255; // Master counter variable
int magnum1 = 90; // dummy var
int magnum2 = 9; // dummy var
void setup() {
randomSeed(analogRead(0));
Wire.begin(); // join i2c bus
Serial.begin(57600);
zero=0x00; // not sure what this is for
}
void loop() {
if (Serial.available()) { // Look for char in serial que and process if found
command = Serial.read();
if (command == 'Q' || command == 'q') {
delay(100);
if (Serial.available()) {
command = Serial.read();
if (command == 49) { //If command = "1" load data to RAM
WriteRTCRAM();
}
else if (command == 50) { //If command = "2" Read data from RAM
ReadRTCRAM();
}
}
}
}
command = 0; // reset command
delay(100);
}
//********************************
void WriteRTCRAM(){
randNumber = random(250);
Serial.println(randNumber);
Wire.beginTransmission(DS1307_I2C_ADDRESS); // 255 will be the init value and 0 will be considered
Wire.write(32); // Set the register pointer to before data location
Wire.write(randNumber); // Write magic number before storing data
Wire.write(state); // Store State variable
Wire.write(counter >> 8); // writes the high byte of counter
Wire.write(counter & 0xFF); // writes the low byte of counter
Wire.write(randNumber); // Write magic number after storing data
Wire.endTransmission();
Serial.println("Data Stored");
}
void ReadRTCRAM(){
Serial.println("Begin Read");
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(zero); // not sure what this is for
Wire.endTransmission();
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0x20); // not sure what this is doing
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 32); // Set pointer to the first byte of data
magnum1 = Wire.read(); //magic number written before data write
state = Wire.read(); // Read state data
counter = Wire.read() << 8 + Wire.read(); // Read first byte shift left read second byte
magnum2 = Wire.read(); // Read Magic number written after data write
Serial.print(" Magic Number = ");
Serial.println(magnum1);
Serial.print(" State = ");
Serial.println(state);
Serial.print(" Counter = ");
Serial.println(counter);
Serial.print(" Magic Number = ");
Serial.println(magnum2);
Serial.println(" RTC1307 Dump end");
if (magnum1 != magnum2){
// Serial.print (" Write Error!!!");
}
}
This compiles and uploads
No error code green progress bar fills up to the last 3 white spaces and holds, to the left it says uploading.
Eventually I get a time out message.
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer