Hello, I am having errors while compiling my code for reading and writing on EEPROM with my 12C671.
I tried using read, write, I2CREAD etc but there are errors always.
Can someone please guide me as to what I could do?
Thanks
Printable View
Hello, I am having errors while compiling my code for reading and writing on EEPROM with my 12C671.
I tried using read, write, I2CREAD etc but there are errors always.
Can someone please guide me as to what I could do?
Thanks
Hi,
You can find on firsts pages of the manual, $ MCU Specific issues : " ... those chips have I2C interfaced EEPROMS so, you have to use I2CRead and I2CWrite ... "
you'll find further infos either in the Pic Datasheet and in respective commands pages of PBP Manual.
Alain
PS: Will you show some code ???
I did tried to do as per the manual, but seems to be missing something:
This is what I did:
Can you please add one example to read and one to write?Code:DEFINE I2C_INTERNAL 1
EEPROM 0,[0,0,0,0]
read 0,gpio.0
read 1,gpio.1
read 2,gpio.4
read 4,gpio.5
Also tried the above 4 statements using 12CREAD but :(
I went through the manual but it does not have an example on how to write statements for INTERNAL EEPROM.
Straight from the SAMPLES folder of your compiler ...
also available @ Melabs site in the support section ...Code:' I2CREAD and I2WRITE Commands
'
' Write to the first 16 locations of internal I2C EEPROM
' Read first 16 locations back and send to serial out repeatedly
' Note: for PIC12CE67x MCU's
Include "modedefs.bas" ' Include serial modes
Define I2C_INTERNAL 1
ADCON1 = 7 ' Set ADC pins to digital operation
SO con 1 ' Define serial output pin
DPIN var GPIO.6 ' Data line to internal EEPROM
CPIN var GPIO.7 ' Clock line to internal EEPROM
B0 var byte
B1 var byte
B2 var byte
For B0 = 0 To 15 ' Loop 16 times
I2CWRITE DPIN,CPIN,$A0,B0,[B0] ' Write each location's address to itself
Pause 10 ' Delay 10ms after each write
Next B0
mainloop: For B0 = 0 To 15 step 2 ' Loop 8 times
I2CREAD DPIN,CPIN,$A0,B0,[B1,B2] ' Read 2 locations in a row
Serout SO,N2400,[#B1," ",#B2," "] ' Print 2 locations
Next B0
Serout SO,N2400,[10] ' Print linefeed
Goto mainloop
Alain
Perfect, thank you so much. Hopefully it should solve my problem.
Will this read write operation be affected by DT-Interrupts in any way as they are also running in my code?
Thanks again
my point of view is to disable interrupts before writing to EEPROM and re-enable after.
For DT Ints ... I do not remember exactly if there's a trick to do that automatically ... I think yes ( something like "DEFINE EEPROM_USED 1" ... may be ), but you'd much better verify on the relevant thread.
Alain
From the PBP 2.60 manual:
DEFINE WRITE_INT 1 ‘Disable/Enable INTs in WRITE
If you put this in your DEFINE block, it will turn off your INTs before the WRITE and enable them after the WRITE.
Note that if you include this DEFINE, it will always ENABLE ints when the write is finished, whether or not they were enabled when the WRITE was invoked.