Loading...
  Show Posts
Pages: 1 2 [3] 4
31  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: February 01, 2013, 06:04:27 pm
As it turns out !!! is the culprit.
Quote
Actually all arduino mega1280 and mega2560 boards both past and present suffer from the !!! bootloader monitor 'bug'. Doesn't matter what version board or version of IDE, the only fix is to upgrade the bootloader to one that has fixes that and other shortcomings of that bootloader.

Lefty
 
 
 
 
32  Using Arduino / Storage / Re: If you have an arduino mega 2560 and a ds1307 could you test some code? on: February 01, 2013, 05:44:51 pm
Cool, Mystery solved.
 This is my first serious project in the arduino arena.  I am past the issue that brought me here.Thanks guys. I really needed an answer.I dont like a mystery, and the Serial.print statement stopping the compilation had me befuddled. I use "!!!" as a visual flag all of the time. Who woulda thunk it would bite me like this. But this only makes me wonder about other "easter eggs" might be in the mega. I am building a comercial product.
Quote
Doesn't matter what version board or version of IDE, the only fix is to upgrade the bootloader to one that has fixes that and other shortcomings of that bootloader.
Is there a list of the other shorcomings That I need to watch out for. And I will look into upgrading the bootloader.
Also.
Is there some way to set the runtime clock other than waiting 49 days for the clock to turn over. I need to certify that the rollover will be uneventfull.


just for giggles.


33  Using Arduino / Storage / Re: If you have an arduino mega 2560 and a ds1307 could you test some code? on: January 30, 2013, 09:15:35 am
Riva you are correct. Go figure that I would stumble upon the three bytes that will hang it. Thanks for the information. You sir, rock!!!
34  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 29, 2013, 06:58:06 pm
"crickets"
35  Using Arduino / Storage / If you have an arduino mega 2560 and a ds1307 could you test some code? on: January 25, 2013, 10:04:06 pm
I have some weird code that I would like someone else to run to see if you get the same results.
Code:
/*
* 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

Code:
/*
* 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.


Quote
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
36  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 25, 2013, 09:45:43 pm
Hello???
37  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 22, 2013, 12:35:50 pm
Strangely yes commenting out the serial print statement did work.
????
Any Idea as to why this should act so?
38  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 22, 2013, 12:22:44 pm
Code:
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
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
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
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
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
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
avrdude: stk500v2_command(): failed miserably to execute command 0x13
avrdude: stk500v2_paged_write: write command failed
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
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
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
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
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
39  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 22, 2013, 12:18:25 pm
Code:
/*
* 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

Code:
/*
* 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. Waiting now so I can quote it.
40  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 22, 2013, 12:07:51 pm
 Insert Quote
Code:

    if (command == 81 || command == 113) {      //If command = "Qq" RTC1307 Memory Functions
Quote
Why not make it easy to read this code?
Ok np but this is just temp code to get it running



  
Code:
         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
Quote
(What's) (with) (all) (the) (parentheses) (?)

Ok fixed

Code:
         if (magnum1 = magnum2){
Quote
Yeah, right. An assignment in the middle of an if statement...
Ah this is supposed to be
Code:
[code]
          if (magnum1 != magnum2){
[/code]

Code:

          Wire.write(zero);   // not sure what this is for
          Wire.write(0x20);         // not sure what this is doing
Quote
Don't you think you should figure these out?

Well being new to  the TWI I dont fully understand but I did find
    Issue 527 : Stream-based Wire library doesn't accept zero
and the fix  which I used.

and still after all of this I still cannot get this to upload unless I REM out the If statement.

41  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 21, 2013, 09:54:32 pm
Now enter maximum weirdness .
I took the older code and turned it into a couple of functions. I swear it worked last night very late. At work today this code froze at the uploading point and made  my serial programming port unreachable. I determined that the ReadRTCRAM() function is to blame. Does this make any sense to anybody
Code:
/*
* 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 magnum1 = 90;      // dummy var
int magnum2 = 9;      //  dummy var

int  state   = 96;     // State machine variable
int  counter = 255;      // Master counter variable

void setup() {
   randomSeed(4);
  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 == 81 || command == 113) {      //If command = "Qq" RTC1307 Memory Functions
      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 is just too strange
42  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 21, 2013, 08:07:52 am
The example code uses noise from an unused analog pin seed the random() function. I think that will be good enough. My application does not require TRUE random numbers. The repeating pattern would really be good enough.
43  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 20, 2013, 06:57:04 pm
Indeed
44  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 20, 2013, 05:55:47 pm
OK, Some great help so far I have gotten this much running
Code:
/*
* 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
int command = 0;       // This is the command char, in ascii form, sent from the serial port     
byte zero;
int  state   = 50;     // State machine variable
int  counter = 4;      // Master counter variable
int magnum1 = 99;      // dummy var
int magnum2 = 99;      //  dummy var

void setup() {
  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 == 81 || command == 113) {      //If command = "Qq" RTC1307 Memory Functions
      delay(100);     
      if (Serial.available()) {
        command = Serial.read();
        if (command == 49) {                //If command = "1"  load data to RAM
          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(magnum1);              // 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(magnum2);              // Write magic number after storing data
          Wire.endTransmission();

          Serial.println("Data Stored");
        }
        else if (command == 50) {      //If command = "2" Read data from RAM
          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");
        }
      } 
    }
  }
  command = 0;                 // reset command
  delay(100);
}
//********************************

now to figure out how to generate a random magic number
45  Using Arduino / Storage / Re: power outage recovery using DS1307 Real Time Clock on: January 16, 2013, 07:03:26 pm
Quote
You can only store 0-255 in a byte.
To store 0-65535 (which is where 750 fits in) you need to use an int.

Check!
Makes sense. I was chopping it up in hundreds tens and ones. So 65535  is represented by two bytes. Int is doubleprecision ..Highbyte & Lowbyte.... Word puts them together.....got it

 Thank you for help!
Pages: 1 2 [3] 4