Страница 1 из 1

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 12:17}
serpal66
Хотел спросить у гуру, можно ли средствами программы реализовать запись переменной в память eeprom при  пропадании питания, используя прерывание. Например, отслеживая изменение напряжения с высокого на низкое на 2 пине в UNO. И при включении его читать значение этой переменной в блоке setup, а не в loop, куда пишутся коды всех плат в программе? Или это пока только ручная работа? Прошу извинить, если вопрос покажется наивным, с программой работаю недавно, да и с arduino тоже.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 12:31}
vlad
2907547.png
может это не ответ на ваш вопрос, но так можно при падении напряжения автоматом записать данные в еепром. Взял для себя с этого форума(спасибо ему), не помню только как тема называлась. В теме писали что после отключения питания контроллер продолжает еще работать несколько минут.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 12:58}
serpal66
Спасибо, это одно из технических решений увеличения времени питания контроллера при его пропадании (рассматриваю как один из вариантов) и отслеживания любого из входов. Но может будут варианты программные?

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 13:47}
Олег
Не понял, а какое программное решение вы хотите? Определили по входу что пропало питание,  значение переменной записалось в ЕЕПРОМ, при возобновлении питания данные из ЕЕПРОМ записываются в переменную.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 14:49}
serpal66
Олег писал(а):Не понял, а какое программное решение вы хотите? Определили по входу что пропало питание, значение переменной записалось в ЕЕПРОМ, при возобновлении питания данные из ЕЕПРОМ записываются в переменную.
Имел ввиду, как это реализовать в FLProg используя пины (для UNO это 2 и 3), реагирующие на внешнее прерывание. При компилляции этого не происходит. Функционал видимо не предусматривает. На данный момент вариант пока только, используя схему с ионистором, отслеживать пин на пропадание питания и тогда писать в память. Также получается, что при включении питания, чтобы считать это значение из памяти и изменять его дальше надо чтобы функция считывания была в блоке setup, а в программе этого нет. То есть надо прописывать вручную. Просто я не программист. Поэтому и хотел узнать есть ли возможность максимально использовать FLProg.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 14:57}
vlad
вот одноразовое считывание из памяти при включении питания

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 16:59}
serpal66
Спасибо большое за блоки, но у меня меняющаяся переменная - потребление электроэнергии (сохраняется в память при потере питания) и ее надо считать из памяти один раз при появлении питания. В FLProg скомпилированный код платы входит в блок loop. Мне же надо прописать считывание из памяти в блоке setup. FLProg этого не делает? Я не нашел как это можно сделать кроме как в ручную. А я не кодер, поэтому застрял. С блоками FBD мне понятно. Наверное это надо написать в пожелания - реализовать внешние прерывания и сделать возможность прописывать  какие-то действия в блок setup.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 17:36}
vlad
в предложенной программе как раз переменная будет считана из памяти при включении( подаче питания) контролера один раз. Далее эта переменная меняется в соответствии с вашими пожеланиями и при пропадании питания по схеме выше значение переменной будет записано в память. и дальше все по кругу

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 18:03}
serpal66
vlad писал(а):в предложенной программе как раз переменная будет считана из памяти при включении( подаче питания) контролера один раз. Далее эта переменная меняется в соответствии с вашими пожеланиями и при пропадании питания по схеме выше значение переменной будет записано в память. и дальше все по кругу
Может есть какая то хитрость? Я повторяю этот кусок, компилирую и код в блоке loop значит будет читаться постоянно или я уже совсем ... Не пойму каким одноразовым сигналом можно выполнить только одно считывание? Я к тому, что было бы гораздо удобнее иметь доступ из программы к блоку setup и записать туда код считывания памяти, а потом уже loopить программу. Или я все-таки чего-то недопонял?

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 18:23}
vlad
я честно говоря в программировании минус ноль, поэтому только могу пояснить только по работе блоков. Блок Rtrig при подаче на него лог единицы выдает на выходе одиночный импульс который в свою очередь дает разрешение на изменение данных у переменной, и переменная в этот момент забирает данные из памяти. дальше все. пока не будет на входе этой переменной разрешающего сигнала она не будет получать данные из памяти. в другом месте вы меняете эту переменную так как вам надо и сколько хотите а при пропадании питания используя блок сравнения и схему с ионистором вы производите запись содержимого переменной в память, которое в свою очередь при появлении питания будет автоматом считано этой переменой.

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 18:32}
serpal66
Буду разбираться, возможно я не до конца разобрался с 1 на входе rtrig. Спасибо за ответы!

Использование прерываний для записи в eeprom

Добавлено: 18.05.2016{, 18:45}
vlad
в справке на этот блок посмотрите

Использование прерываний для записи в eeprom

Добавлено: 23.05.2016{, 16:49}
serpal66
vlad писал(а):Взял для себя с этого форума(спасибо ему), не помню только как тема называлась.
Тема форума http://forum.flprogwiki.ru/viewtopic.php?f=10&t=834 (если кому надо будет)