Okay, so I'm brand new to EEPROM and I have a small program that's meant to read the data off one chip, and then turn around and write it to the next chip that I connect. I've written some check routines into the program, and it seems that only some of the bytes I'm entering are writing properly. I'm very unfamiliar with EEPROM interfaces and the onewire library, so it's possible I'm just doing something totally wrong. Any help getting an accurate copy of this chip would be appreciated. I've included my code and its output below, and I'm using a pair of DS2433 chips wired to pin 10 and ground, with a pullup resistor to the +5V from my arduino on the input pin.

The original example sketch had it set to pin 6, but I was having trouble reading values on that, and changed to 10 which gave me valid data. I can give 12 and 14 a try if you think it will help. I'll try removing the serial statements as well, I guess I didn't consider the space they'd be taking up, I do have a lot.

I'm running Arduino 1.0 as my IDE, I don't have the computer in front of me right now, so I'm not sure what build it is or anything more specific at the moment

I should also probably clarify that I'm not trying to write to the Arduino's EEPROM, but the DS2433.

The original example sketch had it set to pin 6, but I was having trouble reading values on that, and changed to 10 which gave me valid data. I can give 12 and 14 a try if you think it will help.

No, I don't think it will help. If there is going to be a useless comment, though, you should maintain it. Or delete it.

Quote

I'm running Arduino 1.0 as my IDE, I don't have the computer in front of me right now, so I'm not sure what build it is or anything more specific at the moment

I think that you remember having downloaded a release candidate version, since you don't get those from the Arduino site. Since you didn't even mention the possibility, we can safely assume that 1.0 from the Arduino site is what you are using.

Quote

I should also probably clarify that I'm not trying to write to the Arduino's EEPROM, but the DS2433.

Kind of obvious, since you don't need to specify a pin number to write to the internal EEPROM.

Perhaps the key to solving your problem is to write to and read from the external EEPROM in smaller chunks. Write to/read from 1/4 of the EEPROM, starting at the first address. Then, read/write the next 1/4, etc.

Before doing that, it might be useful to search for the FreeMemory function, and add some calls to that to your code, to see if running out of memory IS your problem.

I think that you remember having downloaded a release candidate version, since you don't get those from the Arduino site. Since you didn't even mention the possibility, we can safely assume that 1.0 from the Arduino site is what you are using.

Perhaps the key to solving your problem is to write to and read from the external EEPROM in smaller chunks. Write to/read from 1/4 of the EEPROM, starting at the first address. Then, read/write the next 1/4, etc.

I've been writing in 32-byte chunks of the entire 512byte memory. I can try going smaller if you think it would help.

Whoops, it seems I uploaded a slightly older version of my code than intended. I had to write in a few changes from scratch as I can't find the most recent version. I had some much more consistent errors (only writing the first 32-bytes), and after tweaking the way the scratchpad is written, managed to copy it over. The fully working code is attached below, for anyone who may need it in the future.