support писал(а): ↑08.04.2019{, 19:35}
Gordon0007 писал(а): ↑08.04.2019{, 17:57}
2. Добавить или расширить работу с ЕЕПРОМ как встроенным так и внешним с возможностью задавать адрес для внешнего ЕЕПРОМ.
Это есть, в дереве проекта, в свойствах контроллера.
Да возможность добавить есть новую память с нужным адресом есть, а вот при сохранение выбрать на какую память сохранить нет возможности. Я так понимаю сохранение происходит на ту память которая находится первая в списке и когда она заполняется запись идет на вторую и т.д.. Я же прошу чтобы в блоке была возможность выбрать на какую память записать данные, то да бы появилась возможность использовать сколько душе угодно чипов памяти. Допустим все важное записываем на внутреннюю, а промежуточные сохранение или большой объем данных на внешнюю, которую в случае чего всегда можно заменить если случайно забыл, что пишется данные каждый цикл программы или с при частом использование при тестах.
Так же я прошу добавить возможность назначать имя для ЕЕПРОМ из переменных, это облегчит возможность множества сохранений и так же их считывания. Допустим задал имя с 0 до 99 для таймеров и сохраняешь их, а когда нужно считать таймер то просто в одном блоке задаешь нужный таймер и нет проблем, в данный момент это 100 блоков с разными именами где можно запросто запутаться и выбрать не тот из списка (Я конечно понимаю, что это моя проблема). Но если как в моем случае было 500 блоков "Делаю управление насосами 6 насосов управляются (номер насоса, количество, день недели, ЧАС, МИНУТА) это 5 массивов по 100 значений". Со 100ми блоками такого типа система просто зависла и пришлось искать блоки пользователя. Да и считывать будет просто создал 5 блоков и считываешь значение со смещением 0, +100, +200, +300, +400. Причем в библиотеке на ЕЕПРОМ эта возможность есть, просто нужно расширить работу самого блока до возможностей библиотеки. Да и есть уже довольно хороший блок пользователя для сохранения, но он не универсальный так как его код приходится править под каждый проект отдельно и есть множество ограничений по его использования, которые можно обойти используя возможности библиотеки #include EEPROM.h.
Функция ; Назначение
read(address) ; считывает 1 байт из EEPROM; address – адрес, откуда считываются данные (ячейка, начиная с 0);
write(address, value) ; записывает в память значение value (1 байт, число от 0 до 255) по адресу address;
update(address, value) ; заменяет значение value по адресу address, если её старое содержимое отличается от нового;
get(address, data) ; считывает данные data указанного типа из памяти по адресу address;
put(address, data) ; записывает данные data указанного типа в память по адресу address;
EEPROM[address] ; позволяет использовать идентификатор "EEPROM" как массив, чтобы записывать данные в память и считывать их из памяти.
Еще бы у многих блоков не помешал бы выход с ошибками, допустим Часы или таже память ЕЕПРОМ (другие устройства которые поддерживают эту возможность, это касается почти всех интерфейсных устройств) неисправны или отвалились или сгорели или данные приходят не полностью, чтобы на этом выходе(выходах) поднимался флаг. Это бы тоже улучшило бы написание программы как диагностика устройств или вывод ошибок. В моем новом проекте по автоматизации аквариума дома, это очень пригодилось бы.
Заранее спасибо за понимание, просто намучался я с этими сохранениями в недавнем прошлом