adrduino eeprom

This commit is contained in:
Alexander Popov 2023-09-03 11:41:30 +03:00
parent 9c390fe669
commit ffd578ad39
Signed by: iiiypuk
GPG Key ID: E47FE0AB36CD5ED6
3 changed files with 92 additions and 0 deletions

View File

@ -0,0 +1,15 @@
## Память
| Тип | Чтение из программы | Запись из программы | Очистка при перезагрузке |
|--------|---------------------|---------------------|--------------------------|
| Flash | Да, PROGMEM | Можно, но сложно | Нет |
| SRAM | Да | Да | Да |
| EEPROM | Да | Да | Нет |
EEPROM представляет собой область памяти, состоящую из элементарных ячеек
с размером в один байт (как SRAM). Объём EEPROM разный у разных моделей МК:
* ATmega328 (Arduino UNO, Nano, Pro Mini): `1 кБ`
* ATmega2560 (Arduino Mega): `4 кБ`
* ATtiny85 (Digispark): `512 Б`
* ESP8266 / ESP32: `4096 Б`

View File

@ -0,0 +1,27 @@
#include <EEPROM.h>
/**
* EEPROM.write(адрес, данные) пишет данные (только byte!) по адресу
* EEPROM.update(адрес, данные) обновляет (та же запись, но лучше) байт данных,
* находящийся по адресу. Не реализована для esp8266/32!
* EEPROM.read(адрес) читает и возвращает байт данных, находящийся по адресу
* EEPROM.put(адрес, данные) записывает (по факту обновляет, update) данные любого типа
* (типа переданной переменной) по адресу
* EEPROM.get(адрес, данные) читает данные по адресу
* и сам записывает их в данные указанную переменную
* EEPROM[] библиотека позволяет работать с EEPROM памятью
* как с обычным массивом типа byte (uint8_t)
*/
void setup() {
Serial.begin(9600);
Serial.println(EEPROM.read(10)); // выведет 255
Serial.println(EEPROM.get(10)); // выведет 255
Serial.println(EEPROM[10]); // выведет 255
}
void loop() {
//
}

View File

@ -0,0 +1,50 @@
void setup() {
Serial.begin(9600);
size_t size_variable;
int example_int;
unsigned int example_uint;
signed int example_sint;
unsigned long example_ulint;
float example_float;
double example_double;
char example_char;
char * example_string;
size_variable = sizeof(example_int);
Serial.print("int bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_uint);
Serial.print("unsigned int bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_sint);
Serial.print("signed int bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_ulint);
Serial.print("unsigned long bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_float);
Serial.print("float bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_double);
Serial.print("double bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_char);
Serial.print("char bytes size: " );
Serial.println(size_variable);
size_variable = sizeof(example_string);
Serial.print("char * bytes size: " );
Serial.println(size_variable);
}
void loop() {
//
}