Arduino:Примеры/EEPROMIteration

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

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

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

  • Плата Arduino или Genuino

Цепь

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

ArduinoUNO bb.png

Схема

ArduinoUNO sch.png

Код

/***
    Пример eeprom_iteration

    Этот скетч содержит несколько фрагментов, иллюстрирующих 
    несколько простейших способов «шерстить» по EEPROM-памяти.

    Запускать этот скетч необязательно, он написан исключительно 
    в демонстративных целях.

    Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год.
    Выпущено под лицензией MIT.
***/

#include <EEPROM.h>

void setup() {

  /***
    «шерстим» по EEPROM-памяти при помощи цикла for
  ***/

  for (int index = 0 ; index < EEPROM.length() ; index++) {

    // прибавляем к количеству EEPROM-ячеек еще одну:
    EEPROM[ index ] += 1;
  }

  /***
    «шерстим» по EEPROM-памяти при помощи цикла while
  ***/

  int index = 0;

  while (index < EEPROM.length()) {

    // прибавляем к количеству EEPROM-ячеек еще одну:
    EEPROM[ index ] += 1;
    index++;
  }

  /***
    «шерстим» по EEPROM-памяти при помощи цикла do-while
  ***/

  int idx = 0;  // используем «idx», чтобы избежать конфликта с «index» из фрагмента выше

  do {

    // прибавляем к количеству EEPROM-ячеек еще одну:
    EEPROM[ idx ] += 1;
    idx++;
  } while (idx < EEPROM.length());


} // заканчиваем setup()

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.

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