Кракозябры в консоли

iklementiev
Offline
Зарегистрирован: 26.10.2014

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

Sketch uses 25 816 bytes (80%) of program storage space. Maximum is 32 256 bytes.
Global variables use 1 492 bytes (72%) of dynamic memory, leaving 556 bytes for local variables. Maximum is 2 048 bytes.

После запуска в консоли вижу что сначала всё в порядке, а потом начинается бредятина:

 

iklementiev
Offline
Зарегистрирован: 26.10.2014

Картинка побольше:

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Скорее всего переполняется одна из строковых переменных и в вывод попадает целый кусок оперативки. Проверьте как вы отслеживаете размер переменных для записи в них, помните что строковые переменные должны заканчиваться байтом "конца строки" 0х00 или \0 в самой строке.

По сути у вас теряется байт конца строки в одной из переменных и вывод продолжается до тех пор пока не найдется байт конца строки 0х00. Такое происходит при переполнении - когда одна из переменных начинает занимать больше места в памяти чем ей отведено ее типом.

iklementiev
Offline
Зарегистрирован: 26.10.2014

проблема была в пробеле, но работало когда секунды были < 10

sprintf(s, "%d-%d-%d %d:%d:%d ", year(), month(), day(), hour(), minute(), second());

правильный вариант:

sprintf(s, "%d-%d-%d %d:%d:%d", year(), month(), day(), hour(), minute(), second());

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Если объявляешь как char buf[len]  = "", то len всегда должно быть на 1 больше максимальной длины строки.

tru2008
Offline
Зарегистрирован: 22.10.2014

iklementiev пишет:

Sketch uses 25 816 bytes (80%) of program storage space. Maximum is 32 256 bytes.
Global variables use 1 492 bytes (72%) of dynamic memory, leaving 556 bytes for local variables. Maximum is 2 048 bytes.

А как просмотреть эти данные в Arduino IDE?

Radjah
Offline
Зарегистрирован: 06.08.2014

Скомпиллируй скетч.

tru2008
Offline
Зарегистрирован: 22.10.2014

в каком IDE у меня показывает только:

Размер скетча в двоичном коде: 5 284 байт (из 32 256 байт максимум)

 
Radjah
Offline
Зарегистрирован: 06.08.2014

Переключи язык на английский. У меня в 1.5.* выводит всё правильно.