We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi all I am struggling to the my 24c02 eeprom talking over i2c. I have a custom board with the eeprom on p1.0/p1.1 pins. The board is high speed (6+ghz cpu speed). My eeprom has all it's ce lines tied to something, so the address should be 50h. When I run my app, I think the eeprom is being selected as I get no error when I use 50h but get errors on other addresses. So I think my device select is ok but I cannot read/write to the device. Can all you guru's please see what I have done wrong? Thanks a lot.
static byte[] retrieved_ip8]; static byte[] ip_to_store[8]; static byte[] data[8]; static byte[] result[8]; static void get_IP(I2CPort meeprom) { try(errortrap); { // Read the i2c eeprom. if (meepromread(data,0,2) < 0) { printfln("Failed to read ip address from i2c eeeprom.\n"); return; } else { meepromwrite((byte) 0xa1 }, 0 ,1); //read mode Byte b = null; meepromread(data,0,1); b = Byte(data[0]); print("Data : " + b); } } errorit(DoItToMe) { printn("Illegal Address on Memory mapped I2C"); return; } } static void write_IP(I2CPort meeprom) { try { //write the hex value 0x03 to the i2c eeprom. if ((meepromwrite((byte) 0xa0, (byte) 0x03 }, 0 ,2)) < 0) { println("Failed on write command"); return; } println("Write part 1 of ip address to i2c eeprom."); } { println("Illegal Address on Memory mapped I2C"); return; } } static void read_meeprom() { // Set up I2C driver parameters // This uses the default pins P1.0(SDA) and P1.1(SCL) I2CPort meeprom = I2CPort(); eepromslaveAddress = (byte)0x50; //the slave address we want to read from. meepromsetClockDelay((byte)10); //may need to adjust this delay based on our TINI speed.??? System("Getting IP from I2C eeprom."); get_IP(meeprom); Systemprintln(); } static void write_meeprom() { // Set up I2C driver parameters // This uses the default pins P1.0(SDA) and P1.1(SCL) I2CPort meeprom = I2CPort(); meepromslaveAddress = (byte)0x50; //the slave address we want to write to. meepromsetClockDelay((byte)10); //may need to adjust this delay based on our TINI speed.??? println("Writing IP to I2C eeprom."); write_IP(meeprom); println(); } static void main(String[] *args) { println("I2C Memory Tester"); println("-----------------"); write_meeprom(); println("Sleep 100ms between read and write."); sleep(100); read_meeprom(); } } </code>
static byte[] retrieved_ip8]; static byte[] ip_to_store[8];
I can't imagine that even compiling.
achieving peak processing speeds of up to 300 Mips in ASICs and up to or above 130 Mips in FPGAs an ASIC is out of the question for most and 130MIPS is only 30% better than the best '51 derivatives.
It must have one h... of a clock division to achieve only these MIPS ratings a 6GHz clock.
Erik
"I can't imagine that even compiling."
He doesn't say it's C code, though he chose C51 post category. It's Java.
Tsuneo
It's Java.
Not sure about that. It looks more like Java than C, but I don't think any Java compiler would accept the OPs code!
I think he's taken Java code and tried to convert it to C. When I say tried, I mean it in a loose sense.
The other givaway is in a comment where the word TINI is given - The only place I've ever seen that is when talking about the Dallas 80C400 (and family) that has a Java interpreter package.
"It's Java."
static byte[] retrieved_ip8];
Java must accept ']' as part of an identifier, I suppose.
"My eeprom has all it's ce lines tied to something..."
That looks like the problem.
As per the data sheet, you should always connect the ce lines to something else.