Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/EEPROMIteration

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Разные способы перебора EEPROM-памяти[1]

Микроконтроллер на плате Arduino/Genuino имеет, как правило, 512 байт EEPROM-памяти (у моделей Uno и Mega ее объем составляет 1 Кб и 4 Кб соответственно) – она хранит информацию, даже если плата находится в выключенном состоянии. Другими словами, это что-то вроде крошечного жесткого диска.

Цель этого примера – показать несколько разных способов, как перебрать всю EEPROM-память (т.е. пройтись по всей EEPROM-памяти, от самой первой ячейки до самой последней). Этот код нельзя запустить сам по себе, но он содержит рабочие фрагменты, которые можно использовать в других скетчах.

Необходимое оборудование

  • Плата Arduino или Genuino

Цепь

Для этого примера цепи строить не нужно.

ArduinoUNO bb.png

Схема

ArduinoUNO sch.png

Код

  1. /***
  2.     Пример eeprom_iteration
  3.  
  4.     Этот скетч содержит несколько фрагментов, иллюстрирующих
  5.     несколько простейших способов «шерстить» по EEPROM-памяти.
  6.  
  7.     Запускать этот скетч необязательно, он написан исключительно
  8.     в демонстративных целях.
  9.  
  10.     Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год.
  11.     Выпущено под лицензией MIT.
  12. ***/
  13.  
  14. #include <EEPROM.h>
  15.  
  16. void setup() {
  17.  
  18.   /***
  19.     «шерстим» по EEPROM-памяти при помощи цикла for
  20.   ***/
  21.  
  22.   for (int index = 0 ; index < EEPROM.length() ; index++) {
  23.  
  24.     // прибавляем к количеству EEPROM-ячеек еще одну:
  25.     EEPROM[ index ] += 1;
  26.   }
  27.  
  28.   /***
  29.     «шерстим» по EEPROM-памяти при помощи цикла while
  30.   ***/
  31.  
  32.   int index = 0;
  33.  
  34.   while (index < EEPROM.length()) {
  35.  
  36.     // прибавляем к количеству EEPROM-ячеек еще одну:
  37.     EEPROM[ index ] += 1;
  38.     index++;
  39.   }
  40.  
  41.   /***
  42.     «шерстим» по EEPROM-памяти при помощи цикла do-while
  43.   ***/
  44.  
  45.   int idx = 0;  // используем «idx», чтобы избежать конфликта с «index» из фрагмента выше
  46.  
  47.   do {
  48.  
  49.     // прибавляем к количеству EEPROM-ячеек еще одну:
  50.     EEPROM[ idx ] += 1;
  51.     idx++;
  52.   } while (idx < EEPROM.length());
  53.  
  54.  
  55. } // заканчиваем setup()
  56.  
  57. void loop() {}

См.также

  1. EEPROM library reference
  2. EEPROM Clear - Fills the content of the EEPROM memory with “0”.
  3. EEPROM Read – Reads values stored into EEPROM and prints them on Serial.
  4. EEPROM Write – Stores values read from A0 into EEPROM.
  5. EEPROM Crc – Calculates the CRC of EEPROM contents as if it was an array.
  6. EEPROM Put – Put values in EEPROM using variable semantics (differs from EEPROM.write() ).
  7. EEPROM Get – Get values from EEPROM and prints as float on serial.
  8. EEPROM Update – Stores values read from A0 into EEPROM, writing the value only if different, to increase EEPROM life.

Внешние ссылки

  1. Arduino - EEPROM Iterations