Очистить скеч от мусора:)

SAB
Offline
Зарегистрирован: 27.12.2016

Решил написать, может кому пригодится. Потратил много времени на одну из программ. Симптомы были следующими. Работает устройство 5-10 минут всё нормально. Идет постоянный опрос по СОМ порту кнопок внешнего терминала. Потом что то происходит с Atmega328 , и начинает не читать кнопки. При этом запросы по порту идут правильные, ответы от терминала тоже правильные. Вообщем и алгоритмы менял и обработку, ни чего не помогало. Потом думаю, дай попробую скопировать скетч в обычный блокнот (через стандартный виндовый буфер обмена), оттуда опять скопировать в буфер и вставить в IDE как новый скетч. И всё, как бабка пошептала. Всё замечательно, круглые сутки устройство работает как часики. Подозреваю, в тексте скетча, каким то образом, были изначально скрытые не печатаемые символы, которые компилятор видел, и что то в код добавлял. А после того как блокнот пропустил через себя текст скетча, остались только текстовые ASCI символы. Вот так вот решилась проблема. Всем удачи.

-NMi-
Offline
Зарегистрирован: 20.08.2018

Мне отсыпь, я тож курну на выходных эту чудо-бабуйню...

AndreyD
AndreyD аватар
Offline
Зарегистрирован: 07.10.2018

В коде был вирус, а во время его копирования в буфер обмена антивирус его удалил.

Green
Offline
Зарегистрирован: 01.10.2015

Да, да. Скетч написан невидимыми чернилами. Если бы всё так было просто - уже давно писатели нашлись бы.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Экие Вы материалисты тут все. "Есть много на свете, брат Горацио ..."

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

обычно компилятор орёт на нечитаемые символы, неужто пропустил?

rkit
Offline
Зарегистрирован: 23.11.2016

ua6em пишет:

обычно компилятор орёт на нечитаемые символы, неужто пропустил?


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

Green
Offline
Зарегистрирован: 01.10.2015

ЕвгенийП пишет:

Экие Вы материалисты тут все. "Есть много на свете, брат Горацио ..."


Это да. Иначе так мы и к космосу придём, высшему разуму и пр.

SAB
Offline
Зарегистрирован: 27.12.2016

Да, можно придумывать что угодно, но вот так вот видно совпало. Наверно есть какие то подводные камни. И компилятор не ругался и программа на 10 минут всё работало. Сам удивляюсь. При этом, коллеги смотрели код, тоже не находили ошибок. Пропустить через блокнот, это уже был жест отчаяния. И как видите, сработало. Чудеса :))

SAB
Offline
Зарегистрирован: 27.12.2016

rkit... А что так можно было ©.....:)))

-NMi-
Offline
Зарегистрирован: 20.08.2018

Брехня.

Green
Offline
Зарегистрирован: 01.10.2015

SAB пишет:

Да, можно придумывать что угодно, но вот так вот видно совпало. Наверно есть какие то подводные камни. И компилятор не ругался и программа на 10 минут всё работало. Сам удивляюсь. При этом, коллеги смотрели код, тоже не находили ошибок. Пропустить через блокнот, это уже был жест отчаяния. И как видите, сработало. Чудеса :))


А тут нужно смотреть исходный текст и, возможно, тестировать самому. Чудес не бывает.)

SLKH
Offline
Зарегистрирован: 17.08.2015

Green пишет:

SAB пишет:

Да, можно придумывать что угодно, но вот так вот видно совпало. Наверно есть какие то подводные камни. И компилятор не ругался и программа на 10 минут всё работало. Сам удивляюсь. При этом, коллеги смотрели код, тоже не находили ошибок. Пропустить через блокнот, это уже был жест отчаяния. И как видите, сработало. Чудеса :))


А тут нужно смотреть исходный текст и, возможно, тестировать самому. Чудес не бывает.)

могло и совпасть - законы Мерфи верны, потому что всесильны (или наоборот).

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

Green
Offline
Зарегистрирован: 01.10.2015

SLKH пишет:
могло и совпасть - законы Мерфи верны, потому что всесильны (или наоборот).

Я уже где то приводил случай из своей практики. Повторюсь.
Пишу, тестирую обмен с nrf24l01. В один прекрасный момент перестаёт работать. Сброс не помогает. Проверяю логику - всё красиво. Начинаю вспоминать что менял. Потихоньку откатываюсь, проверяя каждый шаг. Дохожу до того что осталась добавлена всего одна примитивная строка, которая не может ни на что влиять... Убираю - работает. Добавляю - нет! Выключаю-включаю питание - работает. ППЦ! Вот такие они чужие библиотеки! А всё просто. Платка трансивера сброса не имеет. Библиотека же инициализирует НЕ ВСЕ регистры, т.е. используются значения по умолчанию. Тогда как может влиять одна "ниначтоневлияющая" строка? Программатор, как и трансивер используют один и тот же интерфейс - SPI. И при записи программы, портит и регистры трансивера. Пол дня коту под хвост.((

 
SLKH
Offline
Зарегистрирован: 17.08.2015

Green пишет:

SLKH пишет:
могло и совпасть - законы Мерфи верны, потому что всесильны (или наоборот).

Пол дня коту под хвост.((

Я однажды 3 дня ловил непостоянное зависание программы, написанной мной же на кларионе. Добрые разработчики позаботились о программистах и вместо человеческого завершения программного блока строкой  типа "EndWhile", "EndDo" или, на худой конец, "End", придумали завершать его точкой (".").
И вот ползаю я на четвереньках по полу, устланному распечаткой программы, и всё-то у меня правильно - а время от времени оно виснет.
В конце концов нахожу: именно там, где должна быть программная точка, есть дефект бумаги - тёмное включение, которое выглядит, как точка, напечатанная принтером.  Сколько раз я на неё смотрел...
 
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SLKH пишет:

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

судьба )))

Green
Offline
Зарегистрирован: 01.10.2015

Green пишет:

Пол дня коту под хвост.((

К чему это? Разъяснение - не всё так очевидно, как вы думаете. Т.е., проблема может быть в окружении, ну и с корректностью самой программы, которая взаимодействует с этим окружением.
Green
Offline
Зарегистрирован: 01.10.2015

SLKH пишет:

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


Ужос! Ну это уже проблемы интерфейса отладки.)