0

Запись в eeprom arduino

Блог технической поддержки моих разработок

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

Внутреннее EEPROM в системе Ардуино.

EEPROM это энергонезависимая память. Расшифровывается как электрически стираемое программируемое постоянное запоминающее устройство. Применяется для хранения данных, которые должны быть сохранены при выключении питания.

Платы Ардуино имеют EEPROM разных объемов в зависимости от типа используемого микроконтроллера.

Микроконтроллер Объем внутреннего EEPROM
ATmega328 1024 байт
ATmega8, ATmega168 512 байт
ATmega1280, ATmega2560 4096 байт

Такого объема памяти вполне достаточно для хранения режимов, технологических параметров, коэффициентов и т.п.

  • Принцип действия EEPROM основан на создании электрического заряда в диэлектрике полупроводниковой структуры. Заряды вечно не хранятся, но разработчики гарантируют 20 лет.
  • EEPROM имеет ограниченное число циклов записи, обычно не менее 100 000.
  • Для записи информации в EEPROM требуется достаточно большое время, порядка 3 мс.
  • Чтение EEPROM происходит без задержки и ресурс работы памяти не уменьшает.

Библиотека EEPROM.

Для работы с энергонезависимой памятью в Ардуино есть библиотека EEPROM. Она имеет две функции для записи и чтении байта в EEPROM.

byte read(int address)

Функция возвращает считанный по адресу address байт.

#include
byte dt; dt= EEPROM.read(15); // чтение байта по адресу 15

void write(int address, byte value)

Записывает байт value по адресу address в EEPROM. Запись выполняется за 3,3 мс. Гарантируется 100 000 циклов записи.

#include
EEPROM.write(15, 0); // запись 0 по адресу 15

Программа проверки записи в EEPROM.

Давайте напишем простую программу проверки работы EEPROM. Программа должна записывать до 16ти символов, принятых с последовательного порта и в цикле выводить 16 символов, считанных из EEPROM. С помощью монитора порта Arduino IDE мы сможем записывать данные в EEPROM и контролировать содержимое энергонезависимой памяти.

void setup() <
Serial.begin(9600); // инициализируем порт, скорость 9600
>

void loop() <
// чтение EEPROM и вывод 16 данных в последовательный порт
Serial.println();
Serial.print("EEPROM= ");
i= 0; while(i
Serial.print((char)EEPROM.read(i));
i++;
>

// проверка есть ли данные для записи
if ( Serial.available() != 0 ) <
delay(50); // ожидание окончания приема данных

// запись в EEPROM
i= 0; while(i
d= Serial.read();
if (d == -1) d= ‘ ‘; // если символы закончились, заполнение пробелами
EEPROM.write(i, (byte)d); // запись EEPROM
i++;
>
>
delay(500);
>

Загружаем программу в плату Ардуино, проверяем. Открываем монитор порта, посылаем данные на плату:”Проверка EEPROM”.

Данные записываются в EEPROM и теперь в цикле выводятся в окне монитора. Если мы отключим плату от компьютера и затем снова подключим, то данные будут продолжать посылаться на компьютер. Они сохранены в энергонезависимой памяти и при выключении питания платы не меняются.

Контроль целостности данных.

В EEPROM обычно хранят данные абсолютно необходимые для работы программы. Например, если вы делаете регулятор температуры, то это может быть : заданная температура, коэффициенты регуляторов, параметры защитных функций и т.п. Представьте, что эти параметры будут испорчены, а регулятор продолжит работу. Он может включить нагревательный элемент на полную мощность и выставить недопустимо высокую температуру. При неправильных коэффициентах регулятор может “пойти в разнос”. Перестанут работать защитные функции. Неприятности будут большие.

А ведь ситуация, когда в EEPROM могут оказаться недостоверные данные вполне реальная.

  • При первом включении устройства данные в EEPROM недостоверны. Их просто никто еще не задавал.
  • В момент записи данных в EEPROM может отключиться питание платы и тогда часть данных запишется, а часть не успеет.
  • EEPROM имеет ограниченное число циклов записи, и это свойство также может привести к разрушению данных в этой памяти.

Поэтому крайне важно быть уверенными, что в EEPROM хранятся достоверные данные. В случае, если они ошибочны, программа должна принять определенные действия. Это может быть:

  • использовать копию данных из EEPROM;
  • использовать данные специально созданные для аварийного режима;
  • отключить устройство;
  • сигнализировать об ошибке;
  • и много других вариантов.

Целостность данных это показатель, того что данные не были изменены при хранении, передаче, отображении и т.п. Целостность данных может проверяться в любой ситуации, потенциально опасной для разрушения данных. Обычно контроль достоверности данных производят:

  • В энергонезависимой памяти (EEPROM, FLASH, HDD…).
  • При передаче данных ( последовательные интерфейсы, WiFi, GSM, TCP/IP…).
  • В оперативной памяти для особо важных данных.
  • Некоторые компоненты (например, датчик DS18B20) имеют протокол обмена данными с контролем целостности.

Для контроля целостности к блоку данных добавляется контрольный код. Этот код рассчитывается по определенному алгоритму при записи данных. При проверке данных код заново вычисляется и сравнивается с кодом, сформированным при записи. Если коды не совпадают – данные ошибочны.

Алгоритм расчета контрольного кода определяет вероятность определения ошибки данных. Существует большое число алгоритмов формирования контрольных кодов: циклические коды, различные функции хэширования. Но самым простым способом вычисления контрольного кода является контрольная сумма.

Просто делается математическая сумма всех байтов блока данных. Такой алгоритм требует минимума ресурсов для реализации, и в то же время позволяет с достаточно высокой вероятностью определить ошибочные данные в случае небольших объемов информации. Контрольная сумма может быть разной разрядности. В минимальном варианте это один байт. В этом случае происходит переполнение результата суммы, что уменьшает вероятность обнаружения ошибок.

Я всегда к вычисленной контрольной сумме применяю операцию “исключающее ИЛИ” с кодом подобным E5h. Это позволяет исключить весьма вероятную ситуацию, когда все данные равны 0. Сумма 0 равна 0. Поэтому если блок данных будет ошибочно обнулен (а это бывает), то простая сумма не вычислит эту ошибку. А когда контрольная сумма для всех 0 равна E5h, то ошибка будет выявлена.

Давайте добавим в предыдущую программу контроль целостности данных.

Читайте также:  Где в айфоне загруженная музыка

// проверка работы EEPROM
#include
int i, d;
byte sum; // контрольная сумма

void setup() <
Serial.begin(9600); // инициализируем порт, скорость 9600
>

void loop() <
// вычисление контрольной суммы
sum= 0;
i= 0; while(i
sum += EEPROM.read(i);
i++;
>
// проверка контрольной суммы
if ( (sum^0xe5) == EEPROM.read(i)) <
// контрольна сумма правильная

// чтение EEPROM и вывод 16 данных в последовательный порт
Serial.println();
Serial.print("EEPROM= ");
i= 0; while(i
Serial.print((char)EEPROM.read(i));
i++;
>
>
else <
// контрольная сумма неправильная
Serial.println();
Serial.print("EEPROM= data error");
>

// проверка есть ли данные для записи
if ( Serial.available() != 0 ) <
delay(50); // ожидание окончания приема данных

// запись в EEPROM
sum= 0;
i= 0; while(i
d= Serial.read();
if (d == -1) d= ‘ ‘; // если символы закончились, заполнение пробелами
EEPROM.write(i, (byte)d); // запись EEPROM
sum += (byte)d; // вычисление контрольной суммы
i++;
>
EEPROM.write(i, sum ^ 0xe5); // запись контрольной суммы
>
delay(500);
>

Отмечу только, что программа принимает не 16, а 14 символов, т.к. монитор порта добавляет к каждой строке символы переноса строки
и
.

Загрузим программу и запустим монитор.

В окне бегут сообщения об ошибке данных. Мы еще не загрузили в EEPROM никаких данных, и алгоритм распознает эту ситуацию. Пошлем строку, например, ”проверка”. Теперь в окне отображаются данные из EEPROM.

Таким же образом можно защищать целостность данных при передаче по последовательному порту. Любая импульсная помеха может исказить сигнал в кабеле связи и вызвать ошибку данных. Конечно, программа приема данных на компьютере должна поддерживать протокол с контрольной суммой. Монитор порта Arduino IDE этой функции не имеет.

В следующем уроке узнаем, что такое указатели в C для Ардуино, научимся записывать в EEPROM данные различных типов (int, float…).

Блог технической поддержки моих разработок

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

Внутреннее EEPROM в системе Ардуино.

EEPROM это энергонезависимая память. Расшифровывается как электрически стираемое программируемое постоянное запоминающее устройство. Применяется для хранения данных, которые должны быть сохранены при выключении питания.

Платы Ардуино имеют EEPROM разных объемов в зависимости от типа используемого микроконтроллера.

Микроконтроллер Объем внутреннего EEPROM
ATmega328 1024 байт
ATmega8, ATmega168 512 байт
ATmega1280, ATmega2560 4096 байт

Такого объема памяти вполне достаточно для хранения режимов, технологических параметров, коэффициентов и т.п.

  • Принцип действия EEPROM основан на создании электрического заряда в диэлектрике полупроводниковой структуры. Заряды вечно не хранятся, но разработчики гарантируют 20 лет.
  • EEPROM имеет ограниченное число циклов записи, обычно не менее 100 000.
  • Для записи информации в EEPROM требуется достаточно большое время, порядка 3 мс.
  • Чтение EEPROM происходит без задержки и ресурс работы памяти не уменьшает.

Библиотека EEPROM.

Для работы с энергонезависимой памятью в Ардуино есть библиотека EEPROM. Она имеет две функции для записи и чтении байта в EEPROM.

byte read(int address)

Функция возвращает считанный по адресу address байт.

#include
byte dt; dt= EEPROM.read(15); // чтение байта по адресу 15

void write(int address, byte value)

Записывает байт value по адресу address в EEPROM. Запись выполняется за 3,3 мс. Гарантируется 100 000 циклов записи.

#include
EEPROM.write(15, 0); // запись 0 по адресу 15

Программа проверки записи в EEPROM.

Давайте напишем простую программу проверки работы EEPROM. Программа должна записывать до 16ти символов, принятых с последовательного порта и в цикле выводить 16 символов, считанных из EEPROM. С помощью монитора порта Arduino IDE мы сможем записывать данные в EEPROM и контролировать содержимое энергонезависимой памяти.

void setup() <
Serial.begin(9600); // инициализируем порт, скорость 9600
>

void loop() <
// чтение EEPROM и вывод 16 данных в последовательный порт
Serial.println();
Serial.print("EEPROM= ");
i= 0; while(i
Serial.print((char)EEPROM.read(i));
i++;
>

// проверка есть ли данные для записи
if ( Serial.available() != 0 ) <
delay(50); // ожидание окончания приема данных

// запись в EEPROM
i= 0; while(i
d= Serial.read();
if (d == -1) d= ‘ ‘; // если символы закончились, заполнение пробелами
EEPROM.write(i, (byte)d); // запись EEPROM
i++;
>
>
delay(500);
>

Загружаем программу в плату Ардуино, проверяем. Открываем монитор порта, посылаем данные на плату:”Проверка EEPROM”.

Данные записываются в EEPROM и теперь в цикле выводятся в окне монитора. Если мы отключим плату от компьютера и затем снова подключим, то данные будут продолжать посылаться на компьютер. Они сохранены в энергонезависимой памяти и при выключении питания платы не меняются.

Контроль целостности данных.

В EEPROM обычно хранят данные абсолютно необходимые для работы программы. Например, если вы делаете регулятор температуры, то это может быть : заданная температура, коэффициенты регуляторов, параметры защитных функций и т.п. Представьте, что эти параметры будут испорчены, а регулятор продолжит работу. Он может включить нагревательный элемент на полную мощность и выставить недопустимо высокую температуру. При неправильных коэффициентах регулятор может “пойти в разнос”. Перестанут работать защитные функции. Неприятности будут большие.

А ведь ситуация, когда в EEPROM могут оказаться недостоверные данные вполне реальная.

  • При первом включении устройства данные в EEPROM недостоверны. Их просто никто еще не задавал.
  • В момент записи данных в EEPROM может отключиться питание платы и тогда часть данных запишется, а часть не успеет.
  • EEPROM имеет ограниченное число циклов записи, и это свойство также может привести к разрушению данных в этой памяти.

Поэтому крайне важно быть уверенными, что в EEPROM хранятся достоверные данные. В случае, если они ошибочны, программа должна принять определенные действия. Это может быть:

  • использовать копию данных из EEPROM;
  • использовать данные специально созданные для аварийного режима;
  • отключить устройство;
  • сигнализировать об ошибке;
  • и много других вариантов.

Целостность данных это показатель, того что данные не были изменены при хранении, передаче, отображении и т.п. Целостность данных может проверяться в любой ситуации, потенциально опасной для разрушения данных. Обычно контроль достоверности данных производят:

  • В энергонезависимой памяти (EEPROM, FLASH, HDD…).
  • При передаче данных ( последовательные интерфейсы, WiFi, GSM, TCP/IP…).
  • В оперативной памяти для особо важных данных.
  • Некоторые компоненты (например, датчик DS18B20) имеют протокол обмена данными с контролем целостности.
Читайте также:  Блог на php mysql

Для контроля целостности к блоку данных добавляется контрольный код. Этот код рассчитывается по определенному алгоритму при записи данных. При проверке данных код заново вычисляется и сравнивается с кодом, сформированным при записи. Если коды не совпадают – данные ошибочны.

Алгоритм расчета контрольного кода определяет вероятность определения ошибки данных. Существует большое число алгоритмов формирования контрольных кодов: циклические коды, различные функции хэширования. Но самым простым способом вычисления контрольного кода является контрольная сумма.

Просто делается математическая сумма всех байтов блока данных. Такой алгоритм требует минимума ресурсов для реализации, и в то же время позволяет с достаточно высокой вероятностью определить ошибочные данные в случае небольших объемов информации. Контрольная сумма может быть разной разрядности. В минимальном варианте это один байт. В этом случае происходит переполнение результата суммы, что уменьшает вероятность обнаружения ошибок.

Я всегда к вычисленной контрольной сумме применяю операцию “исключающее ИЛИ” с кодом подобным E5h. Это позволяет исключить весьма вероятную ситуацию, когда все данные равны 0. Сумма 0 равна 0. Поэтому если блок данных будет ошибочно обнулен (а это бывает), то простая сумма не вычислит эту ошибку. А когда контрольная сумма для всех 0 равна E5h, то ошибка будет выявлена.

Давайте добавим в предыдущую программу контроль целостности данных.

// проверка работы EEPROM
#include
int i, d;
byte sum; // контрольная сумма

void setup() <
Serial.begin(9600); // инициализируем порт, скорость 9600
>

void loop() <
// вычисление контрольной суммы
sum= 0;
i= 0; while(i
sum += EEPROM.read(i);
i++;
>
// проверка контрольной суммы
if ( (sum^0xe5) == EEPROM.read(i)) <
// контрольна сумма правильная

// чтение EEPROM и вывод 16 данных в последовательный порт
Serial.println();
Serial.print("EEPROM= ");
i= 0; while(i
Serial.print((char)EEPROM.read(i));
i++;
>
>
else <
// контрольная сумма неправильная
Serial.println();
Serial.print("EEPROM= data error");
>

// проверка есть ли данные для записи
if ( Serial.available() != 0 ) <
delay(50); // ожидание окончания приема данных

// запись в EEPROM
sum= 0;
i= 0; while(i
d= Serial.read();
if (d == -1) d= ‘ ‘; // если символы закончились, заполнение пробелами
EEPROM.write(i, (byte)d); // запись EEPROM
sum += (byte)d; // вычисление контрольной суммы
i++;
>
EEPROM.write(i, sum ^ 0xe5); // запись контрольной суммы
>
delay(500);
>

Отмечу только, что программа принимает не 16, а 14 символов, т.к. монитор порта добавляет к каждой строке символы переноса строки
и
.

Загрузим программу и запустим монитор.

В окне бегут сообщения об ошибке данных. Мы еще не загрузили в EEPROM никаких данных, и алгоритм распознает эту ситуацию. Пошлем строку, например, ”проверка”. Теперь в окне отображаются данные из EEPROM.

Таким же образом можно защищать целостность данных при передаче по последовательному порту. Любая импульсная помеха может исказить сигнал в кабеле связи и вызвать ошибку данных. Конечно, программа приема данных на компьютере должна поддерживать протокол с контрольной суммой. Монитор порта Arduino IDE этой функции не имеет.

В следующем уроке узнаем, что такое указатели в C для Ардуино, научимся записывать в EEPROM данные различных типов (int, float…).

Arduino – это целое семейство различных устройств для создания электронных проектов. Микроконтроллеры очень удобны для использования, доступны к освоению даже новичку. Каждый микроконтроллер состоит из платы, программ для обеспечения работы, памяти. В этой статье будет рассмотрена энергонезависимая память, используемая в Arduino.

Описание памяти EEPROM

Ардуино предоставляет своим пользователям три типа встроенной памяти устройств: стационарное ОЗУ (оперативно-запоминающее устройство или SRAM — static random access memory) – необходимо для записи и хранения данных в процессе использования; флеш-карты – для сохранения уже записанных схем; EEPROM – для хранения и последующего использования данных.

На ОЗУ все данные стираются, как только происходит перезагрузка устройства либо отключается питание. Вторые две сохраняют всю информацию до перезаписи и позволяют извлекать ее при необходимости. Флеш-накопители достаточно распространены в настоящее время. Подробнее стоит рассмотреть память EEPROM.

Аббревиатура расшифровывается, как Electrically Erasable Programmable Read-Only Memory и в переводе на русский дословно означает – электрически стираемая программируемая память только для чтения. Производитель гарантирует сохранность информации на несколько десятилетий вперед после последнего отключения питания (обычно приводят срок в 20 лет, зависит от скорости снижения заряда устройства).

При этом нужно знать, что возможность перезаписи на устройство ограничена и составляет не более 100 000 раз. Поэтому рекомендуют аккуратно и внимательно относиться к вносимым данным и не допускать перезаписи лишний раз.

Объем памяти, в сравнении с современными носителями, очень небольшой и разный для различных микроконтроллеров. Например, для:

  • ATmega328 – 1кБ
  • ATmega168 и ATmega8 – 512 байт,
  • ATmega2560 и ATmega1280 – 4 кБ.

Так устроено потому, что каждый микроконтроллер предназначен для определенного объема задач, имеет разное количество выводов для подключения, соответственно, необходим разный объем памяти. При этом такого количества достаточно для обычно создаваемых проектов.

Для записи на EEPROM требуется значительное количество времени – около 3 мс. Если в момент записи отключается питание, данные не сохраняются вовсе либо могут быть записаны ошибочно. Требуется всегда дополнительно проверять внесенную информацию, чтобы избежать сбоев во время работы. Считывание данных происходит гораздо быстрее, ресурс памяти от этого не снижается.

Библиотека

Работа с памятью EEPROM осуществляется с помощью библиотеки, которая была специально создана для Ардуино. Главными являются способность к записи и чтению данных. Библиотека активируется командой #include EEPROM.h.

Далее используются простые команды:

  • для записи – EEPROM.write(address, data);
  • для чтения – EEPROM.read(address).

В данных скетчах: address – аргумент с данными ячейки, куда вносятся данные второго аргумента data; при считывании используется один аргумент address, который показывает, откуда следует читать информацию.

Читайте также:  Игры на х box 360
Функция Назначение
read(address) считывает 1 байт из EEPROM ; address – адрес, откуда считываются данные (ячейка, начиная с 0);
write(address, value) записывает в память значение value (1 байт, число от 0 до 255) по адресу address;
update(address, value) заменяет значение value по адресу address, если её старое содержимое отличается от нового;
get(address, data) считывает данные data указанного типа из памяти по адресу address;
put(address, data) записывает данные data указанного типа в память по адресу address;
EEPROM[address] позволяет использовать идентификатор "EEPROM" как массив, чтобы записывать данные в память и считывать их из памяти.

Запись целых чисел

Запись целых чисел в энергонезависимую память EEPROM осуществить достаточно просто. Внесение чисел происходит с запуском функции EEPROM.write(). В скобках указываются необходимые данные. При этом числа от 0 до 255 и числа свыше 255 записываются по-разному. Первые вносятся просто – их объем занимает 1 байт, то есть одну ячейку. Для записи вторых необходимо использовать операторов highByte() высший байт и lowByte() низший байт.

Число делится на байты и записывается отдельно по ячейкам. Например, число 789 запишется в две ячейки: в первую пойдет множитель 3, а во вторую – недостающее значение. В итоге получается необходимое значение:

Для «воссоединения» большого целого числа применяется функция word(): int val = word(hi, low). Нужно читывать, что максимальное целое число для записи – 65536 (то есть 2 в степени 16). В ячейках, в которых еще не было иных записей, на мониторе будут стоять цифры 255 в каждой.

Запись чисел с плавающей запятой и строк

Числа с плавающей запятой и строк – это форма записи действительных чисел, где они представляются из мантиссы и показателя степени. Запись таких чисел в энергонезависимую память EEPROM производится с активацией функции EEPROM.put(), считывание, соответственно, – EEPROM.get().

При программировании числовые значения с плавающей запятой обозначаются, как float, стоит отметить, что это не команда, а именно число. Тип Char (символьный тип) – используется для обозначения строк. Процесс записи чисел на мониторе запускается при помощи setup(), считывание – с помощью loop().

В процессе на экране монитора могут появиться значения ovf, что значит «переполнено», и nan, что значит «отсутствует числовое значение». Это говорит о том, что записанная в ячейку информация не может быть воспроизведена, как число с плавающей точкой. Такой ситуации не возникнет, если достоверно знать, в какой ячейке какой тип информации записан.

Примеры проектов и скетчей

Пример №1

Скетч запишет до 16 символов с последовательного порта и в цикле выведет 16 символов из EEPROM. Благодаря Arduino IDE данные записываются в EEPROM и контролируется содержимое энергонезависимой памяти.

Пример №2

Для большего понимания мы можем создать небольшой скетч, который поможет в понимании работы с энергонезависимой памятью. Считаем все ячейки этой памяти. Если ячейка не пустая – вывод в последовательный порт. После чего заполняем ячейки пробелами. Потом вводим текст через монитор последовательного порта. Его записываем в EEPROM, и при последующем включении считываем.

Пример №3

Запись в память два целых числа, чтение их из EEPROM и вывод в последовательный порт. Числа от 0 до 255 занимают 1 байт памяти, с помощью функции EEPROM.write() записываются в нужную ячейку. Для чисел больше 255 их нужно делить на байты с помощью highByte() и lowByte() и записывать каждый байт в свою ячейку. Максимальное число при этом – 65536 (или 2 16 ).

Пример №4

Запись чисел с плавающей запятой и строк – метод EEPROM.put(). Чтение – EEPROM.get().

Пример №5

Использование EEPROM как массива.

Работа с EEPROM

Как упоминалось ранее, ресурс памяти EEPROM ограничен. Для продления срока службы энергонезависимой памяти, вместо функции write() запись, лучше применять функцию update обновление. При этом перезапись ведется только для тех ячеек, где значение отличается от вновь записываемого.

Еще одной полезной функцией рассматриваемой памяти микроконтроллера является возможность использования ячеек хранения байтов, как деталей целостного массива EEPROM. При любом формате использования необходимо постоянно осуществлять контроль целостности записанных данных.

Такая память на Ардуино стандартно хранит самое важное для работы контроллера и устройства. К примеру, если на такой базе создается регулятор температуры и исходные данные окажутся ошибочными, устройство будет работать «неадекватно» существующим условиям – сильно занижать или завышать температуру.

Существует несколько ситуаций, когда память EEPROM содержит неправильные данные:

  1. При первоначальной активации – еще не было ни одной записи.
  2. В момент неконтролируемого отключения питания – часть или все данные не запишутся или запишутся некорректно.
  3. После завершения возможных циклов перезаписи данных.

Чтобы избежать возникновения неприятных последствий, устройство можно запрограммировать на несколько вариантов действий: применить данные аварийного кода, отключить систему полностью, подать сигнал о неисправности, использовать заранее созданную копию или другие.

Для контроля целостности информации используют контрольный код системы. Он создается по образцу записи первоначальных данных и, при проверке, он вновь просчитывает данные. Если результат отличается – это ошибка. Самым распространенным вариантом такой проверки является контрольная сумма – выполняется обычная математическая операция по сложению всех значений ячеек.

Опытные программисты добавляют к этому коду дополнительное «исключающее ИЛИ», например, E5h. В случае если все значения равны нулю, а система по ошибке обнулила исходные данные – такая хитрость выявит ошибку.

Таковы основные принципы работы с энергонезависимой памятью EEPROM для микроконтроллеров Arduino. Для определенных проектов стоит использовать только этот вид памяти. Он имеет как свои плюсы, так и свои недостатки. Для освоения методов записи и чтения лучше начать с простых задач.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *