Arduino IDE. Инициализация EEPROM?

Тема в разделе "Arduino & Shields", создана пользователем Vovka, 16 сен 2018.

  1. Vovka

    Vovka Гик

    Что-то никак не найду, как инициализировать EEPROM для файла прошивки?
    Пишу так:
    Код (C++):

    #include <EEPROM.h>
    #include <LiquidCrystal.h>
    LiquidCrystal disp(2, 3, 4, 5, 6, 7);

    unsigned char ID;
    unsigned char device_id EEMEM = 1;

    void loop()
    {
    ID = EEPROM[0];
    disp.print(ID,HEX); - на дисплей выводит ноль!

    EEPROM[0] = 5;
    ID = EEPROM[0];
    disp.print(ID,HEX); - на дисплей выводит 5
    ....
    }
     
  2. parovoZZ

    parovoZZ Гуру

    Не надо ничего инициализировать. Записываешь по адресу значение, потом читаешь.
     
  3. Vovka

    Vovka Гик

    Тогда получается, если у меня 512 байт EEPROM нужно инициализировать, то это нужно как-то вычислять, была ли инициализация, потом в прошивке держать таблицу инициализации и плюс ко всему код самой инициализации - сколько памяти теряется... :(
    Хотя можно сделать вторую прошивку для инициализации EEPROM... Лишние телодвижения...
    А Arduino IE при заливке скетча никогда не трогает EEPROM?
     
  4. parovoZZ

    parovoZZ Гуру

    А что ты туда хочешь записывать?
     
  5. Vovka

    Vovka Гик

    Таблица пересчета значения АЦП в логику управления 8 выходов.
    Но не в этом суть. Например, первый байт - номер этого устройства в сети.
    При прошивке гораздо удобнее изменить один байт в файле, чем каждый раз перекомпилировать проект.
     
  6. parovoZZ

    parovoZZ Гуру

    Ну запиши ее туда предварительно. Делов-то.
     
  7. b707

    b707 Гуру

    только не забыть проверить фьюзы. чтобы при следующей прошивке ЕЕПРОМ не почистилась в ноль
     
    parovoZZ нравится это.
  8. Vovka

    Vovka Гик

    А где в Arduino IDE фьюзы выставляются?
     
  9. В ардуино нормальной работы с EEPROM не предусмотрено. Так что только делать отдельную прошивку для инициализации.
     
  10. parovoZZ

    parovoZZ Гуру

    В файлах настройки. Но лучше использовать для этого профессиональный софт, а не софт для робокружков.
     
  11. SergeiL

    SergeiL Оракул Модератор

    А что, CRC посчитать и если не совпадает - проинициализировать - не катит?
    Есть значения по умолчанию, если CRC не совпадает - записать значения по умолчанию.
     
  12. parovoZZ

    parovoZZ Гуру

    Я не понимаю - что хотите инициализировать? Если таблица лежит в прошивке во флеше- пусть там и лежит. Зачем ее копировать в епром?
     
  13. SergeiL

    SergeiL Оракул Модератор

    Вопрос про флэш или в еепром? :)
     
  14. Если есть значения по умолчанию, то почему бы и нет. Но это особый случай.
     
  15. Vovka

    Vovka Гик

    А как сделать, чтоб мой проект подхватывал эти файлы? Или может где толково расписано как это делать?
     
  16. Vovka

    Vovka Гик

    Не всегда катит, например: в еепром сидит ID этого устройства, а по умолчанию будет выставляться одно и тоже значение с соответствующими последствиями...
     
  17. Vovka

    Vovka Гик

    Так таблица не вся используется, выборочно от условий, да и плюс периодически корректируется...
     
  18. Не надо ничего делать с фьюзами, они уже выставлены в ардуино.
     
  19. SergeiL

    SergeiL Оракул Модератор

    Ну Вам же его все равно нужно задать. Либо в коде, либо в через назначение в EEPROM.
    Можно время компиляции в качестве части ID использовать. На ESP - часть MAC адреса
     
    Последнее редактирование: 18 сен 2018
  20. parovoZZ

    parovoZZ Гуру

    Я вообще не понимаю из-за чего сыр-бор. Челдону надо создать два файла - один с программой, другой с данными для eeprom. Оба файла прекрасно заливаются через любой программатор.
     
    Vovka нравится это.