No problem, Mike, any input is welcome. I found one eroneous line in the code. I moved the clrf SSPSTAT that was after the switch to Bank 0 to before the switch because SSPSTAT in bank 1. Will I ever learn? I also tried a value of 49 for a clock of 100kHz. And I also tried commenting out the SSPCON2 inits. And I even tried changing the slew rate for the 100kHz test. The output was still the same rotated pattern of grouped 1's no matter what I did. The 100kHz did slow the output down quite a bit, which was encouraging. Pleeeeeeease someone help me. I am foolishly thinking of putting the scope on it, but I dunno what to look for. Those timing charts in the datasheet hurt my head. Does anybody know how I might read the I2C with some other device to try and narrow down if I'm having read or write problems? I also noticed the original author had a stop bit before the second start bit in the i2c_read proc, but the 24lc256 datasheet does not indicate that it should be there. I have 2k pullups and no caps on SCL and SDA. Should I try decoupling caps on power again? (Can't believe I just thought of that... not the brightest lad sometimes...) I changed: ;set up I2C Port bsf STATUS,RP0 ; Bank 1 movlw b'01100000' ; What's all this about?!?! movwf SSPCON2 movlw b'00001100' ; 400KHz @ 20MHz Clock (385k,actually) movwf SSPADD ; 20,000,000/4*(SSPADD+1) bcf STATUS,RP0 ; Bank 0 clrf SSPSTAT movlw b'00101000' ; enabled, master mode movwf SSPCON bsf SSPCON,SSPEN to various combinations of: ;set up I2C Port bsf STATUS,RP0 ; Bank 1 ; movlw b'01100000' ; What's all this about?!?! ; movwf SSPCON2 movlw b'00110001' ; 100KHz @ 20MHz Clock (385k,actually) movwf SSPADD ; 20,000,000/4*(SSPADD+1) clrf SSPSTAT ; What for? bcf STATUS,RP0 ; Bank 0 movlw b'00101000' ; enabled, master mode movwf SSPCON bsf SSPCON,SSPEN Mike Cornelius wrote: > Hi Greg, > > My Appologies, I don't think I'd had my morning coffee yet when I wrote > that. > Your quite right the 24LC256 does not require a seperate erase cycle. I > think I've been spending too much time around "SmartMedia"..... > > Regards and Appologies.. > > > Ummm, no. I am trying to fill up the entire EEPROM with new data every > time the PIC is turned on so why would I erase it? Putting a new value in > each location should be good enough, yes? > > Mike Cornelius wrote: > > > Hi Greg, > > > > I can't say I looked at your code with a "fine tooth comb" but I couldn't > > find where you erase the EEPROM. Are you erasing between writes ?