Spisu treści:

Wbudowana pamięć EEPROM Arduino: 6 kroków
Wbudowana pamięć EEPROM Arduino: 6 kroków

Wideo: Wbudowana pamięć EEPROM Arduino: 6 kroków

Wideo: Wbudowana pamięć EEPROM Arduino: 6 kroków
Wideo: Arduino 10: MIERZYMY NAPIĘCIA 2024, Listopad
Anonim
Wbudowana pamięć EEPROM Twojego Arduino
Wbudowana pamięć EEPROM Twojego Arduino

W tym artykule przyjrzymy się wewnętrznej pamięci EEPROM w naszych płytach Arduino. Co to jest EEPROM, który niektórzy z was mogą powiedzieć? EEPROM to programowalna pamięć tylko do odczytu, którą można wymazywać elektrycznie.

Jest to forma pamięci nieulotnej, która może zapamiętywać rzeczy przy wyłączonym zasilaniu lub po zresetowaniu Arduino. Piękno tego rodzaju pamięci polega na tym, że dane wygenerowane w szkicu możemy przechowywać w bardziej trwały sposób.

Dlaczego miałbyś używać wewnętrznej pamięci EEPROM? W sytuacjach, w których dane, które są unikalne dla danej sytuacji, wymagają bardziej trwałego domu. Na przykład przechowywanie unikalnego numeru seryjnego i daty produkcji komercyjnego projektu opartego na Arduino – funkcja szkicu może wyświetlić numer seryjny na wyświetlaczu LCD lub dane można odczytać, przesyłając „szkic usługi”. Lub może być konieczne zliczanie niektórych zdarzeń i nie pozwalanie użytkownikowi na ich zresetowanie – na przykład licznik kilometrów lub licznik cykli pracy.

Krok 1: Jaki rodzaj danych można przechowywać?

Jaki rodzaj danych można przechowywać?
Jaki rodzaj danych można przechowywać?

Wszystko, co można przedstawić jako bajty danych. Jeden bajt danych składa się z ośmiu bitów danych. Bit może być włączony (wartość 1) lub wyłączony (wartość 0) i doskonale nadaje się do przedstawiania liczb w postaci binarnej. Innymi słowy, liczba binarna może używać tylko zer i jedynek do reprezentowania wartości. Tak więc binarny jest również znany jako „base-2”, ponieważ może używać tylko dwóch cyfr.

W jaki sposób liczba binarna zawierająca tylko dwie cyfry może reprezentować większą liczbę? Używa wielu zer i jedynek. Zbadajmy liczbę binarną, powiedzmy 10101010. Ponieważ jest to liczba o podstawie 2, każda cyfra reprezentuje 2 do potęgi x, od x=0 wzwyż.

Krok 2:

Obraz
Obraz

Zobacz, jak każda cyfra liczby binarnej może reprezentować liczbę o podstawie 10. Tak więc powyższa liczba binarna reprezentuje 85 przy podstawie 10 – wartość 85 jest sumą wartości przy podstawie 10. Inny przykład – 11111111 w systemie binarnym równa się 255 w bazie 10.

Krok 3:

Teraz każda cyfra w tej liczbie binarnej wykorzystuje jeden „bit” pamięci, a osiem bitów tworzy bajt. Ze względu na wewnętrzne ograniczenia mikrokontrolerów w naszych płytach Arduino, w pamięci EEPROM możemy przechowywać tylko liczby 8-bitowe (jeden bajt).

Ogranicza to wartość dziesiętną liczby do zakresu od zera do 255. Od Ciebie zależy, w jaki sposób dane mogą być reprezentowane w tym zakresie liczb. Niech Cię to nie zniechęci – liczby ułożone we właściwy sposób mogą reprezentować prawie wszystko! Jest jedno ograniczenie, na które należy zwrócić uwagę – liczba odczytów lub zapisów w pamięci EEPROM. Według producenta Atmela, pamięć EEPROM wystarcza na 100 000 cykli odczytu/zapisu (patrz karta katalogowa).

Krok 4:

Teraz znamy nasze bity i bajty, ile bajtów można przechowywać w mikrokontrolerze naszego Arduino? Odpowiedź różni się w zależności od modelu mikrokontrolera. Na przykład:

  • Płyty z procesorem Atmel ATmega328, takie jak Arduino Uno, Uno SMD, Nano, Lilypad itp. – 1024 bajty (1 kilobajt)
  • Płyty z procesorem Atmel ATmega1280 lub 2560, np. z serii Arduino Mega – 4096 bajtów (4 kilobajty)
  • Płyty z Atmel ATmega168, takie jak oryginalny Arduino Lilypad, stary Nano, Diecimila itp – 512 bajtów.

Jeśli nie masz pewności, spójrz na indeks sprzętu Arduino lub zapytaj dostawcę płytki. Jeśli potrzebujesz więcej pamięci EEPROM niż to, co jest dostępne w twoim mikrokontrolerze, rozważ użycie zewnętrznej pamięci EEPROM I2C.

W tym momencie rozumiemy teraz, jakiego rodzaju dane i ile można przechowywać w pamięci EEPROM naszego Arduino. Teraz nadszedł czas, aby to wprowadzić w życie. Jak wspomniano wcześniej, na nasze dane jest skończona ilość miejsca. W poniższych przykładach użyjemy typowej płytki Arduino z ATmega328 z 1024 bajtami pamięci EEPROM.

Krok 5:

Aby korzystać z EEPROM, wymagana jest biblioteka, więc w swoich szkicach używaj następującej biblioteki:

#zawiera "EEPROM.h"

Reszta jest bardzo prosta. Do przechowania fragmentu danych wykorzystujemy następującą funkcję:

EEPROM.zapis(a, b);

Parametr a to pozycja w EEPROM do przechowywania liczby całkowitej (0~255) danych b. W tym przykładzie mamy 1024 bajty pamięci, więc wartość a wynosi od 0 do 1023. Aby pobrać fragment danych jest równie prosty, użyj:

z = EEPROM.odczyt(a);

Gdzie z jest liczbą całkowitą do przechowywania danych z pozycji EEPROM a. Zobaczmy teraz przykład.

Krok 6:

Obraz
Obraz

Ten szkic utworzy losowe liczby z zakresu od 0 do 255, zapisze je w pamięci EEPROM, a następnie pobierze i wyświetli na monitorze szeregowym. Zmienna EEsize to górna granica rozmiaru pamięci EEPROM, więc (na przykład) będzie to 1024 dla Arduino Uno lub 4096 dla Mega.

// Demonstracja wewnętrznej pamięci EEPROM Arduino

#włączać

int zz; int EErozmiar = 1024; // rozmiar w bajtach pamięci EEPROM twojej płyty

pusta konfiguracja()

{ Szeregowy.początek(9600); randomSeed(analogRead(0)); } void loop() { Serial.println("Zapisywanie liczb losowych…"); for (int i = 0; i < EErozmiar; i++) { zz=losowo(255); EEPROM.write(i, zz); } Serial.println(); for (int a=0; a < EEsize; a++) { zz = EEPROM.read(a); Serial.print("Pozycja EEPROM: "); druk.seryjny(a); Serial.print("zawiera"); Serial.println(zz); opóźnienie(25); } }

Pojawi się wyjście z monitora szeregowego, jak pokazano na obrazku.

Więc masz to, kolejny przydatny sposób przechowywania danych za pomocą naszych systemów Arduino. Chociaż nie jest to najbardziej ekscytujący samouczek, z pewnością jest przydatny.

Ten post został dostarczony przez pmdway.com – wszystko dla producentów i entuzjastów elektroniki, z darmową dostawą na całym świecie.

Zalecana: