Страница 2 из 2
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 17:43
fsergei70
Сергей писал(а):напишите сколько переменных и каких типов Вы хотите сохранить, поименно. Потом продолжим. Я насчитал 7 переменных.
Две измеряемых переменных integer плюс время ( только Часы) и дату если дату и время сложно сделать то можно писать количество записей и от известной даты времени и периодичности делать пересчёт.
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 17:50
Сергей
fsergei70, не, дайте правильно ТЗ. Сколько переменных надо записать и каких типов (можно разных одновременно)?
Я "не знаю" что вы с этим блоком будете делать. И на данном этапе не хочу углублятся. Поэтому и прошу четко дать ТЗ. Время, дату температуру в ЕЕПРОМ записать нельзя. Записать можно переменную(нные). Что в этих переменных будет храниться это другой вопрос.
Поэтому определитесь что Вам нужно сохранить и напишите. Сколько там влезет данных это потом посмотрите и решите для себя от чего отказаться или что изменить, это называется - оптимизация. На данном этапе я могу Вам помочь сделать блок, который Вы сможете посмотреть и понять как код пишется.
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 17:54
Sancho
Сергей, Доставайте вторые пассатижи...
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 18:22
fsergei70
5 иinteger вот проект.
Проект не прикрепляется потому что весит 2 мб, вот скриншот
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 18:30
fsergei70
Проект в архиве
EEPROM вопросы по созданию переменных
Добавлено: 01 авг 2017, 21:18
Сергей
пробуйте. Результат жду, сам это делаю для общего развития.
А че не используете готовые блоки флпрог для считывания датчиков?
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 16:30
Sancho
Самое сложное в задачах с памятью - определится с алгоритмом(методом) восстановления информации о ПОСЛЕДНЕМ АДРЕСЕ при доступе к памяти при записи архивов для избежания затирания.
Лучшим, с моей точки зрения, является запись этого самого адреса в спец ячейку на последнем выдохе(заряде) ионистора после обработке сигнала "хана питанию"
При инициализации читаем, пишем дальше....
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 16:42
fsergei70
Sancho писал(а):Самое сложное в задачах с памятью - определится с алгоритмом(методом) восстановления информации о ПОСЛЕДНЕМ АДРЕСЕ при доступе к памяти при записи архивов для избежания затирания.Лучшим, с моей точки зрения, является запись этого самого адреса в спец ячейку на последнем выдохе(заряде) ионистора после обработке сигнала "хана питанию"
При инициализации читаем, пишем дальше....
Это как раз не очень сложно, какой адрес был последним подан на блок тот и надо сохранять. А после включения считывать и подавать на вход счетчика как начальное значение. Сложнее мне кажется это запись нескольких переменных одновременно, ведь процедура записи в память занимает много времени. Ну и заставить все это работать с внешней памятью. Вообще блок мне очень понравился, его можно использовать во многих местах, например изменять Настройки в проектах с modbus для работы мастера с несколькими слейвами.
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:04
Sancho
fsergei70 писал(а):какой адрес был последним подан на блок тот и надо сохранять
Если его каждый раз при записи перезаписвать, и если это будет происходить часто - протрём дырку.
В Вашем случае, как я понял, раз в час - без проблем.
Сейчас очень плотно подсел на 24С32(64), в плане понятия работы с ней и создания блока. После вчерашних бесед.
Вопросы, что всплывают: запись г,мм,дд,чч; один чистый uint, три 0-511 - температуру можно считать с 50С, правда?, один 0-31. пойдёт?
500 записей на память платы часов.
Добавлено (02.08.2017, 17:04)
---------------------------------------------
fsergei70 писал(а):ведь процедура записи в память занимает много времени
максимум 10 мс - это много?
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:08
fsergei70
Ну адрес каждый час писать не надо ведь а только при пропадании питания. Если питать ардуинку вольт от 9 и подать напругу через делитель на вход то сигнал на входе изменится раньше чем ардуино отрубиться, времени должно хватить чтоб сохранить значение.
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:16
Sancho
fsergei70 писал(а):Ну адрес каждый час писать не надо ведь а только при пропадании питания. Если питать ардуинку вольт от 9 и подать напругу через делитель на вход то сигнал на входе изменится раньше чем ардуино отрубиться, времени должно хватить чтоб сохранить значение.
Отлично, мой ход мыслей Вы поняли,
как насчёт диапазона записываемых параметров?
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:16
fsergei70
Год, месяц, число, и часы можно в byte писать ну а температуру и расход в int, как Сергей в своём блоке сделал тремя постами выше
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:30
Sancho
Хотя это не принципиально - записываться будет восемь байт - распределить можно как душе угодно.
Запись лучше вести блоками по 2, 4, 8, 16 или 32 байта.
Добавлено (02.08.2017, 17:20)
---------------------------------------------
год -1 бит
месяц - 5 бит
день - 5 бит
час - 5 бит
ИТОГО 2 байта!
Добавлено (02.08.2017, 17:23)
---------------------------------------------
Год вообще не важно, хотя...
Если взять
24С256, да ещё восемь штук.....
Добавлено (02.08.2017, 17:30)
---------------------------------------------
Думаю, скоро
Сергей тоже скоро заинтересуется внешней памятью за смешные деньги...
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:32
fsergei70
Да конечно лучше блоками. В моем случае за глаза хватает блока в 8 байт, но подойдёт допустим блок в 4 байта просто придётся 2 блока использовать и адресное пространство попала делить. Еслиб в стандартном блоке был вход установки адреса то и изобретать ничего не нужно было бы.
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 17:40
Sancho
fsergei70 писал(а):Да конечно лучше блоками. В моем случае за глаза хватает блока в 8 байт, но подойдёт допустим блок в 4 байта просто придётся 2 блока использовать и адресное пространство попала делить. Еслиб в стандартном блоке был вход установки адреса то и изобретать ничего не нужно было бы.
Написанное мной
Sancho писал(а):Запись лучше вести блоками по 2, 4, 8, 16 или 32 байта.
относится к оптимальной работе с ВНЕШНЕЙ памятью.
Можно, конечно-же, и с одним байтом работать
EEPROM вопросы по созданию переменных
Добавлено: 02 авг 2017, 23:49
Сергей
Парни, я пока от вашей темы отвлекусь. Завтра на работу на неделю. Буду свой автомат доделывать и запускать.
fsergei70 писал(а):Еслиб в стандартном блоке был вход установки адреса то и изобретать ничего не нужно было бы.
это точно
EEPROM вопросы по созданию переменных
Добавлено: 03 авг 2017, 17:54
Sancho
EEPROM вопросы по созданию переменных
Добавлено: 03 авг 2017, 18:23
fsergei70
Огромное спасибо, буду пробовать.