Вопрос по EEPROM
- Войдите на сайт для отправки комментариев
Пнд, 18/03/2019 - 11:33
Здравствуйте. Осваиваю работу с EEPROM.
Имеется простой пример
#include <EEPROMex.h> float MileageCar; float Mileagecar1; void setup() { Serial.begin(9600); MileageCar=10325.28; EEPROM.writeFloat (1, MileageCar); Mileagecar1=EEPROM.readFloat(1); Serial.print (Mileagecar1, 2); } void loop() { }
Все работает.
Делаем так:
#include <EEPROMex.h> float MileageCar; float Mileagecar1; void setup() { Serial.begin(9600); MileageCar=10325.28; //EEPROM.writeFloat (1, MileageCar); Mileagecar1=EEPROM.readFloat(1); Serial.print (Mileagecar1, 2); } void loop() { }
То есть в ячейке памяит 1, должно остаться записанное число. Но у меня почему то там 0. Пробовал на двух платах, результат оди. Данные в EEPROM не сохраняются. Платы UNO WAWGAT. Неужели платы неисправны? Или в чем то косяк у меня? Помогите пожалуйста.
Делаем так:
То есть в ячейке памяит 1, должно остаться записанное число.
Кому это оно должно? В какой именно строке кода Вы его туда записываете?
Кому это оно должно? В какой именно строке кода Вы его туда записываете?
Думаю так, записывает он его строкой 07 из первого кода, потом строку комментит и пытается прочитать. Но не видит там того что записал. Хотя результатов Serial.print ТС не показал.
Но библиотека EEPROMex.h какая то странная, искать на просторах инеета не стал, если ТС выложить ссылку, можно глянуть, нет выложит так не выложит.
Я не нашёл такой строки в коде. Возможно, пропустил. Номер скажите, я посмотрю.
Кому это оно должно? В какой именно строке кода Вы его туда записываете?
эта строка есть в примере, а в вашем коде ее нет.
Думаю так, записывает он его строкой 07 из первого кода, потом строку комментит и пытается прочитать. Но не видит там того что записал. Хотя результатов Serial.print ТС не показал.
значит у него при заливке нового кода ЕЕПРОМ очищается
Думаю так, записывает он его строкой 07 из первого кода,
А я так понял, что к первому коду у ТС претензий нет. Он ожидает, что второй код тоже что-то запишет, т.к. после него "должно остаться".
ТС, так?
Объяснитесь вразумительно!
Объяснитесь вразумительно!
Давайте так. С помощью первого кода записываю число в ячейка 1. Проверяю. Число записано.
Потом вторым кодом просто считываю, что записано в ячейке 1. А там 0.0.
значит у него при заливке нового кода ЕЕПРОМ очищается
Похоже что так. И при нажатии на кнопку сброса тоже очищается.
Думаю так, записывает он его строкой 07 из первого кода, потом строку комментит и пытается прочитать. Но не видит там того что записал. Хотя результатов Serial.print ТС не показал.
Но библиотека EEPROMex.h какая то странная, искать на просторах инеета не стал, если ТС выложить ссылку, можно глянуть, нет выложит так не выложит.
Со стандартной библиотекой EEPROM.h происходит тоже самое.
значит у него при заливке нового кода ЕЕПРОМ очищается
Похоже что так. И при нажатии на кнопку сброса тоже очищается.
Не знаю, что такое кнопка сброса, но при прошивке точно всё стирается.
Можно это убрать, но помнится тут на форуме кто-то пробовал и говорил, что "хоть заубирайся", всё равно стирается. Сам я не пробовал убирать.
Не знаю, что такое кнопка сброса, но при прошивке точно всё стирается.
Можно это убрать, но помнится тут на форуме кто-то пробовал и говорил, что "хоть заубирайся", всё равно стирается. Сам я не пробовал убирать.
Кнопка reset имелась ввиду. Проблема в том, что стирается не только при перепрошивке, но и при выключении питания
Значить, нет, наерна, у Wavgat-a настоящей EEPROM
Dmz2003, это не Atmel, а LGT . Для них есть своя библиотека, эмулирующая EEPROM. Поставляется вместе с аддоном.
Dmz2003, это не Atmel, а LGT . Для них есть своя библиотека, эмулирующая EEPROM. Поставляется вместе с аддоном.
т.е. настоящий EEPROM там есть?
Похоже что так. И при нажатии на кнопку сброса тоже очищается.
Работал на LGT с EEPROM. Уже не помню как там с загрузкой, но с ресетом всё было ОК.
т.е. настоящий EEPROM там есть?
Нету, просто эмуляция. Библиотека работает с основной флеш-памятью.
При первом включении порт пишет
0.00
10325.28
Вроде все правильно. Изначально в ячейке 1 был 0, записали 10325.28.
Теперь отключаем питание, или нажимаем reset, ожидаем увидеть
10325.28
10325.28
Так как число в память уже записано и ничего не обнулялось, но получаем опять
0.00
10325.28
Интересно, с каких пор перепрошивка НАНО очищает данные в EEPROM? На 2017-й (1.6.4 + Ardublock) ничего не очищалось, иначе как-бы наш герой занял свое 3-е место .. Настроил и поехал. Поправил скетч, но датчики то на кой перенастраивать? Они в EEPROM..
Интересно, с каких пор перепрошивка НАНО очищает данные в EEPROM?
Как настроишь, так и будет. За это отвечают опции avrdude -e -U
Ребят, подскажите на pro mini столкнулся с тем, что при отключении питания данные из EEPROM тоже обнуляются
С большой вероятностью считаю, что натупил в коде. но не могу понять шо не так. подскажите.
Ребят, подскажите на pro mini столкнулся с тем, что при отключении питания данные из EEPROM тоже обнуляются
Насколько я вижу в коде, они не "обнуляются", а возвращаются к исходному значению 3560 - верно?
Если так - вы сами их каждый раз перезаписываете при старте программы (строка 8). Уберите эту строку - и все будет работать как надо.
без нее "nan" . как меня раздрожает этот nan
без нее "nan" . как меня раздрожает этот nan
?????
1
ojierr, проблема не в EEROM , а в вашом неумении написать обработчик кнопки.
1
Не уходи, беседуй с нами, тебя еще и не так "осинит"