Кракозябры в консоли
- Войдите на сайт для отправки комментариев
Вс, 26/10/2014 - 09:47
Не понимаю почему, периодически возникают кракозыбры в консоли. Сначала грешил что память закончилась, но при компиляции скеча пишут
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.
После запуска в консоли вижу что сначала всё в порядке, а потом начинается бредятина:
Картинка побольше:
Скорее всего переполняется одна из строковых переменных и в вывод попадает целый кусок оперативки. Проверьте как вы отслеживаете размер переменных для записи в них, помните что строковые переменные должны заканчиваться байтом "конца строки" 0х00 или \0 в самой строке.
По сути у вас теряется байт конца строки в одной из переменных и вывод продолжается до тех пор пока не найдется байт конца строки 0х00. Такое происходит при переполнении - когда одна из переменных начинает занимать больше места в памяти чем ей отведено ее типом.
проблема была в пробеле, но работало когда секунды были < 10
правильный вариант:
Если объявляешь как char buf[len] = "", то len всегда должно быть на 1 больше максимальной длины строки.
А как просмотреть эти данные в Arduino IDE?
Скомпиллируй скетч.
в каком IDE у меня показывает только:
Размер скетча в двоичном коде: 5 284 байт (из 32 256 байт максимум)
Переключи язык на английский. У меня в 1.5.* выводит всё правильно.