Вопросы по EEPROM, помогите, не могу разобраться.
- Войдите на сайт для отправки комментариев
Сб, 21/02/2015 - 16:58
Вообщем есть переменная х, необходимо записывать ее во внутренню память ATMega 328p-pu сразу после изменения, числа от 1 до 200. Помогите пожалуйста.
http://arduino.ru/Reference/Library/EERPOM
Как записать я знаю, я не знаю как составить код так что бы именно после изменения переменной Х ее значение записовалось в память.
Точнее интересует как после каждого цикла сравнивать значения переменной, если они разнятся то писать в память
а как меняется переменная?
https://vk.com/club87421175
Вот сам проект, Penni пытался таким способом сделать, пока питание поступает ячейка хранит значение, как только перезагружаю все сбрасывается. По началу думал что проблемма в том что изначально (во время запуска) переменная x = 100;, и по этому идет перезапись, в итоге просто установил int x; и после запуска просто с пульта добавлял значение, оно сохранялось в ячейку, а после перезагрузки опять сбрасывается на 0(
EEPROM не сбрасывается при отключении питания. Вы сами затираете значение при первом сравнении. Чтобы не затирать при первом сравнении надо переменной х присваивать тоже самое что и last_write_value. У меня всё работает в железе, если не работает покажите код, гадать на кофейной гуще не очень.
Нифигасе, эточто, S.T.A.L.K.E.R. - 4 ?
Вот такое работает хоть задёргайтесь питанием я бы искал ошибку в другом месте как минимум 41 строку надо удалить, но это так мелочи. delay(99999999) это вообще круто 11,5 суток :)
В группе все описано)
41 строку удалять нельзя, это часть кода по сохранению кол-ва смертей и вывода статистики. А delay (99999999) просто для максимальной задержки, пока мастер игры с пульта не перезапустит устройство. Идея в том что бы даже после перезагрузки кол-во жизней оставалось таким как до рестарта)
Ну а если посмотреть на 24 строк, потом на 41 потом еще раз на 24 :)
Ну факт в том что работает статистика, а сохранить кол-во жизней не могу( я в декабре вообще об этом ни чего не знал, образование другое, просто захотел улучшить игры которые проводятся в нашем городе, и стал самообучаться и делать. Но вот до этого пока не могу допетрить:(
Т.е. со stat проблем нет? Она записывается в еепром по адресу 0 и нормально считывается при перезапуске? А проблемы с тем чтобы h записывать при изменении уровня жизни так? Или я вообще запутался :)
Именно, stat (статистика) работает отменно, а проблемма именно с h (жизни). Первый запуск должен всегда проходить с h=100 (максимальное кол-во жизней на таком уровне), а вот скажем если жизни опустились до 50, и игрок решил схитрить и перезагрузить устройство, то при запуске вот эта строка int h=100 перезаписывает память.
Ясно, тогда еще пару уточняющих вопросов, чтобы уж наверняка.
1) Если игрок не доиграл бросил эту штуку и ушел, чтобы эту штуку дать другому (новому) игроку админ сбросит её и с пульта задаст 100 жизней? Т.е. первый запуск грубо говорять это админ берет "штуку" сбрасывает её устанавливает жизни в 100 и даёт игроку так?
2) В 178 строке написано h+10; это опечатка должно быть += ? или как?
Если всё примерно так, то предлагаю чтобы сильно не париться после каждого изменения h (т.е. строки в которых есть h= h+- h+h- ну и т.д.) писать EEPROM.write(1, h); В сетапе добавить строку h=EEPROM.read(1); Тогда при каждом изменении жизни оно будет писаться в первую ячейку, если кто-то перезагрузит девайс в сетапе считается первая ячейка и h будет равно тому чему и было до выключения питания. Для начальной инициализации или новой игры админ задаёт с пульта 100 хелсов они записываются в еепром, теперь при перезагрузки девайс будет выдавать 100 хелсов можно начинать играть, по мере их уменьшения/увеличения они снова будут писатьс в 1 ячейку еепром.
1) Да именно так, но так как пока я не надумал с eeprom-ом я сделал int h=100, что бы заниматься другими делами. Но проблемма в том что если не выставлять значения h изначально, то сразу при запуске ПДА погибает от того что при h<=0 сразу наступает смерть. А если ставить, то первое что сделает ПДА это перезапишет ячейку:(
2) 178 строка просто мусор, еще не закончил наметки по костмам и спец защитой.
В любом случае должен быть режим инициализации доступный только админу. Админ на пульте нажимает кнопку и происходит полная инициализация задаются все начальные значения переменных в том числе и h=100 и оно же записывается в еепром, с этого момента можно считать девайс подготовленным к игре. Иначе никак, потому что тогда любой игрок сможет инициализаировать.
УРААААААААААААААААААААААААААААААААА))))))))))))))))))))))))))))))))))))))))))))))))) Работает)))) Penni - Ты ГЕНИЙ))))
Сам того не замечая, во время первого запуска ПДА нужно просто подать радио сигнал повышащий жизни, и он адекватно запускается, сохраняет и изменяет значения)
Если бы :)
Penni, вот моя страничка в ВК https://vk.com/id279426815 , если не трудно кинь авторизацию.