Работа с EEPROM

не совсем догнал как ?

Вопросы от новичков
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#1

Сообщение manjey73 » 15.03.2019{, 11:55}

Имеем переменную Х, Holding Registers Modbus.

Как используя встроенный в Nano EEPROM сделать для переменной

1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.

При этом не убить EEPROM

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#2

Сообщение Sancho » 15.03.2019{, 12:24}

manjey73 писал(а):
15.03.2019{, 11:55}
Имеем переменную Х, Holding Registers Modbus.
Как используя встроенный в Nano EEPROM сделать для переменной
1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.
При этом не убить EEPROM
1. Откуда там возьмётся, в EEPROM. Если уже там было, то и останется :) Галку стартовое значение не ставить!
2. берёте из ячейки памяти, EEPROM, и отправляете в регистр на первой плате, выполняющейся один раз при старте мк. Описано 100500 раз на форуме.
3. ставите детектор изменения числа на регистр, по его выходу запись.
СпойлерПоказать
screenshot_19-03-15_12-30-02.png
screenshot_19-03-15_12-30-02.png (10.96 КБ) 691 просмотр
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Работа с EEPROM

#3

Сообщение pan » 15.03.2019{, 12:32}

manjey73 писал(а):
15.03.2019{, 11:55}
При этом не убить EEPROM
не убьете. насколько я знаю(по крайней мере в прошлых версиях флрог) используется функция update
она не запишет , если значение такое же как то, которое лежит в эпроме. но функция довольно медленная. поэтому все лучше
как сказали выше

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#4

Сообщение manjey73 » 15.03.2019{, 12:43}

Sancho, можно еще примерчик с экранной переменной ?
Изменение переменной на экране должно приводить к изменению переменной по Modbus и в программе и наоборот.

Откуда возьмется и речь ? как ее туда впихнуть при прошивке Nano ? то есть сделать инициализацию даже на голую Nano ?

Отправлено спустя 1 минуту 16 секунд:
pan, как это не убьется, если каждый цикл будет писаться в Eeprom при простом варианте ?

Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#5

Сообщение Sancho » 15.03.2019{, 12:57}

manjey73,
manjey73 писал(а):
15.03.2019{, 12:43}
Изменение переменной на экране должно приводить к изменению переменной по Modbus и в программе и наоборот.
У Вас слэйв или мастер?
manjey73 писал(а):
15.03.2019{, 12:43}
Откуда возьмется и речь ? как ее туда впихнуть при прошивке Nano ? то есть сделать инициализацию даже на голую Nano ?
Прошейте нано в два этапа, если прям так надо. Сначала просто запись в память числа, нужного.
А второй проект рабочий. При этом чтение будет из адреса, по которому была запись в первый раз.
Если была единственная ячейка - будет в 0 ячейке, впервые созданной в проекте.

Отправлено спустя 2 минуты 17 секунд:
manjey73 писал(а):
15.03.2019{, 12:44}
pan, как это не убьется, если каждый цикл будет писаться в Eeprom при простом варианте ?

Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
Не убъётся - библиотека для памяти вначале сравнивает, что Вы пытаетесь записать в ячейку с её содержимым, побайтно. При наличии различий - обновляет/перезаписывает. Но это сопровождается чтением каждый раз в цикле.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#6

Сообщение manjey73 » 15.03.2019{, 13:01}

Sancho, Nano будет слейв.

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

Вот и надо. 1 - инициализировать все переменные в Eeprom и 2 - возможность изменения переменной из двух источников.
Ну и правильно читать/писать, чтобы не грохнуть eeprom пихая туда в каждом цикле значение.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Работа с EEPROM

#7

Сообщение pan » 15.03.2019{, 13:06}

manjey73 писал(а):
15.03.2019{, 12:44}
как это не убьется, если каждый цикл будет писаться в Eeprom
для тех кому лень читать
Изображение


Изображение


Изображение

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#8

Сообщение Sancho » 15.03.2019{, 13:11}

manjey73, Сори, затупил на голодный желудок, да и забыл слегка.
Ставите галочку стартовое значение, вписываете значение - и всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#9

Сообщение manjey73 » 15.03.2019{, 13:12}

pan, а какой смысл читать в каждом цикле из eeprom ?, один раз прочитали и забыли. При изменении записали один раз и забыли.

з.ы. Извините за глупые вопросы, а только учусь в FLProg, есть блоки и т.д. которые мне незнакомы из-за специфики, и как они потом работают в коде не разбирался особо, так как С++ не родной язык.

Отправлено спустя 2 минуты 57 секунд:
Sancho, упс, а я думал это ячейка памяти стартовая :) после 32766 если увеличивать будет все время увеличиваться, хотя переменная Integer..

Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Работа с EEPROM

#10

Сообщение pan » 15.03.2019{, 13:15}

manjey73 писал(а):
15.03.2019{, 13:12}
какой смысл читать в каждом цикле из eeprom
абсолютно ни какого. поэтому и написал
pan писал(а):
15.03.2019{, 12:32}
не убъете ....... но функция довольно медленная. поэтому все лучше
как сказали выше

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#11

Сообщение Sancho » 15.03.2019{, 13:18}

manjey73 писал(а):
15.03.2019{, 13:15}
Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
Только long, двухбайтного нет (
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#12

Сообщение manjey73 » 15.03.2019{, 13:22}

Вы хотите сказать что даже в коде IDE нельзя потом подправить на UINT ? это типа фишка Arduino а не Flprog ?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#13

Сообщение Sancho » 15.03.2019{, 13:24}

В коде можно всё. Даже написать по новой :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#14

Сообщение manjey73 » 15.03.2019{, 13:36}

Такс, немного не понимаю как тогда будет выглядеть графически.

Если поставить SEEPROM с указанием стартового значения на плате1 например и сделать выполнение платы по переменной тогда нет необходимости писать на входе V какую-то переменную?
Тогда получается нужно еще в каком-то месте записывать в эту переменную при изменених в ту же переменную eeprom.

Одной конструкцией это можно как-то сделать ? то есть и указать нач.значение в eeprom и тут же писать другое, если переменная изменилась ?

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#15

Сообщение Sancho » 15.03.2019{, 13:44}

Как работает "Стартовое значение"-
Создаётся ячейка, специальная, по адресу ноль.
Прога, флп, генерит переменную, байт, например,99.
При старте проекта на мк считывается ячейка 0, сравнивается с переменной,99.
Если не равна, то перезаписываются все Ваши ячейки нужными Вам(указанными) значениями, и в 0-ю записывается 99.
Иначе ничего.
При следующем запуске мк ячейка 0 считывается, но она равна 99, перезапись не происходит, данные остаются как и были.

Отправлено спустя 1 минуту 9 секунд:
При следующей компиляции кода, флпрог сгенерит другое число, и данные в ячейках, Ваших, обновятся на указанные как стартовые.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#16

Сообщение manjey73 » 15.03.2019{, 14:00}

3,14здец.... Теперь при любых вариантх при попытки компиляции flprog падает... :(

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#17

Сообщение Sancho » 15.03.2019{, 14:09}

Каких вариантов, чего и почему случается?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#18

Сообщение manjey73 » 15.03.2019{, 14:21}

Удалил из проекта все, что делал с eeprom. Перегрузил ПК, Flprog при попытке компиляции вылетает. Пишта всему проекту, который рисовал..... Ну что за хрень то, А ????

что могло сломаться ? Программа как черепаха, даже при изменении приоритета, и такая срань.....

А блин, сорри, что-то продолжал рисовать, вх/выходы еще не все подключены, но опять же, зачем так падать ? При этом пишет проект корректен..... :(

Отправлено спустя 39 минут 32 секунды:
FLProg_Error.jpg
FLProg_Error.jpg (22.1 КБ) 633 просмотра
В общем херня какая-то. Убить еще неделю только на перерисовку это просто швах... :(

Придется похоже С++ изучать и писать сразу в IDE и не тратить время на FLProg

Попробовал версию 5 - открыла и упала с той же ошибкой при попытке компиляции... :(

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Работа с EEPROM

#19

Сообщение Sancho » 15.03.2019{, 16:05}

Почему неделю на перерисовку?
Возьмите предыдущее Ваше сохранение.

Отправлено спустя 4 минуты 5 секунд:
Писал
несколько
раз
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07.03.2019{, 10:14}
Репутация: 3
Имя: Андрей

Работа с EEPROM

#20

Сообщение manjey73 » 15.03.2019{, 16:35}

Потому что много всего. Ну и такой ошибки не ожидал. Вроде все из стандартных блоков (почти)... Но ругается на

Arduino.CounterBlock(Object)>>doesNotUnderstand:
Receiver: (id=13037) an Arduino.CounterBlock
Arg1: (id=15084) a Message with selector: #declaringValueOutputName and arguments: #()

Что за Arduino.Counter ? куда копать чтобы вылечить ?

Ответить

Вернуться в «Начинающим»