I2C EEPROM

  • 12 Replies
  • 4241 Views
Re: I2C EEPROM
« Reply #8 on: February 17, 2013, 10:48:48 pm »
rlist.rpl1  = (readEEPROM(disk1, 2)*10000) +(readEEPROM(disk1, 3)*1000) +(readEEPROM(disk1, 4)*100) +(readEEPROM(disk1, 5)*10) +readEEPROM(disk1, 6);

มันอ่านค่าได้เป็นHEXครับทำใหค่าที่ได้เพี้ยนไปหมดเลยครับ ผมแยกเลขเป็นหลักแล้วเขียนลงไป แต่เวลาอ่านด้วย
Serial.println(readEEPROM(disk1, x),DEC);
ค่าที่ได้ตรงตามที่เขียนลงไปครับอย่างนี้แก้ยังไงครับ

*

Offline firmware.c

  • *****
  • 181
  • Firmware Design
    • View Profile
Re: I2C EEPROM
« Reply #9 on: February 17, 2013, 11:32:11 pm »
ผมไม่รู้นะว่า lib arduino ใช้ยังไงแต่ที่สังเกตุได้อย่างหนึ่งคือ
Code: [Select]
readEEPROM(disk1' 2)*10000 readEEPROM return ค่าออกมาเป็น byte ใช่ไหมครับลอง type case ดูแบบนี้ก็ได้
Code: [Select]
readEEPROM(disk1' 2)*10000L
IAR Embedded Workbench for ARM
AVR-Studio + AVR-GCC
CodeBlocks + MinGw
CodeBlocks + Gtk+

*

Offline JMew

  • ***
  • 180
  • เจ๊มารอค่ะ
    • View Profile
Re: I2C EEPROM
« Reply #10 on: February 19, 2013, 12:28:59 am »
ภาษา C ยากจังเนาะ ไม่ manipulate variable type ให้ด้วย ถ้าเป็น Basic นะ

CONFIG SDA = (Pin อะไร)
CONFIG SCL = (Pin อะไร)

(ซึ่งปกติแล้วจะใช้ SDA กับ SCL ที่ระบุมากับ Datasheet)

CONFIG I2CSLAVE = (Address อะไร)

เสร็จแล้วปุ๊บ $lib "24lc256.lib" แล้วอยากให้ตัวแปรอะไรแบบไหนไปเก็บได้เลย ผสมกันได้ด้วยเช่น

DIM rcoin AS ERAM Interger
DIM rqp AS ERAM Integer
DIM rpl1 AS ERAM Long
DIM rpl2 AS ERAM Long
DIM rpl3 AS ERAM Long

บลา ๆ ๆ

เอาเป็นตัวหนังสือยาว ๆ ก็ได้นะ เช่น

DIM mytext AS ERAM String * 15

mytext = "electoday.com"
โครงการกะเทยท่องโลก

Re: I2C EEPROM
« Reply #11 on: February 20, 2013, 08:18:29 pm »
Code: [Select]
aa = readEEPROM(disk1, 2);
  bb = readEEPROM(disk1, 3);
  cc = readEEPROM(disk1, 4);
  dd = readEEPROM(disk1, 5);
  ee = readEEPROM(disk1, 6);
  aa = aa*10000;
  bb = bb*1000;
  cc = cc*100;
  dd = dd*10;
  Serial.println(aa);
  Serial.println(bb);
  Serial.println(cc);
  Serial.println(dd);
  Serial.println(ee);
  rlist.rpl1 = aa+bb+cc+dd+ee;
  Serial.println(rlist.rpl1);

ผมแก้ไขโดยเขียนแบบนี้  ผ่านแล้วครับค่าที่ได้ตรงแล้วครับ ขอบคุณทุกๆท่านครับ ใครมีอะไรแนะนำต่อได้เลยนะครับ อยากรู้ อยากเป็น เพราะไม่ได้เรียนมาด้านนี้เลยครับ

*

Offline firmware.c

  • *****
  • 181
  • Firmware Design
    • View Profile
Re: I2C EEPROM
« Reply #12 on: February 21, 2013, 09:22:53 pm »
อย่างที่บอกครับดูว่ามัน return ค่าออกมาเป็นแบบไหน แล้วตัวแปรที่เอาไปใช้งานต่อเป็น type ไหน
IAR Embedded Workbench for ARM
AVR-Studio + AVR-GCC
CodeBlocks + MinGw
CodeBlocks + Gtk+