реклама на сайте
подробности

 
 
> И еще раз про printf, Непредсказуемое поведение printf.
Sergio66
сообщение May 20 2010, 11:17
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



IAR 5.4 for AVR.
Для отладки использую printf, с переписанной putchar
Вывод осуществляю в СОМ порт, и смотрю на ПК в терминале.
Не всегда корректно отображается текст. Причем, никак не могу выявить закономерность. Иногда лезет абракадабра, иногда (после внесения какого нибудь изменения в программу) все нормально. Причем, иногда бывает достаточно внести несущественное изменение в программу, в абсолютно не имеющее отношение к выводу в терминал место.
Размер стека - с запасом. И. кстати, его увеличение ничего не дает.
Сталкивался кто с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
IgorKossak
сообщение May 20 2010, 14:11
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Sergio66 @ May 20 2010, 14:17) *
Размер стека - с запасом. И. кстати, его увеличение ничего не дает.

Запас стека для printf - вещь очень непредсказуемая и сильно зависит от того, что выводить.
Если запас - это байт 20, да и увеличивали на 20, то это капля в море.
Добавьте байтов эдак 400 или более.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 20 2010, 16:19
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Sergio66 @ May 20 2010, 14:17) *
Сталкивался кто с подобным?


Значит по какой-то причине не выровнен стек или heap. Такое как правило в простых RTOS встречается.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2010, 07:23
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Бавыет засада с вызовом printf() из прерывания или из параллельных потоков. Это на тему "reentrant functions".
Go to the top of the page
 
+Quote Post
vmp
сообщение May 21 2010, 08:08
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Попробуйте отследить, что именно у вас сбивается - сам printf или же настройки последовательного порта. Для этого вставьте в программу перед printf еще отдельные вызовы putchar.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 14:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01421 секунд с 7
ELECTRONIX ©2004-2016