Inhoudsopgave:

Een 24LC256 EEPROM toevoegen aan de Arduino Due: 3 stappen
Een 24LC256 EEPROM toevoegen aan de Arduino Due: 3 stappen

Video: Een 24LC256 EEPROM toevoegen aan de Arduino Due: 3 stappen

Video: Een 24LC256 EEPROM toevoegen aan de Arduino Due: 3 stappen
Video: ST24C08 EEPROM and Arduino 2024, November
Anonim
Een 24LC256 EEPROM toevoegen aan de Arduino Due
Een 24LC256 EEPROM toevoegen aan de Arduino Due

De arduino due mist een eeprom. Deze instructable voegt er een toe en stelt je in staat om waarden op te slaan in niet-vluchtig geheugen dat een Arduino-firmware-update zal overleven.

Stap 1: Breadboarden

Breadboarden
Breadboarden

Er zijn hier enkele echt goede instructies: https://www.hobbytronics.co.uk/arduino-external-eeprom Ik heb ze gewoon gevolgd. De foto toont het breadboard-circuit. pinnen 1 t/m 4 en pin 7 zijn geaard. pin 8 is verbonden met de 3.3V-voeding op het due-board. De gele (pin 6) en witte (pin 5) draden zijn verbonden met de i2c SDA (data) en SCL (clock) pinnen op het due-board (genummerd 21 en 20).

Stap 2: Codeer tijd

Code tijd
Code tijd

Hier zijn enkele codefragmenten die ik in mijn schetsen gebruik. Voeg eerst de Wire-bibliotheekheaders ergens bovenaan uw schets toe: /* Gebruik 24LC256 EEPROM om instellingen op te slaan */ #include Voeg vervolgens enkele functies toe om bytes van de EEPROM te lezen en te schrijven (ik geef alleen om individuele bytes, maar er is een paginaschrijffunctie in de chip ook). Merk op dat er een macrodefinitie is van 0x50.. dit is het adres van de chip op de i2c-bus (u kunt meer dan één i2c-dingetje op een i2c-bus aansluiten en selecteren met welke u wilt praten door het adres te wijzigen). /* Deze twee functies helpen ons om naar de 24LC256 EEPROM-chip te schrijven */ #define EEPROM_ADDR 0x50 void 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 schrijven: adres: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(gegevens); vertraging (5); } byte EEPROM_read (unsigned int addr) { byte data = 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 lezen: adres: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(gegevens); vertraging (5); gegevens retourneren; } U kunt de opmerkingen van de Serial.print(…)-regels verwijderen als u wat debug-uitvoer wilt zien. In de Arduino setup()-functie start je de wire-bibliotheek en kun je de initiële waarden inlezen. Hier lees ik in twee bytes (vlaggen en max_cc), twee woorden (lean_min en lean_max) en een reeks woorden sd_max [3]: // lees waarden die zijn opgeslagen in de EEPROM Wire.begin(); vlaggen=EEPROM_read(0); max_cc=EEPROM_read(1); lean_min=woord (EEPROM_read (3), EEPROM_read (2)); lean_max=woord(EEPROM_read(5), EEPROM_read(4)); for(int j=0;j<3;j) {sd_max[j]=word(EEPROM_read(7 j*2), EEPROM_read(6 j*2)); } Hier is het stukje code dat ze in de EEPROM schrijft: EEPROM_write(0, flags); 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)); for(int j=0;j<3;j) {EEPROM_write(6 j*2, lowByte(sd_max[j])); EEPROM_write(7 j*2, highByte(sd_max[j])); } Dat is het eigenlijk wel.

Stap 3: Sluit het aan

Sluit het aan
Sluit het aan

Draad het op een veroboard om in een behuizing te schroeven en de klus is geklaard.

Aanbevolen: