Мазмуну:

Arduino Dueга 24LC256 EEPROM кошуу: 3 кадам
Arduino Dueга 24LC256 EEPROM кошуу: 3 кадам

Video: Arduino Dueга 24LC256 EEPROM кошуу: 3 кадам

Video: Arduino Dueга 24LC256 EEPROM кошуу: 3 кадам
Video: Ардуино и внешняя EEPROM 24C128 2024, Ноябрь
Anonim
Arduino Dueге 24LC256 EEPROM кошуу
Arduino Dueге 24LC256 EEPROM кошуу

Arduino улам бир eeprom жок. Бул көрсөтмө бири кошумчалайт жана баалуулуктарды arduino камтылган жаңыртуусунан аман кала турган эстутумда сактоого мүмкүндүк берет.

1 -кадам: Breadboarding

Breadboarding
Breadboarding

Бул жерде абдан жакшы көрсөтмөлөр бар: https://www.hobbytronics.co.uk/arduino-external-eeprom Мен аларды ээрчип жөнөдүм. 1ден 4кө чейин жана 7 пинге жерге туташтырылган. пин 8 тийиштүү борттогу 3.3V камсыздоого туташкан. i2c SDA (маалымат) жана SCL (саат) казыктарына туташкан сары (пин 6) жана ак (пин 5) зымдары тиешелүү тактада (21 жана 20 номурлуу)).

2 -кадам: Код убактысы

Код убактысы
Код убактысы

Мына мен эскиздеримде колдонгон коддун айрым үзүндүлөрү. Биринчиден, эскиздин чокусуна жакын жердеги Wire китепканасынын башын кошуңуз: / * Орнотууларды сактоо үчүн 24LC256 EEPROM колдонуңуз * / #include Андан кийин EEPROMдан байттарды окуу жана жазуу үчүн кээ бир функцияларды кошуңуз (мен жеке байттарды ойлоном, бирок чипте баракты жазуу өзгөчөлүгү да бар). 0x50 макро аныктамасы бар экенин белгилеңиз.. бул i2c автобусундагы чиптин дареги (i2c автобуста бир нече i2c нерсесин туташтырып, дарегин өзгөртүү аркылуу кайсынысы менен сүйлөшкүңүз келерин тандай аласыз). / * Бул эки функция 24LC256 EEPROM чипине жазууга жардам берет */ #define EEPROM_ADDR 0x50 боштук EEPROM_write (unsigned int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM write: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); кечигүү (5); } байт EEPROM_read (unsigned int addr) {байт маалыматы = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); if (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); кечигүү (5); маалыматтарды кайтаруу; } Эгер сиз кээ бир мүчүлүштүктөрдү оңдоону көргүңүз келсе, Serial.print (…) линияларын комментарийлей аласыз. Arduinos setup () функциясында сиз зым китепканасын баштайсыз жана баштапкы маанилерде окуй аласыз. Бул жерде мен эки байтта (желектер жана max_cc), эки сөздө (lean_min жана lean_max) жана sd_max сөздөрдүн массивинде [3] окудум: // EEPROM Wire.begin () де сакталган баалуулуктарды окуу; желектер = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = сөз (EEPROM_read (3), EEPROM_read (2)); lean_max = сөз (EEPROM_read (5), EEPROM_read (4)); үчүн (int j = 0; j <3; j) {sd_max [j] = сөз (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Бул жерде аларды EEPROMга жазган кичинекей код: EEPROM_write (0, желектер); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (lean_max)); EEPROM_write (5, highByte (lean_max)); үчүн (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j]))); EEPROM_write (7 j*2, highByte (sd_max [j])); } Чынында бул жөнүндө.

3 -кадам: Wire It Up

Wire It Up
Wire It Up

Корпуска жана аткарылган иштерге буруш үчүн аны вербордго байлаңыз.

Сунушталууда: