ESP32 & GPIO12 input mode

Такая же как и Вас на скриншоте - 3.3.8

Огромное спасибо! Очень полезно.

2 пин задействован на управлении мотором.

15 - вход фазы энкодера.

12 - тоже планировался на энкодер задействовать. Но ни как не получилось. Заменил на 39. Он хоть и без подтяжки, но с PCNT библиотекой работает хорошо. И на энкодере есть подтяжка (вероятно к +3,3)

На текущий момент следующие модули подключены в проект:

Обработка bno055

VL530

арбитраж доступа к Serial и к i2c при помощи мьютексов.

2 'энкодера на моторах

2 датчика определения цвета

Сохранение конфига в eeprom

Подключен блютус - для снятия телеметрии и настроек коэф. ПИД регуляторов на планшете

Командный процессор - для подачи различных команд

И сын сделал первое приложение для андроид, что бы графики параметров ПИД регуляторов в динамике смотреть

Медленно но упорно мы продвигаемся к цели :slight_smile:

в нем нет еепрома, у гайвера есть библиотека которая держит в файле, это лучше

Да, я видел несколько разных вариантов. В нашем случае мы сохраняем только 1 структуру. Сама структура не превышает 200 байт. Там содержатся все настройки. Используем эмуляцию eeprom. 100к перезаписываний я думаю нам на несколько лет хватит.

void flash_write(void) {
  config_t& conf = getConfig();
  // Обновляем CRC (рассчитываем для всех полей кроме crc)
  size_t dataSize = sizeof(config_t) - sizeof(uint32_t);
  conf.crc = calculateHardwareCRC32((uint8_t*)&conf, dataSize);
  EEPROM.put(0, conf);
  EEPROM.commit();
}

uint32_t calculateHardwareCRC32(const uint8_t* data, size_t length) {
 return esp_crc32_le(0xFFFFFFFF, data, (uint32_t)length);
}

нет, нет никаких 100k, проверено, 10k даже нет, потом умирает ВСЯ флэш

Прицеплять внешнюю флешь пока в планах нет. Умрет - значит новую поставим.

Вообще запись на флешь предполагается только во время настроек, для подбора коэф. ПИД регуляторов. При штатной работе запись на флешь не предполагается.

В ней EEPROM эмулируется во флеше. Файловая система тоже эмулируется во флеше. Так что хрен редьки не слаще. Но для работы с файлами накладные расходы выше

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

10 тыс. записей. Считайте сами. Если не предполагается ежеминутная/ежечасная запись, то о ресурсе можно не думать. Считывание данных к износу не ведет, только запись

Во время настройки/отладки меняю значения коэф. В ручную. В 100 итераций думаю уложусь.

После отладки во флешь ни чего не предполагается записывать. Только чтение коэф.

зы. На СТМ32 в даташите видел 100 к перезаписываний. Это действительно так или сомнения?

Ни когда не проверял.

Нету такого микроконтроллера - это большое семейство. И даташиты для каждого типа свои. Но в основном скорее всего там обычная флеш, соответственно, 10 тыс. записей

тебе наверняка там понядобятся часики. Ну, для чего нибудь. Купи дешевый копеечны I2C модуль DS3231 (на них ставят еепромку). - будут у тебя и часы и еепромка.

По поводу протирания флешки до дыр.

Если у вас флегка большая, а полезных данных на ней - мало (например, флешка на 16 мег а скетч занимает 2 мегабайта всего), то можно сделать следующий финт:

  1. Отдать все свободное место на флешке под файловую систему FAT
  2. Использовать файлы в файловой системе FAT для записи своих данных (эмуляции EEPROM).

В чем тут прикол? Прикол в том, что на ESP32 фаловая система FAT использует прослоечку под названием wear levelling library. Эта библиотечка размазывает ваши данные по все флешке, стараясь не писать в одни и те же сектора. Даже, когда вы пишете в тот же самый файл, физически он будет записан по новым секторам. Так распределяется износ. Если свободного места много, то износ будет незначительным

держать в файле - чуть послащще, если правильно приготовить

Далеко не на все. На совсем уж копеечные не ставят :wink:

Да и не на совсем копеечные

Я ж не про удобство, а про накладные расходы))

зачем прицеплять, вскрыть крышечку и заменить, загрузчик не во флэше, так что подхватит любую, даже 256 мегабит, только в память программ ESP умеет только 16

я думал, что это только LittleFS умеет размазывать по флэшу, а оно вон оказывается как

я библиотеку Гайвера до дыр не проверял, только без библиотеки, но он утверждает, что размазывает

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

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