Как задать стартовое значение переменной?
- Войдите на сайт для отправки комментариев
Чт, 05/07/2018 - 20:22
При запуске программы значение переменной считывается из памяти EEPROM и в процессе регулируется программой, но проблема в том, что переменная типа long и ей нужно задать какое то стартовое значение
Как это можно сделать?
long peremennaya=666L;
А если надо 777? Тогда как?
Даже если значение задать, то все равно считается из ячейки максимум для long
Откуда Вам это известно? Никаких отладочных печатей в скетче нет.
Потому что в свежей микросхеме ячейки памяти забиты значениями 255.
Это конечно не весь скетч, просто все остальное к памяти отношения не имеет
Ну, тогда ладно.
А если надо 777? Тогда как?
Придется второй скетч писать...
Даже если значение задать, то все равно считается из ячейки максимум для long
https://www.arduino.cc/en/Reference/EEPROMGet
кто-нибудь! переведите мне эту фразу... тоже хочу посмеяться
кто-нибудь! переведите мне эту фразу... тоже хочу посмеяться
Перевожу: если из некоторой ячейки сначала прочитать то, что там есть, а потом только записать то, что нужно, то почему-то читается вовсе не то, что записываем! Наверное, потому, что ардуина китайская ... ну, или миллис переполнился. Других причин я не вижу.
А... так это что, в сетапе надо EEPROM.put() вызывать что ли...
А... так это что, в сетапе надо EEPROM.put() вызывать что ли...
EEPROM.put() выглядит как-то половинчато. Вызывать, так сразу бригаду из "Кащенко"
Спасибо. А EEPROM.put будет же вызываться каждый запуск и записывать туда это же значение. Так?
А... так это что, в сетапе надо EEPROM.put() вызывать что ли...
EEPROM.put() выглядит как-то половинчато. Вызывать, так сразу бригаду из "Кащенко"
и в loop-е :)
Спасибо. А EEPROM.put будет же вызываться каждый запуск и записывать туда это же значение. Так?
Ну, а какие варианты еще есть? Напишите отдельный скетч, который проинитит еепром. Или обрабатывайте на старте ситуацию с закороченным пином (нажатой кнопкой) и при этом условии пишите свои дефолты в EEPROM.
Megawollt - Вам нужен признак того, что в ЕПРОМе есть данные. Например, я записываю в ячейки 0 и 1 значения 0xB7 0x07
Теперь, когла программа стартует - она первым делом лезет в эти ячейки и смотрит, записан ли там мой ник :) Если да - значит в Епроме есть данные и их надо считать. Если нет - значит это свежая ардуина, тогда задаем данные в сетапе и сохраняем их в ЕПРОМ, попутно записывая "B707" в две первые ячейки.
Ну, а какие варианты еще есть? Напишите отдельный скетч, который проинитит еепром. Или обрабатывайте на старте ситуацию с закороченным пином (нажатой кнопкой) и при этом условии пишите свои дефолты в EEPROM.
мне казалось, что вариант с меткой - очевидный...
А если она не свежая, а просто чужая....
А если она не свежая, а просто чужая....
ну крайне маловероятно, что в чужой ардуине в первых ячейках епрома будет B707
если ты имеешь в виду другой скетч - то метки-то я в каждом скетче ставлю разные, "B707" это я тут для примера только
Кроме того, по умолчанию Епром при прошивке чистится.
Ну, а какие варианты еще есть? Напишите отдельный скетч, который проинитит еепром. Или обрабатывайте на старте ситуацию с закороченным пином (нажатой кнопкой) и при этом условии пишите свои дефолты в EEPROM.
мне казалось, что вариант с меткой - очевидный...
Не спорю. До того момента, когда пользователь запишет что-нибудь неудачное в EEPROM и это будет критичным моментом. Например - флаг использования DHCP на старте. Пропал сервер - всё, ардуина отдыхает. А так пин ей замкнули, она дефолт вписала в EEPROM и все довольны.
P.S. Если пример с DHCP не понравится, то можно дефолтить пароль, к примеру.
сегодня пару часов убил не еепром: была прописана ф-ция инициирование еепром в сетапе. Ну думаю, пора закомментить ее вызов, все уже настроено. Закоментил - не работает, раскоментил - работает. Реально два часа убил чтобы допереть, что если камень прописывать USBasp, то он, собака, еепром затирает и чтоб правильно, то надо после флеша прописывать еепром. Вот ... :)
Есть специЯльный фьюз для защиты епрома при программировании.......
А что, если -e не указывать, всё равно стирает епром?
А что, если -e не указывать, всё равно стирает епром?