Përmbajtje:

Shtimi i një EEPROM 24LC256 në Arduino për shkak: 3 hapa
Shtimi i një EEPROM 24LC256 në Arduino për shkak: 3 hapa

Video: Shtimi i një EEPROM 24LC256 në Arduino për shkak: 3 hapa

Video: Shtimi i një EEPROM 24LC256 në Arduino për shkak: 3 hapa
Video: Lesson 06: Arduino Variables Data Types | Robojax Arduino Step By Step Course 2024, Nëntor
Anonim
Shtimi i një EEPROM 24LC256 në Arduino Due
Shtimi i një EEPROM 24LC256 në Arduino Due

Arduino -s i mungon një eeprom. Ky udhëzues shton një dhe ju lejon të ruani vlerat në kujtesën jo të paqëndrueshme që do t'i mbijetojnë një azhurnimi të firmware arduino.

Hapi 1: Breadboarding

Breadboarding
Breadboarding

Ka disa udhëzime vërtet të mira këtu: https://www.hobbytronics.co.uk/arduino-external-eeprom Unë sapo i kam ndjekur ato. Fotografia tregon qarkun e pjatës. kunjat 1 deri në 4 dhe kunja 7 janë të bazuara. pin 8 është i lidhur me furnizimin me 3.3V në tabelën e duhur. Telat e verdhë (pin 6) dhe të bardhë (pin 5) të lidhur me kunjat i2c SDA (të dhëna) dhe SCL (orë) në tabelën e duhur (me numër 21 dhe 20)

Hapi 2: Koha e Kodit

Koha e Kodit
Koha e Kodit

Këtu janë disa fragmente të kodit që përdor në skicat e mia. Së pari, përfshini titujt e bibliotekës Wire diku afër krye të skicës tuaj: / * Përdorni 24LC256 EEPROM për të ruajtur cilësimet * / #include Pastaj shtoni disa funksione për të lexuar dhe shkruar byte nga EEPROM (më interesojnë vetëm bajtët individualë, por ka një veçoria e shkrimit të faqes gjithashtu në çip). Vini re se ekziston një përkufizim makro i 0x50.. kjo është adresa e çipit në autobusin i2c (mund të lidhni më shumë se një gjë i2c në një autobus i2c dhe zgjidhni atë me të cilën dëshironi të flisni duke ndryshuar adresën). / * Këto dy funksione na ndihmojnë të shkruajmë në çipin 24LC256 EEPROM */ #define EEPROM_ADDR 0x50 void EEPROM_write (int addr pa shenjë, të dhëna byte) {int rdata = të dhëna; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM shkruaj: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); vonesa (5); } byte EEPROM_read (int addr pa shenjë) {byte data = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Tela. Kërkohet nga (EEPROM_ADDR, 1); nëse (Wire.available ()) të dhënat = Wire.read (); //Serial.print("EEPROM lexo: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); vonesa (5); ktheni të dhënat; } Mund të mos komentoni linjat Serial.print (…) nëse doni të shihni ndonjë dalje të korrigjimit. Në funksionin arduinos setup () ju filloni bibliotekën me tela dhe mund të lexoni në vlerat fillestare. Këtu lexova në dy byte (flamuj dhe max_cc), dy fjalë (lean_min dhe lean_max) dhe një grup fjalësh sd_max [3]: // lexo vlerat e ruajtura në EEPROM Wire.begin (); flamuj = EEPROM_lex (0); max_cc = EEPROM_lex (1); lean_min = fjalë (EEPROM_lexim (3), EEPROM_lexim (2)); lean_max = fjalë (EEPROM_lexim (5), EEPROM_lexim (4)); për (int j = 0; j <3; j) {sd_max [j] = fjalë (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Këtu është një pjesë e kodit që i shkruan ato në EEPROM: EEPROM_write (0, flamuj); EEPROM_shkruaj (1, max_cc); EEPROM_shkruaj (2, lowByte (pak_e min)); EEPROM_shkruaj (3, highByte (pakët_min)); EEPROM_shkruaj (4, lowByte (lean_max)); EEPROM_shkruaj (5, highByte (lean_max)); për (int j = 0; j <3; j) {EEPROM_shkruaj (6 j*2, lowByte (sd_max [j])); EEPROM_shkruaj (7 j*2, highByte (sd_max [j])); } Ka të bëjë me të vërtetë.

Hapi 3: Lidheni atë

Wire It Up
Wire It Up

Lidheni atë në një pllakë veroboard për ta vidhosur në një rrethim dhe punët e kryera.

Recommended: