Оглавление:

Встроенная EEPROM вашей Arduino: 6 шагов
Встроенная EEPROM вашей Arduino: 6 шагов

Видео: Встроенная EEPROM вашей Arduino: 6 шагов

Видео: Встроенная EEPROM вашей Arduino: 6 шагов
Видео: Урок №13. Пишем программный код для записи данных в EEPROM микроконтроллера ESP8266. 2024, Ноябрь
Anonim
Встроенная EEPROM вашей Arduino
Встроенная EEPROM вашей Arduino

В этой статье мы собираемся изучить внутреннюю EEPROM в наших платах Arduino. Что такое EEPROM, возможно, некоторые из вас говорят? EEPROM - это электрически стираемая программируемая постоянная память.

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

Зачем вам использовать внутреннюю EEPROM? Для ситуаций, когда данные, уникальные для конкретной ситуации, нуждаются в более постоянном месте. Например, сохранение уникального серийного номера и даты изготовления коммерческого проекта на базе Arduino - функция эскиза может отображать серийный номер на ЖК-дисплее, или данные могут быть прочитаны путем загрузки «служебного эскиза». Или вам может потребоваться подсчитать определенные события и не разрешить пользователю сбрасывать их - например, одометр или счетчик рабочих циклов.

Шаг 1. Какие типы данных можно хранить?

Какие типы данных можно хранить?
Какие типы данных можно хранить?

Все, что может быть представлено в виде байтов данных. Один байт данных состоит из восьми битов данных. Бит может быть включен (значение 1) или выключен (значение 0) и идеально подходит для представления чисел в двоичной форме. Другими словами, двоичное число может использовать только нули и единицы для представления значения. Таким образом, двоичный код также известен как «основание-2», так как он может использовать только две цифры.

Как двоичное число, состоящее только из двух цифр, может представлять большее число? В нем много нулей и единиц. Давайте рассмотрим двоичное число, например 10101010. Поскольку это число с основанием 2, каждая цифра представляет 2 в степени x, начиная с x = 0.

Шаг 2:

Изображение
Изображение

Посмотрите, как каждая цифра двоичного числа может представлять собой десятичное число. Таким образом, приведенное выше двоичное число представляет 85 по основанию 10 - значение 85 является суммой значений по основанию 10. Другой пример - 11111111 в двоичном формате равно 255 по основанию 10.

Шаг 3:

Теперь каждая цифра в этом двоичном числе использует один «бит» памяти, а восемь битов составляют байт. Из-за внутренних ограничений микроконтроллеров в наших платах Arduino мы можем хранить только 8-битные числа (один байт) в EEPROM.

Это ограничивает десятичное значение числа от нуля до 255. Затем вам решать, как ваши данные могут быть представлены в этом диапазоне чисел. Пусть это вас не смущает - числа, расположенные правильно, могут обозначать практически все! Есть одно ограничение, на которое следует обратить внимание - количество раз, которое мы можем читать или писать в EEPROM. По заявлению производителя Atmel, EEPROM рассчитан на 100 000 циклов чтения / записи (см. Техническое описание).

Шаг 4:

Теперь мы знаем наши биты и байты, сколько байтов можно сохранить в микроконтроллере Arduino? Ответ зависит от модели микроконтроллера. Например:

  • Платы с Atmel ATmega328, такие как Arduino Uno, Uno SMD, Nano, Lilypad и др. - 1024 байта (1 килобайт)
  • Платы с Atmel ATmega1280 или 2560, такие как серия Arduino Mega - 4096 байт (4 килобайта)
  • Платы с Atmel ATmega168, такие как оригинальный Arduino Lilypad, старый Nano, Diecimila и т. Д. - 512 байт.

Если вы не уверены, посмотрите индекс оборудования Arduino или спросите своего поставщика платы. Если вам нужно больше памяти EEPROM, чем доступно с вашим микроконтроллером, рассмотрите возможность использования внешнего EEPROM I2C.

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

Шаг 5:

Для использования EEPROM требуется библиотека, поэтому используйте в своих эскизах следующую библиотеку:

#include "EEPROM.h"

В остальном все очень просто. Для хранения фрагмента данных мы используем следующую функцию:

EEPROM.write (а, б);

Параметр a - это позиция в EEPROM для хранения целого числа (0 ~ 255) данных b. В этом примере у нас есть 1024 байта памяти для хранения, поэтому значение a находится в диапазоне от 0 до 1023. Чтобы получить часть данных также просто, используйте:

z = EEPROM.read (a);

Где z - целое число для хранения данных из позиции EEPROM a. Теперь посмотрим на пример.

Шаг 6:

Изображение
Изображение

Этот скетч будет создавать случайные числа от 0 до 255, сохранять их в EEPROM, а затем извлекать и отображать их на последовательном мониторе. Переменная EEsize - это верхний предел размера EEPROM, поэтому (например) это будет 1024 для Arduino Uno или 4096 для Mega.

// Демонстрация внутренней EEPROM Arduino

#включают

int zz; int EEsize = 1024; // размер в байтах EEPROM вашей платы

установка void ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println («Запись случайных чисел…»); для (int я = 0; я <EEsize; я ++) {zz = случайный (255); EEPROM.write (i, zz); } Serial.println (); для (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("Положение EEPROM:"); Serial.print (а); Serial.print ("содержит"); Serial.println (zz); задержка (25); }}

Появится вывод последовательного монитора, как показано на изображении.

Итак, у вас есть еще один полезный способ хранения данных с нашими системами Arduino. Хотя это не самое захватывающее руководство, оно, безусловно, полезно.

Этот пост предоставлен pmdway.com - все для производителей и любителей электроники с бесплатной доставкой по всему миру.

Рекомендуемые: