Բովանդակություն:

24LC256 EEPROM- ի ավելացում Arduino պատճառով. 3 քայլ
24LC256 EEPROM- ի ավելացում Arduino պատճառով. 3 քայլ

Video: 24LC256 EEPROM- ի ավելացում Arduino պատճառով. 3 քայլ

Video: 24LC256 EEPROM- ի ավելացում Arduino պատճառով. 3 քայլ
Video: LDmicro 18: Ublox NEO-6M GPS Alarm Clock (Microcontroller PLC Ladder Programming with LDmicro) 2024, Հուլիսի
Anonim
Arduino Due- ին ավելացնելով 24LC256 EEPROM
Arduino Due- ին ավելացնելով 24LC256 EEPROM

Արդուինոյի պատճառով բացակայում է eeprom- ը: Այս հրահանգը ավելացնում է մեկը և թույլ է տալիս պահպանել արժեքներ ոչ անկայուն հիշողության մեջ, որոնք կպահպանվեն arduino որոնվածի թարմացումից:

Քայլ 1: Breadboarding

Breadboarding
Breadboarding

Այստեղ կան իսկապես լավ ցուցումներ. 1 -ից 4 և 7 -րդ կապումներն հիմնավորված են: 8 -րդ կապը միացված է համապատասխան տախտակի 3.3V մատակարարմանը: Դեղին (պին 6) և սպիտակ (փին 5) լարերը, որոնք կապված են i2c SDA (տվյալների) և SCL (ժամացույցի) կապերի հետ համապատասխան տախտակի վրա (համարակալված 21 և 20)):

Քայլ 2: Կոդի ժամանակը:

Կոդի ժամանակը
Կոդի ժամանակը

Ահա կոդի մի քանի հատվածներ, որոնք ես օգտագործում եմ իմ ուրվագծերում: Նախ, ձեր ուրվագծի վերևում ինչ -որ տեղ ներառեք Wire գրադարանի վերնագրերը. էջը նույնպես գրում է չիպի մեջ): Ուշադրություն դարձրեք, կա 0x50 մակրո սահմանում: սա i2c ավտոբուսի չիպի հասցեն է (i2c ավտոբուսում կարող եք մի քանի i2c առարկա միացնել և ընտրել, թե ում հետ եք ուզում խոսել ՝ փոխելով հասցեն): / * Այս երկու գործառույթներն օգնում են մեզ գրել 24LC256 EEPROM չիպին */ #սահմանել EEPROM_ADDR 0x50 անվավեր EEPROM_write (անստորագիր int addr, բայթ տվյալներ) {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 գրել: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println (տվյալներ); ուշացում (5); } բայթ EEPROM_read (անստորագիր int addr) {բայթ տվյալներ = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Մետաղալար. Խնդրում ենք (EEPROM_ADDR, 1); եթե (Wire.available ()) տվյալները = Wire.read (); //Serial.print("EEPROM կարդալ. Addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println (տվյալներ); ուշացում (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_ գրել (1, max_cc); EEPROM_ գրել (2, lowByte (նիհար_ րոպե)); EEPROM_ գրել (3, highByte (lean_min)); EEPROM_ գրել (4, lowByte (lean_max)); EEPROM_ գրել (5, highByte (lean_max)); համար (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_ գրել (7 j*2, highByte (sd_max [j])); } Դա իրոք դա է:

Քայլ 3: Լարացրեք այն

Wire It Up
Wire It Up

Հաղորդալարով միացրեք այն veroboard- ի վրա, որպեսզի այն պտուտակվի պատյանում և կատարված աշխատանքները:

Խորհուրդ ենք տալիս: