Глюк наверное памяти

Добрый день

Атмега8. Через isp. Usbasp

Столкнулся с такой проблемой. В процессе отладки проверял работу расчетов, задавая вручную разные значения переменным. В тех формулах, что я проверял было деление, и естественно иногда происходило деление на ноль, выводились большие значения. Я для этого и экспериментировал, чтобы исключить такие моменты.

И в какой-то момент заметил, что некоторые показатели (никак не связанные с проверяемыми расчетами) начали отражать какие-то рандомные значения. Я попытался откатать на старую прошивку, но глюк не исчезал. Методом тика я перепробовал удалять часть кода, но проблема только с одного места перемещалась в другое.

Сложилось такое впечатление, что часть кода (или какие-то данные) записались в память и не стираются при прошивке кода заново и после записи загрузчика. И при изменении кода (удалении или при добавлении сроков) кажется происходит смещение. Глюк проявляется по другому и в других местах.
Проблема исчезла только после замены чипа. Хотя код тот же. Старый чип тоже вроде рабочий.

Можно ли как-нибудь стереть все как это было с завода? Просто не хотелось чтоб при подобных тестах ситуация повторилась. И вообще что это может быть, чтобы не наступать на те же грабли? Или мог ли я как-то повредить чип просто прошивая неправильный код?

Обычно такие явления указывают на глюки в коде, например на запись данных за границей массива. Для более предметного обсуждения было бы неплохо увидеть ваш код.

1 лайк

Да, все переменные записываются в массив и после передаются по блютуз на телефон. Та переменная моментами из-за деления на ноль была очень большой, u_long. С этим я и связываю появления глюка. Но разве перепрошивка не должна была все исправить? На новом чипе проблема не проявляется, но и эксперименты с переполнением переменной я на нем не проводил.

Значение переменной не может быть больше максимального размера, определенного ее типом. И деление на ноль тут не причем.

Я имел в виду совсем другое - выход за границы массива. Если не знаете, что это - посмотрите в гугле.

Как тогда один код на первом чипе глючит, а на новом нет?

Возможно ли такое, что по ошибке в коде, записав данные за границей массива, при перепрошивке те данные остаются и влияют на роботу кода?

К чему эти вопросы? Если вы не готовы показать код, то продолжать нет смысла. Вы поделились бедой, мы посочувствовали…

2 лайка

Вопросы такие потому что если переполнение не может повреждать память и данные не могут сохраняться после перепрошивки, то скорее всего проблема всё-таки аппаратная, на что вроде так же указывает замена чипа.

Возможно так совпало и я подумал что проблема программная

Смысл разбираться в сотнях строк чужого кода, если вы например и так знаете что на поставленные вопросы ответ “такого не может быть" и следовательно что-то с самим чипом

Как вариант у вас не происходила прошивка на старом чипе, и данные смещались за-за глюков старой прошивки. Заметил на аддоне для тини, что иногда при исрользовании стелки “Загрузка” скетч компилировался, типа заливался, а реально программа в микроконтроллере оставалась старой. Помогало только через меню “загрузить через программатор” и затем уже можно было опять жмякать стрелку.

Если вы только каким-то чудом не “залезли” в область памяти, оставленную для загрузчика, которая не перезаписывается при прошивке.
Но это надо ну очень постараться)))
Полностью сотрите старый чип программатором, снова запишите загрузчик. Если проблема не уйдёт - она чисто аппаратная, т.е. чип в мусор

P.S. А так-то, ещё и EEPROM есть))

1 лайк

Прошиваю программатором, указан в первом сообщении. Пробовал и по-новому записывать загрузчик. Все так же.

Складывается такое впечатление что при перепрошивке остаются какие то данные. Так как добавляю или сокращая код, то есть меняя его размер, глюк меняется, как будто те нестертые данные влияют на другую часть кода.

Может ради интереса попробую повторить все то же на новом чипе. Может так совпало и чип просто сдох. Не может же ошибка в коде убивать железо

Ещё, как сказал @толстый , может глюк аддона. Пробуйте прошить на другом ПК/IDE и.т.п.

Моё сообщение и касалось работы именно через внешний программатор и только через него.

Зачем вам вообще загрузчик(при работе через ISP)? Полностью сотрите чип, а в аддоне настройте работу без загрузчика.

Если Вы, “например, итак знаете”, то на кой йух Вы приходите сюда и задаёте вопросы?

А так да, у Вас проблема в том, что чип китайский. Примите это и радуйтесь жизни.

На счет загрузчика, то вроде в ардуино ИДЕ его обязательно нужно записивать

@ЕвгенийП, вы наверное как-то не так прочитали сообщение, потому что не понятен ваш негатив

Почему же?
Вполне даже понятен.
Вы пришли сюда с готовым мнением о своей проблеме. Вы заранее решили, что у вас поврежден чип и никаких других мнений не слышите.
К чему вообще это обсуждение? Если вы уверены, что чип поврежден - возьмите новый и проблема решена.
Только когда у вас точно так же все сдохнет на новом чипе - не надо приходить сюда опять, трахайтесь сами.

Вы меня наверное неправильно поняли.

Я только предположил что если на мой вопрос вы ответите, то такого не может быть, то тогда нет смысла копаться в коде, так как он работает на другом чипе. А если такое может случиться, то конечно можно и в коде пробовать разобраться. А может даже перед этим попробовать все повторить на новом чипе, чтоб точно убедиться в том что проблема программная (там просто до 1000 строк, наверное не самый простой процесс).

Жаль, что Вы это восприняли как негатив. Я всего лишь спросил о цели Вашего визита сюда, если источник проблемы Вы “и так знаете”. Мне вот Ваша цель непонятна … хотя, как говаривал

Видимо, Ваша мотивация для визита сюда, как раз “не входит в круг моих понятий” :frowning:

“и так знаете" это не про мое мнение, а про возможный ответ человека, которому я задавал вопрос. У меня только предположения, а у вас тут у многих может быть четкое понимание что может быть, а что нет. Что сразу отбросит половину мои предположений. И как следствие сузить круг поиска проблемы

А что отбросит изначально 99%, так это выложенный код. о чём вам и написали в первом же ответе. В идеале небольшой, иллюстрирующий проблему, с подробностями о IDE. аддоне, настройках.

1 лайк