Как сделать считывание Eeprom один раз.
Как сделать считывание Eeprom один раз.
Скажите как после пропадания питания и после запуска программы данные из Eeprom читались только один раз.Или сбросить записанные данные. Не получается никак одолеть эту проблему.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
Заводите переменную bool ReadEPP с начальным значением True. В первой плате делаете чтение из EEPROM в переменные с входами разрешения записи. К этим входам цепляете переменную ReedEPP. После блоков чтения делаете ReadEPP = 0.
Таким образом переменные прочитаются один раз, далее бит разрешения обнулится.
Или на плате с условием. Плата выполнится только один раз.
Таким образом переменные прочитаются один раз, далее бит разрешения обнулится.
Или на плате с условием. Плата выполнится только один раз.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Boroda 24 фев 2017, 17:05, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
Vitez,
Ваш код:
Мой код:
Чувствуете разницу?
Ваш код:
Код: Выделить всё
if (1) { if (_trgrt1I) { _trgrt1 = 0;} else {_trgrt1 = 1; _trgrt1I = 1;} } else {_trgrt1 = 0; _trgrt1I = 0;};
if (_trgrt1) {_gtv4 = (EEPROM.readInt(0));}
Код: Выделить всё
if (_gtv3) {_gtv4 = (EEPROM.readInt(0));}
_gtv3 = 0;
Последний раз редактировалось Boroda 24 фев 2017, 21:55, всего редактировалось 1 раз.
Как сделать считывание Eeprom один раз.
Boroda, Простите меня, белый господин. ))
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
Просто когда у МК остается три байта свободной памяти, а надо засунуть еще кучу всего, вот такие оптимизации очень помогают (можно сократить объем программы на 10-50%). К ардуино это не относится, потому как загрузка 80% памяти уже ведет к глюкам.
Как сделать считывание Eeprom один раз.
Boroda, 99% процентов пользователей задающих подобные вопросы не создадут проект на 80% памяти. На мой взгляд, предложенная мной реализация проще именно в формате FlProg.
Но тем не менее, спасибо вам на новую структурную реализацию процесса, которую я возьму на учет.
Честно? Не очень. Я слабо знаю C++ и оценить преимущество в коде к сожалению не смогу .....Чувствуете разницу?
Но тем не менее, спасибо вам на новую структурную реализацию процесса, которую я возьму на учет.
Как сделать считывание Eeprom один раз.
.
Последний раз редактировалось Nikan 23 мар 2023, 16:16, всего редактировалось 2 раза.
Как сделать считывание Eeprom один раз.
Спасибо. Я это уже пробовал работает. Но мне нужно чуть другое. Есть счетчик который считает нажатие кнопки до двух 1- откр. 2- закр. После пропадания питания соответствующая команда записывается в Eeprom. После восстановления питания читается из Eeprom один раз и выполняется противоположная команда. Дальше команды выполняются из счетчика. Нужно я так понимаю нужно обнулять записанное число в Eeprom. Помогите пожалуйста.
Как сделать считывание Eeprom один раз.
Oleg, После пропадания питания что либо записать нельзя. Для поддержания актуального состояния,необходимо каждый раз перезаписывать eeprom.
Как сделать считывание Eeprom один раз.
Спрошу здесь, дабы не плодить темы...Boroda писал(а):Просто когда у МК остается три байта свободной памяти
Как оптимизировать библиотеку? Занимает 71% памяти....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как сделать считывание Eeprom один раз.
Я имел ввиду что в eeprom уже до пропадания питания уже записано значение. И команда( т.е. значение взятое из памяти)должна один раз выполниться именно когда было пропадание питания. А если пропадания питания не было то работаем напрямую из счётчика.
Последний раз редактировалось Oleg 25 фев 2017, 16:42, всего редактировалось 1 раз.
Как сделать считывание Eeprom один раз.
Это как? Если "нарисованная" программа занимает более 80% памяти МК, то её корректная работа невозможна?Boroda писал(а):К ардуино это не относится, потому как загрузка 80% памяти уже ведет к глюкам.
Сейчас постепенно ваяю два проекта и уже получилось 70% занятия памяти в одном и 78% в другом. А реализована пока только добрая половина задуманного.
Что получается, что довёв их до логического конца я не смогу добиться нормальной их работы? Ведь уже явно видно, что память будет занята под завязку. И то, хватило бы...
Последний раз редактировалось DWD 25 фев 2017, 12:32, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
DWD, тут на форуме народ обсуждал это. И говорилось именно про 80% и более. Я так понимаю, что это связано с переменными типа Стринг и внутренними массивами Си компилятора. При определенных условиях памяти не хватает и появляются глюки.
Как сделать считывание Eeprom один раз.
Так как насчет меня. Вопрос к господину Boroda. Помогите по моему вопросу.Пожалуйста.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
Oleg, программу в студию, а то непонятно, зачем считать два нажатия кнопки счетчиком, когда можно обойтись битовой переменной.
Как сделать считывание Eeprom один раз.
Вот прилагаю прог. Это программа управления на ардуино вместо сгоревшей платы от роллетных ворот. Есть пульт с двумя кнопками пуск и стоп. Один раз нажимаешь открытие, второй раз закрытие. Отдельная кнопка стоп. Пройденный путь считается от датчика Холла. Проблема в записи при отключении питания . Как сделать чтобы при аварийном пропадании питания записывались команда и путь. А при восстановлении питания отрабатывалась один раз противоположная команда. А потом все стиралось. Если ворота были закрыты и пропало питание, а потом появилось то просто открытие. В заводской плате было так. Я ни как не пойму как это сделать.Помогите пожалуйста.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
Oleg, а это вообще работает? У Вас вся схема в обратных связях...
Добавлено (25.02.2017, 22:35)
---------------------------------------------
Вы через полгода откроете свой проект и ничего тут не поймете...
Добавлено (25.02.2017, 22:35)
---------------------------------------------
Вы через полгода откроете свой проект и ничего тут не поймете...
Как сделать считывание Eeprom один раз.
А причем тут проект?
Нужно в контроллер ввести импульс который будет появляться перед тем как пропадет питание , с него то и дадите команду на запись в память.
Можно сделать так. Если питание к примеру 9 вольт, то ставим последовательно два одинаковых резистора 1-10К и посредине будет 4.5 вольт направляем это напряжение в аналоговый вход ардуины и в проекте ставим блок сравнения ,если число на АЦП будет меньше чем при 9 вольтах , то даем импульс на запись .
Или может по другому было сделано?
Добавлено (25.02.2017, 22:59)
---------------------------------------------
Если Вы измеряете питание на ардуине 5 В , то записывать не будет , т.к вместе с питанием ардуины снижается и опорное напряжение , поэтому 3 вольта на ардуине будет 1023 всё равно....
Можно сделать независимое опорное напряжение на большом кондёре ,тогда все получится с 5 вольтами.
Нужно в контроллер ввести импульс который будет появляться перед тем как пропадет питание , с него то и дадите команду на запись в память.
Можно сделать так. Если питание к примеру 9 вольт, то ставим последовательно два одинаковых резистора 1-10К и посредине будет 4.5 вольт направляем это напряжение в аналоговый вход ардуины и в проекте ставим блок сравнения ,если число на АЦП будет меньше чем при 9 вольтах , то даем импульс на запись .
Или может по другому было сделано?
Добавлено (25.02.2017, 22:59)
---------------------------------------------
Если Вы измеряете питание на ардуине 5 В , то записывать не будет , т.к вместе с питанием ардуины снижается и опорное напряжение , поэтому 3 вольта на ардуине будет 1023 всё равно....
Можно сделать независимое опорное напряжение на большом кондёре ,тогда все получится с 5 вольтами.
Последний раз редактировалось Гость 25 фев 2017, 23:02, всего редактировалось 1 раз.
- Boroda
- Капитан
- Сообщения: 836
- Зарегистрирован: 01 май 2016, 01:04
- Откуда: Коломна
- Имя: Станислав
- Контактная информация:
Как сделать считывание Eeprom один раз.
sser, а Вы проект откройте и все Lxx преобразуйте в линии. И введите импульс... на запись...
Добавлено (25.02.2017, 23:02)
---------------------------------------------
Я уже больше часа растаскиваю блоки на своем 19" монике и никак не разберусь в этих хитросплетениях.
Добавлено (25.02.2017, 23:02)
---------------------------------------------
Я уже больше часа растаскиваю блоки на своем 19" монике и никак не разберусь в этих хитросплетениях.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей