[an error occurred while processing this directive]
сомневаюсь что человек разрешил вложенные прерывания.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
DASM
13 августа 2005 г. 00:26
В ответ на:
Стек - то само собом. Главное, что за время sprintf-а то самое прерывание может произойти ещё раз. и таво... пока память не кончится.
отправлено -mse- 13 августа 2005 г. 00:20
Составить ответ
|||
Конференция
|||
Архив
Ответы
Дабы не быть голословным дилетантом, вот текст ->
—
Андрей Сорокин
(13.08.2005 00:30
212.109.32.13
,
пустое
,
ссылка
)
Я никогда не ставлю printf в прерывании. А кроме размера стека, есть еще проблема быстродействия - может придти второе прерывание. Запретил - потерял, разрешил - завис.
—
Vladimir Ljaschko
(13.08.2005 13:12
82.209.197.76
,
пустое
)
Вот, собственно, о чем я и говорил. Во втором случае у Вас как раз
—
Bill
(13.08.2005 00:41
195.239.108.123
, 424 байт)
Кстати, там справедливо вопрос задали насчет размера буфера в стеке.
—
Bill
(13.08.2005 00:53
195.239.108.123
, 291 байт)
Писал уже, что без всяких INT sprintf() все равно не работает (голый буфер с 0x0a)
—
Андрей Сорокин
(13.08.2005 00:43
212.109.32.13
,
пустое
)
Конечно, непосредственно с прерыванием это никак не связано. Похоже во втором случае
—
Bill
(13.08.2005 00:55
195.239.108.123
, 38 байт)
Опять таки писал, что увеличение размера ни к чему не приводит. Все, проблему решил, этот топик написал ради интереса.
—
Андрей Сорокин
(13.08.2005 00:59
212.109.32.13
,
пустое
)
Это палка о двух концах. Буфер мал - выводить некуда. Буфер большой - стека не хватает.
—
Bill
(13.08.2005 01:07
195.239.108.123
, 197 байт)
"первый занимательный ответ". Сейчас, к сожалению, возможности проверить нет. Завтра(сегодня )проверю. Спасибо.
—
Андрей Сорокин
(13.08.2005 01:12
212.109.32.13
,
пустое
)
Чес говоря, разбирацца впадлу...
—
-mse-
(13.08.2005 00:38
213.132.70.163
, 382 байт)
почему UDRE тю-тю ? И вообще, всегда делал через TXC
—
DASM
(13.08.2005 00:41
217.118.78.1
,
пустое
)
А пох. Што UDRE, што TXC... прерывания-то запрещены. Это не по байтику жопка к жопке кидать.
—
-mse-
(13.08.2005 00:45
213.132.70.163
,
пустое
)
так реализации prints и puts работают тупым опросом этих бит а не на прерываниях
—
DASM
(13.08.2005 00:52
217.118.78.1
,
пустое
)
Sprintf сто пудов - через прерывание. Чего, будешь строке по байтику, через флаги пхать? Компилер, если не дурак, всё упердолит в прерывании. Типа, слишком умный.
—
-mse-
(13.08.2005 00:56
213.132.70.163
,
пустое
)
таки ви меня учить будете ? printf перенаправит на функцию вывода ОДНОГО байта. Её можно переписать, но она есть и по умолчанию. Компилер НИКОГДА не додумается мудрить с прерываниями
—
DASM
(13.08.2005 01:19
217.118.78.1
,
пустое
)
У тя есть другие предложения? Проверить просто, надо по входу разрешить прерывания. И всё.
—
-mse-
(13.08.2005 01:21
213.132.70.163
,
пустое
)
ну а sprintf вообще ничего не выводит наружу :-D
—
DASM
(13.08.2005 01:21
217.118.78.1
,
пустое
)
Ну да, а чего он жалится, что в УАРТ попадает только первый 0x0a?
—
-mse-
(13.08.2005 01:26
213.132.70.163
,
пустое
)
1001 причина может быть
—
DASM
(13.08.2005 01:38
217.118.78.1
,
пустое
)
Ну да прям 1001...
—
-mse-
(13.08.2005 09:47
81.201.66.34
, 608 байт)
а почему у него ПОСЛЕДНИЙ байт уходит тогда по твоему ?
—
DASM
(13.08.2005 10:58
217.118.78.1
,
пустое
)
Ну ты-же знаешь, я мегаэксперт...
—
-mse-
(13.08.2005 11:24
81.201.66.34
, 697 байт)
Кстати, чего все на спринтф-то накинулись? У него на путсе клина ловит.
—
-mse-
(13.08.2005 10:15
81.201.66.34
,
пустое
)
1001 причина может быть
—
DASM
(13.08.2005 01:38
217.118.78.1
,
пустое
)
ну так я не понял, буфер пробовал глобальным делать ?
—
DASM
(13.08.2005 00:37
217.118.78.1
,
пустое
)
Ну да...
—
Андрей Сорокин
(13.08.2005 00:39
212.109.32.13
,
пустое
)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
NoIX ключ
:
Запомнить
Тема (обязательно):
Сообщение:
Ссылка на URL:
Название ссылки:
URL изображения:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru