Однократно считать с EEPROM

Использование внешней и внутренней EEPROM, а так-же SD card
Ответить
kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#1

Сообщение kbplug » 19.04.2017{, 15:04}

Добрый день, подскажите пожалуйста как правильно однократно при включении питания ардуино считать данные из EEPROM и присвоить их переменным, я делаю вот так но не уверен что это оптимально:

Изображение

Аватара пользователя
slavas
Лейтенант
Сообщения: 587
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Однократно считать с EEPROM

#2

Сообщение slavas » 19.04.2017{, 15:16}

да

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#3

Сообщение kbplug » 19.04.2017{, 15:23}

slavas, Спасибо.

Аватара пользователя
jonik22sm
Лейтенант
Сообщения: 645
Зарегистрирован: 20.11.2015{, 11:28}
Репутация: 1
Откуда: Краснодар
Имя: Евгений
Контактная информация:

Однократно считать с EEPROM

#4

Сообщение jonik22sm » 19.04.2017{, 17:17}

Лучше всего делать так
1) создаёш плату №1 туда кидаешь чтение из EEPROM все которые тебе нужны


2) когда открываешь в arduino IDE плату №1 переносишь в область void setup

Вложения
9673852.png
8187823.png
0971939.png
Можно сделать ВСЁ. Было бы желание.

Аватара пользователя
slavas
Лейтенант
Сообщения: 587
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Однократно считать с EEPROM

#5

Сообщение slavas » 20.04.2017{, 10:56}

jonik22sm, может асcемблер проще?

Аватара пользователя
jonik22sm
Лейтенант
Сообщения: 645
Зарегистрирован: 20.11.2015{, 11:28}
Репутация: 1
Откуда: Краснодар
Имя: Евгений
Контактная информация:

Однократно считать с EEPROM

#6

Сообщение jonik22sm » 20.04.2017{, 11:45}

я когда на работе собирал расходомеры клея то меня только это спасло
а через триггер подглючивало

Добавлено (20.04.2017, 11:45)
---------------------------------------------
зато 100% прочитается 1 раз
Можно сделать ВСЁ. Было бы желание.

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#7

Сообщение kbplug » 20.04.2017{, 14:09}

jonik22sm, Спасибо буду иметь ввиду.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Однократно считать с EEPROM

#8

Сообщение Oleg_UA » 21.04.2017{, 02:09}

Можно ещё через условие выполнения платы, главное запись переменной START размещать последней (не раньше платы с чтением)
Вложения
8041274.jpg
Последний раз редактировалось Oleg_UA 22.04.2017{, 12:33}, всего редактировалось 1 раз.

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

Однократно считать с EEPROM

#9

Сообщение Sancho » 21.04.2017{, 12:21}

jonik22sm писал(а):Лучше всего делать так
1) создаёш плату №1 туда кидаешь чтение из EEPROM все которые тебе нужны
2) когда открываешь в arduino IDE плату №1 переносишь в область void setup
Правильное, самое правильное, решение - в void setup
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#10

Сообщение kbplug » 21.04.2017{, 12:29}

Так может тогда есть смысл попросить автора интегрировать данное решение в FLProg.
Скажем, можна добавить галочку в свойства платы "запускать однократно".

OlegAn1962
Лейтенант
Сообщения: 361
Зарегистрирован: 07.09.2015{, 23:53}
Репутация: 0

Однократно считать с EEPROM

#11

Сообщение OlegAn1962 » 21.04.2017{, 12:47}

Здесь три решения этого вопроса, нужен еще четвертый?

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#12

Сообщение kbplug » 21.04.2017{, 12:56}

Нужен один но он должен быть правильный и не должен ни при каких обстоятельствах вызывать ошибок. И если самое правильное, решение - в void setup то хотелось бы чтобы это можно было сделать из FLProg.

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Однократно считать с EEPROM

#13

Сообщение support » 21.04.2017{, 18:32}

В первом посту вы почти правильно описали решение.
На первой плате делаете такую схему

Вложения
1711230.png
Автор программы FLProg.

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 15

Однократно считать с EEPROM

#14

Сообщение kbplug » 21.04.2017{, 19:39}

support, Спасибо за ответ.

Аватара пользователя
jonik22sm
Лейтенант
Сообщения: 645
Зарегистрирован: 20.11.2015{, 11:28}
Репутация: 1
Откуда: Краснодар
Имя: Евгений
Контактная информация:

Однократно считать с EEPROM

#15

Сообщение jonik22sm » 21.04.2017{, 21:44}

да но он в любом случае читается каждый раз просто выполняется один раз
а если в void setup то он и читается только при загрузке и ВСЁ больше не участвует в коде

Добавлено (21.04.2017, 21:44)
---------------------------------------------
Или я неправ!?

Добавлено (21.04.2017, 21:44)
---------------------------------------------
Мне очень помогло в расходомере
Можно сделать ВСЁ. Было бы желание.

Аватара пользователя
support
Супермодератор
Сообщения: 1840
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 690
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Однократно считать с EEPROM

#16

Сообщение support » 21.04.2017{, 22:30}

Нет не правы. Вот образец кода который получается

  if (_trgrt1) {
    _gtv1 = (readIntegerFromEEPROM(0, 0, 0x0));
  }

Читается только если  _trgrt1 = 1. А она равнв 1 один раз при пуске контроллера.  В остальных случаях код чтения пропускается
Автор программы FLProg.

Аватара пользователя
Oleg_UA
Сержант
Сообщения: 115
Зарегистрирован: 07.01.2017{, 23:30}
Репутация: 6
Откуда: Днепр
Имя: Олег

Однократно считать с EEPROM

#17

Сообщение Oleg_UA » 22.04.2017{, 12:49}

support писал(а):Читается только если  _trgrt1 = 1. А она равнв 1 один раз при пуске контроллера.  В остальных случаях код чтения пропускается
С использованием триггера и нескольких блоков чтения из памяти - программа создаёт столько условий  if (_trgrt2) сколько было создано блоков чтения и две переменные, но  когда создать условие выполнения платы тогда создаётся только одно условие if (var1 == 0) и нужна только одна переменная.
Но в любом случае сделать возможность переноса в void setup() было-бы очень полезно.

//Плата:с триггером

if (1) { if (_trgrt2I) { _trgrt2 = 0;} else {_trgrt2 = 1; _trgrt2I = 1;} } else {_trgrt2 = 0; _trgrt2I = 0;}; 
 if (_trgrt2) {
var2 = (readIntegerFromEEPROM(2, 0, 0x50));
}
if (_trgrt2) {
var3 = (readIntegerFromEEPROM(2, 0, 0x50));
}
if (_trgrt2) {
var4 = (readIntegerFromEEPROM(2, 0, 0x50));
}

//Плата:с условием

if (var1 == 0) {
var2 = (readIntegerFromEEPROM(2, 0, 0x50));
var3 = (readIntegerFromEEPROM(2, 0, 0x50));
var4 = (readIntegerFromEEPROM(2, 0, 0x50));
var1 = 1;
}
Последний раз редактировалось Oleg_UA 22.04.2017{, 13:01}, всего редактировалось 1 раз.

Ответить

Вернуться в «Устройства памяти»