Re: Problem reading 24FC1025 EEPROM with 18f14k22
This routine has worked for me just fine since PBP2.32 w/4 each 24LC1025's. Just exchange the I2CWRITE for I2CREAD and your done....
CNTRL_BYTE CON $A0 'CONTROL BYTE FOR I2C EEPROM MEMORY (A0/A1 USED FOR CHIP SELECT)
BLOCK VAR WORD '128 BYTE BLOCK ADDRESS
ADDRESS VAR WORD 'ADDRESS WORD FOR SERIAL EEPROM
CNTROL_BYTE VAR BYTE 'CONTROL BYTE TO SEND TO SERIAL EEPROM
EEDEVICE VAR BYTE 'PHYSICAL DEVICE ADDRESS
STOR_DATA VAR BYTE[128]'STORAGE DATA ARRAY
EEDEVICE = BLOCK / 512 'SELECT WHICH PHYSICAL ADDRESS BOUNDRY & EEPROM
ADDRESS = BLOCK << 7 'CALCULATE 12C ADDRESS TO STORE DATA TO
CNTROL_BYTE = CNTRL_BYTE 'COPY CONTROL BYTE
CNTROL_BYTE.1 = EEDEVICE.1 'SET LSB OF HARDWARE ADDRESS
CNTROL_BYTE.2 = EEDEVICE.2 'SET MSB OF HARDWARE ADDRESS
CNTROL_BYTE.3 = EEDEVICE.0 'SET 64K BLOCK BIT
I2CWRITE SDA,SCL,CNTROL_BYTE,ADDRESS,[STR STOR_DATA\128] 'SAVE DATA TO 12C
PAUSE 6 'ALLOW TIME FOR I2C WRITE ~5Ms.
Also a MAXIMUM resistance on each SCL and SDA lines to VCC of 2.2k. The faster the bus speed the smaller the resistance.
Dave Purola,
Dave Purola,
N8NTA
EN82fn
Bookmarks