Хранение информации



Arduino Хранение Данных в Eeprom

Пример работы с EEPROM  Ноябрь 21, 2021 – 15:59
EEPROMAnything. Как записать в EEPROM дробное или длинное целое

Поэкспериментируйте с программой, и убедитесь, что значение счетчика сохраняется и после пропадания питания. Фирма ATMEL – производитель микроконтроллеров ATmega, декларирует порядка 100’000 (ста тысяч) успешных циклов записи в EEPROM и хранение данных до 100 лет при температуре 25 градусов по Цельсию.

Библиотека EEPROM2

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

Таким образом, требуется применение счетчика большего размера – 2 байта дадут верхнюю границу в 65’535, а 4 байта – 4’294’967’295.

Стандартная библиотека имеет функции только для работы с однобайтными данными типа uint8_t, и чтение 4-байтного числа будет выглядеть примерно так:

*((uint8_t*)&counter + 0) = EEPROM.read(0);
*((uint8_t*)&counter + 1) = EEPROM.read(1);
*((uint8_t*)&counter + 2) = EEPROM.read(2);
*((uint8_t*)&counter + 3) = EEPROM.read(3);

Такой исходный код, конечно, будет понятен компилятору, но далеко не каждому начинающему программисту, и поэтому мы написали свою версию библиотеки для работы с EEPOM:

Как и в большинстве случаев, установка библиотеки сводится к распаковке архива в подпапку \hardware\libraries\ папки с ПО Arduino.

Теперь рассмотрим аналогичную первому примеру программу, хранящую счетчик в 4-байтном числе с помощью библиотеки EEPROM2:

#include
//подключаем заголовочный файл библиотеки EEPROM2

void setup
{
unsigned long counter; //Здесь будем хранить счетчик
//unsigned long - тип данных, занимающий 4 байта,
//и хранящий значение от 0 до 4'294'967'295

//следующие 2 строчки нужны только при первом запуске,
//чтобы обнулить значение счетчика:
counter = 0;
EEPROM_write(0, counter);

//Инициализируем последовательный порт на 9600бит/сек:
Serial.begin(9600);

//Читаем счетчик из EEPROM:
EEPROM_read(0, counter);

counter++; // увеличиваем его на единицу

//Записываем значение счетчика
EEPROM_write(0, counter);

//Выводим счетчик в порт:
Serial.print("It's reset #");
Serial.println(counter, DEC);
}

void loop
{
}

Загрузите программу в микроконтроллер, удалите строчки, обнуляющие счетчик, и загрузите программу еще раз.

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

Source: freeduino.ru


Причины oomkilled в kubernetes

Похожие публикации:

  1. Ит Хранение Данных
  2. Ios Хранение Данных
  3. Хранение Данных в Access