Работа с EEPROM

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

Работа с EEPROM

Сообщение manjey73 »

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

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

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

При этом не убить EEPROM
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

manjey73 писал(а): 15 мар 2019, 11:55Имеем переменную Х, Holding Registers Modbus.
Как используя встроенный в Nano EEPROM сделать для переменной
1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.
При этом не убить EEPROM
1. Откуда там возьмётся, в EEPROM. Если уже там было, то и останется :) Галку стартовое значение не ставить!
2. берёте из ячейки памяти, EEPROM, и отправляете в регистр на первой плате, выполняющейся один раз при старте мк. Описано 100500 раз на форуме.
3. ставите детектор изменения числа на регистр, по его выходу запись.
[spoiler]
screenshot_19-03-15_12-30-02.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

Работа с EEPROM

Сообщение pan »

manjey73 писал(а): 15 мар 2019, 11:55При этом не убить EEPROM
не убьете. насколько я знаю(по крайней мере в прошлых версиях флрог) используется функция update
она не запишет , если значение такое же как то, которое лежит в эпроме. но функция довольно медленная. поэтому все лучше
как сказали выше
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

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

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

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

Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

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

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

Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
Не убъётся - библиотека для памяти вначале сравнивает, что Вы пытаетесь записать в ячейку с её содержимым, побайтно. При наличии различий - обновляет/перезаписывает. Но это сопровождается чтением каждый раз в цикле.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

[ref=#ff8000]Sancho[/ref], Nano будет слейв.

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

Вот и надо. 1 - инициализировать все переменные в Eeprom и 2 - возможность изменения переменной из двух источников.
Ну и правильно читать/писать, чтобы не грохнуть eeprom пихая туда в каждом цикле значение.
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

Работа с EEPROM

Сообщение pan »

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


Изображение


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

Работа с EEPROM

Сообщение Sancho »

[ref]manjey73[/ref], Сори, затупил на голодный желудок, да и забыл слегка.
Ставите галочку стартовое значение, вписываете значение - и всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

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

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

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

Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

Работа с EEPROM

Сообщение pan »

manjey73 писал(а): 15 мар 2019, 13:12какой смысл читать в каждом цикле из eeprom
абсолютно ни какого. поэтому и написал
pan писал(а): 15 мар 2019, 12:32не убъете ....... но функция довольно медленная. поэтому все лучше
как сказали выше
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

manjey73 писал(а): 15 мар 2019, 13:15Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
Только long, двухбайтного нет (
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

Вы хотите сказать что даже в коде IDE нельзя потом подправить на UINT ? это типа фишка Arduino а не Flprog ?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

В коде можно всё. Даже написать по новой :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

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

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

Одной конструкцией это можно как-то сделать ? то есть и указать нач.значение в eeprom и тут же писать другое, если переменная изменилась ?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

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

Отправлено спустя 1 минуту 9 секунд:
При следующей компиляции кода, флпрог сгенерит другое число, и данные в ячейках, Ваших, обновятся на указанные как стартовые.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

3,14здец.... Теперь при любых вариантх при попытки компиляции flprog падает... :(
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

Каких вариантов, чего и почему случается?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

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

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

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

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

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

Попробовал версию 5 - открыла и упала с той же ошибкой при попытке компиляции... :(
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с EEPROM

Сообщение Sancho »

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

Отправлено спустя 4 минуты 5 секунд:
Писал
несколько
раз
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
manjey73
Рядовой
Сообщения: 42
Зарегистрирован: 07 мар 2019, 10:14
Имя: Андрей

Работа с EEPROM

Сообщение manjey73 »

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

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

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя