Столкнулся с такой проблемой. В процессе отладки проверял работу расчетов, задавая вручную разные значения переменным. В тех формулах, что я проверял было деление, и естественно иногда происходило деление на ноль, выводились большие значения. Я для этого и экспериментировал, чтобы исключить такие моменты.
И в какой-то момент заметил, что некоторые показатели (никак не связанные с проверяемыми расчетами) начали отражать какие-то рандомные значения. Я попытался откатать на старую прошивку, но глюк не исчезал. Методом тика я перепробовал удалять часть кода, но проблема только с одного места перемещалась в другое.
Сложилось такое впечатление, что часть кода (или какие-то данные) записались в память и не стираются при прошивке кода заново и после записи загрузчика. И при изменении кода (удалении или при добавлении сроков) кажется происходит смещение. Глюк проявляется по другому и в других местах.
Проблема исчезла только после замены чипа. Хотя код тот же. Старый чип тоже вроде рабочий.
Можно ли как-нибудь стереть все как это было с завода? Просто не хотелось чтоб при подобных тестах ситуация повторилась. И вообще что это может быть, чтобы не наступать на те же грабли? Или мог ли я как-то повредить чип просто прошивая неправильный код?
Обычно такие явления указывают на глюки в коде, например на запись данных за границей массива. Для более предметного обсуждения было бы неплохо увидеть ваш код.
Да, все переменные записываются в массив и после передаются по блютуз на телефон. Та переменная моментами из-за деления на ноль была очень большой, u_long. С этим я и связываю появления глюка. Но разве перепрошивка не должна была все исправить? На новом чипе проблема не проявляется, но и эксперименты с переполнением переменной я на нем не проводил.
Вопросы такие потому что если переполнение не может повреждать память и данные не могут сохраняться после перепрошивки, то скорее всего проблема всё-таки аппаратная, на что вроде так же указывает замена чипа.
Возможно так совпало и я подумал что проблема программная
Смысл разбираться в сотнях строк чужого кода, если вы например и так знаете что на поставленные вопросы ответ “такого не может быть" и следовательно что-то с самим чипом
Как вариант у вас не происходила прошивка на старом чипе, и данные смещались за-за глюков старой прошивки. Заметил на аддоне для тини, что иногда при исрользовании стелки “Загрузка” скетч компилировался, типа заливался, а реально программа в микроконтроллере оставалась старой. Помогало только через меню “загрузить через программатор” и затем уже можно было опять жмякать стрелку.
Если вы только каким-то чудом не “залезли” в область памяти, оставленную для загрузчика, которая не перезаписывается при прошивке.
Но это надо ну очень постараться)))
Полностью сотрите старый чип программатором, снова запишите загрузчик. Если проблема не уйдёт - она чисто аппаратная, т.е. чип в мусор
Прошиваю программатором, указан в первом сообщении. Пробовал и по-новому записывать загрузчик. Все так же.
Складывается такое впечатление что при перепрошивке остаются какие то данные. Так как добавляю или сокращая код, то есть меняя его размер, глюк меняется, как будто те нестертые данные влияют на другую часть кода.
Может ради интереса попробую повторить все то же на новом чипе. Может так совпало и чип просто сдох. Не может же ошибка в коде убивать железо
Почему же?
Вполне даже понятен.
Вы пришли сюда с готовым мнением о своей проблеме. Вы заранее решили, что у вас поврежден чип и никаких других мнений не слышите.
К чему вообще это обсуждение? Если вы уверены, что чип поврежден - возьмите новый и проблема решена.
Только когда у вас точно так же все сдохнет на новом чипе - не надо приходить сюда опять, трахайтесь сами.
Я только предположил что если на мой вопрос вы ответите, то такого не может быть, то тогда нет смысла копаться в коде, так как он работает на другом чипе. А если такое может случиться, то конечно можно и в коде пробовать разобраться. А может даже перед этим попробовать все повторить на новом чипе, чтоб точно убедиться в том что проблема программная (там просто до 1000 строк, наверное не самый простой процесс).
Жаль, что Вы это восприняли как негатив. Я всего лишь спросил о цели Вашего визита сюда, если источник проблемы Вы “и так знаете”. Мне вот Ваша цель непонятна … хотя, как говаривал
Видимо, Ваша мотивация для визита сюда, как раз “не входит в круг моих понятий”
“и так знаете" это не про мое мнение, а про возможный ответ человека, которому я задавал вопрос. У меня только предположения, а у вас тут у многих может быть четкое понимание что может быть, а что нет. Что сразу отбросит половину мои предположений. И как следствие сузить круг поиска проблемы
А что отбросит изначально 99%, так это выложенный код. о чём вам и написали в первом же ответе. В идеале небольшой, иллюстрирующий проблему, с подробностями о IDE. аддоне, настройках.