Работа с EEPROM
Работа с EEPROM
Имеем переменную Х, Holding Registers Modbus.
Как используя встроенный в Nano EEPROM сделать для переменной
1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.
При этом не убить EEPROM
Как используя встроенный в Nano EEPROM сделать для переменной
1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.
При этом не убить EEPROM
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
1. Откуда там возьмётся, в EEPROM. Если уже там было, то и останетсяmanjey73 писал(а): 15 мар 2019, 11:55Имеем переменную Х, Holding Registers Modbus.
Как используя встроенный в Nano EEPROM сделать для переменной
1. начальное значение переменной перед прошивкой Nano
2. при запуске отправить ее в регистр Modbus
3. при изменении по Modbus сохранить в EEPROM и использовать новое значение.
При этом не убить EEPROM

2. берёте из ячейки памяти, EEPROM, и отправляете в регистр на первой плате, выполняющейся один раз при старте мк. Описано 100500 раз на форуме.
3. ставите детектор изменения числа на регистр, по его выходу запись.
[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
не убьете. насколько я знаю(по крайней мере в прошлых версиях флрог) используется функция update
она не запишет , если значение такое же как то, которое лежит в эпроме. но функция довольно медленная. поэтому все лучше
как сказали выше
Работа с EEPROM
[ref=#ff8000]Sancho[/ref], можно еще примерчик с экранной переменной ?
Изменение переменной на экране должно приводить к изменению переменной по Modbus и в программе и наоборот.
Откуда возьмется и речь ? как ее туда впихнуть при прошивке Nano ? то есть сделать инициализацию даже на голую Nano ?
Отправлено спустя 1 минуту 16 секунд:
[ref=#ff8000]pan[/ref], как это не убьется, если каждый цикл будет писаться в Eeprom при простом варианте ?
Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
Изменение переменной на экране должно приводить к изменению переменной по Modbus и в программе и наоборот.
Откуда возьмется и речь ? как ее туда впихнуть при прошивке Nano ? то есть сделать инициализацию даже на голую Nano ?
Отправлено спустя 1 минуту 16 секунд:
[ref=#ff8000]pan[/ref], как это не убьется, если каждый цикл будет писаться в Eeprom при простом варианте ?
Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
[ref]manjey73[/ref],
А второй проект рабочий. При этом чтение будет из адреса, по которому была запись в первый раз.
Если была единственная ячейка - будет в 0 ячейке, впервые созданной в проекте.
Отправлено спустя 2 минуты 17 секунд:
У Вас слэйв или мастер?manjey73 писал(а): 15 мар 2019, 12:43Изменение переменной на экране должно приводить к изменению переменной по Modbus и в программе и наоборот.
Прошейте нано в два этапа, если прям так надо. Сначала просто запись в память числа, нужного.manjey73 писал(а): 15 мар 2019, 12:43Откуда возьмется и речь ? как ее туда впихнуть при прошивке Nano ? то есть сделать инициализацию даже на голую Nano ?
А второй проект рабочий. При этом чтение будет из адреса, по которому была запись в первый раз.
Если была единственная ячейка - будет в 0 ячейке, впервые созданной в проекте.
Отправлено спустя 2 минуты 17 секунд:
Не убъётся - библиотека для памяти вначале сравнивает, что Вы пытаетесь записать в ячейку с её содержимым, побайтно. При наличии различий - обновляет/перезаписывает. Но это сопровождается чтением каждый раз в цикле.manjey73 писал(а): 15 мар 2019, 12:44pan, как это не убьется, если каждый цикл будет писаться в Eeprom при простом варианте ?
Мне и нужен пример как это все сделать, с учетом голой полностью Nano (или другой платы), чтобы потом не заниматься расставлением значений в переменных.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
[ref=#ff8000]Sancho[/ref], Nano будет слейв.
В два этапа это не комильфо, хотелось бы чтобы это было реализовано перед выполнением программы сразу после прошивки голой железки.
Иначе зачем все это ? Переменная - Значение по умолчанию ?
Вот и надо. 1 - инициализировать все переменные в Eeprom и 2 - возможность изменения переменной из двух источников.
Ну и правильно читать/писать, чтобы не грохнуть eeprom пихая туда в каждом цикле значение.
В два этапа это не комильфо, хотелось бы чтобы это было реализовано перед выполнением программы сразу после прошивки голой железки.
Иначе зачем все это ? Переменная - Значение по умолчанию ?
Вот и надо. 1 - инициализировать все переменные в Eeprom и 2 - возможность изменения переменной из двух источников.
Ну и правильно читать/писать, чтобы не грохнуть eeprom пихая туда в каждом цикле значение.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
[ref]manjey73[/ref], Сори, затупил на голодный желудок, да и забыл слегка.
Ставите галочку стартовое значение, вписываете значение - и всё.
Ставите галочку стартовое значение, вписываете значение - и всё.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
[ref=#ff8000]pan[/ref], а какой смысл читать в каждом цикле из eeprom ?, один раз прочитали и забыли. При изменении записали один раз и забыли.
з.ы. Извините за глупые вопросы, а только учусь в FLProg, есть блоки и т.д. которые мне незнакомы из-за специфики, и как они потом работают в коде не разбирался особо, так как С++ не родной язык.
Отправлено спустя 2 минуты 57 секунд:
[ref=#ff8000]Sancho[/ref], упс, а я думал это ячейка памяти стартовая
после 32766 если увеличивать будет все время увеличиваться, хотя переменная Integer..
Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
з.ы. Извините за глупые вопросы, а только учусь в FLProg, есть блоки и т.д. которые мне незнакомы из-за специфики, и как они потом работают в коде не разбирался особо, так как С++ не родной язык.
Отправлено спустя 2 минуты 57 секунд:
[ref=#ff8000]Sancho[/ref], упс, а я думал это ячейка памяти стартовая

Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
Работа с EEPROM
абсолютно ни какого. поэтому и написал
pan писал(а): 15 мар 2019, 12:32не убъете ....... но функция довольно медленная. поэтому все лучше
как сказали выше
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
Только long, двухбайтного нет (manjey73 писал(а): 15 мар 2019, 13:15Кстати попутный вопрос, а где uint ? в программе ? потом ручками в коде править ?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
Вы хотите сказать что даже в коде IDE нельзя потом подправить на UINT ? это типа фишка Arduino а не Flprog ?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
В коде можно всё. Даже написать по новой 

мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
Такс, немного не понимаю как тогда будет выглядеть графически.
Если поставить SEEPROM с указанием стартового значения на плате1 например и сделать выполнение платы по переменной тогда нет необходимости писать на входе V какую-то переменную?
Тогда получается нужно еще в каком-то месте записывать в эту переменную при изменених в ту же переменную eeprom.
Одной конструкцией это можно как-то сделать ? то есть и указать нач.значение в eeprom и тут же писать другое, если переменная изменилась ?
Если поставить SEEPROM с указанием стартового значения на плате1 например и сделать выполнение платы по переменной тогда нет необходимости писать на входе V какую-то переменную?
Тогда получается нужно еще в каком-то месте записывать в эту переменную при изменених в ту же переменную eeprom.
Одной конструкцией это можно как-то сделать ? то есть и указать нач.значение в eeprom и тут же писать другое, если переменная изменилась ?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
Как работает "Стартовое значение"-
Создаётся ячейка, специальная, по адресу ноль.
Прога, флп, генерит переменную, байт, например,99.
При старте проекта на мк считывается ячейка 0, сравнивается с переменной,99.
Если не равна, то перезаписываются все Ваши ячейки нужными Вам(указанными) значениями, и в 0-ю записывается 99.
Иначе ничего.
При следующем запуске мк ячейка 0 считывается, но она равна 99, перезапись не происходит, данные остаются как и были.
Отправлено спустя 1 минуту 9 секунд:
При следующей компиляции кода, флпрог сгенерит другое число, и данные в ячейках, Ваших, обновятся на указанные как стартовые.
Создаётся ячейка, специальная, по адресу ноль.
Прога, флп, генерит переменную, байт, например,99.
При старте проекта на мк считывается ячейка 0, сравнивается с переменной,99.
Если не равна, то перезаписываются все Ваши ячейки нужными Вам(указанными) значениями, и в 0-ю записывается 99.
Иначе ничего.
При следующем запуске мк ячейка 0 считывается, но она равна 99, перезапись не происходит, данные остаются как и были.
Отправлено спустя 1 минуту 9 секунд:
При следующей компиляции кода, флпрог сгенерит другое число, и данные в ячейках, Ваших, обновятся на указанные как стартовые.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
Каких вариантов, чего и почему случается?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
Удалил из проекта все, что делал с eeprom. Перегрузил ПК, Flprog при попытке компиляции вылетает. Пишта всему проекту, который рисовал..... Ну что за хрень то, А ????
что могло сломаться ? Программа как черепаха, даже при изменении приоритета, и такая срань.....
А блин, сорри, что-то продолжал рисовать, вх/выходы еще не все подключены, но опять же, зачем так падать ? При этом пишет проект корректен.....
Отправлено спустя 39 минут 32 секунды: В общем херня какая-то. Убить еще неделю только на перерисовку это просто швах...
Придется похоже С++ изучать и писать сразу в IDE и не тратить время на FLProg
Попробовал версию 5 - открыла и упала с той же ошибкой при попытке компиляции...
что могло сломаться ? Программа как черепаха, даже при изменении приоритета, и такая срань.....
А блин, сорри, что-то продолжал рисовать, вх/выходы еще не все подключены, но опять же, зачем так падать ? При этом пишет проект корректен.....

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

Придется похоже С++ изучать и писать сразу в IDE и не тратить время на FLProg
Попробовал версию 5 - открыла и упала с той же ошибкой при попытке компиляции...

У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Работа с EEPROM
Почему неделю на перерисовку?
Возьмите предыдущее Ваше сохранение.
Отправлено спустя 4 минуты 5 секунд:
Писал
несколько
раз
Возьмите предыдущее Ваше сохранение.
Отправлено спустя 4 минуты 5 секунд:
Писал
несколько
раз
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Работа с EEPROM
Потому что много всего. Ну и такой ошибки не ожидал. Вроде все из стандартных блоков (почти)... Но ругается на
Arduino.CounterBlock(Object)>>doesNotUnderstand:
Receiver: (id=13037) an Arduino.CounterBlock
Arg1: (id=15084) a Message with selector: #declaringValueOutputName and arguments: #()
Что за Arduino.Counter ? куда копать чтобы вылечить ?
Arduino.CounterBlock(Object)>>doesNotUnderstand:
Receiver: (id=13037) an Arduino.CounterBlock
Arg1: (id=15084) a Message with selector: #declaringValueOutputName and arguments: #()
Что за Arduino.Counter ? куда копать чтобы вылечить ?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей