|
|
  |
float & vsprintf |
|
|
|
Sep 10 2008, 08:57
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Ранее написаные коды для 8051 стал перносить для pl2144. Столкнулся с проблемой что функция вывода на индикатор не работает. Проц виснет и се. Хотя в симуляторе все ОК. И виснет причем толькол с float. в функции используется такой код va_list arg_ptr; va_start (arg_ptr, str); vsprintf (buf, str, arg_ptr); va_end (arg_ptr); далее вывод на сам индикатор из буфера buf
В чем проблема не подскажим!
Сообщение отредактировал MrDarkness - Sep 10 2008, 08:58
|
|
|
|
|
Sep 10 2008, 10:20
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Сама функция void WriteInd (byte Index, byte Position, char *str, ...) { byte j, jj; char buf [21]; va_list arg_ptr; va_start (arg_ptr, str); vsprintf (buf, str, arg_ptr); va_end (arg_ptr); switch (Index) { case 1 : WriteWh2004_code (0x80 + Position); break; case 2 : WriteWh2004_code (0xC0 + Position); break; case 3 : WriteWh2004_code (0x94 + Position); break; case 4 : WriteWh2004_code (0xD4 + Position); break; } for (j = 0; buf[j]; j++) { jj = buf [j]; if (jj > 0xBF) jj = DDRAM[jj - 0xC0]; WriteWh2004_data (jj); if (j > 15) break; } } и ее вызов WriteInd (2, 0, "%f", du); Цитата(Alex03 @ Sep 10 2008, 13:23)  2. Не хватает стека если стек где почем - поменять! я тока с авр разбераюсь. А надо очень!
|
|
|
|
|
Sep 10 2008, 10:42
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Цитата(Сергей Борщ @ Sep 10 2008, 14:30)  Где-то в опциях линкера. Где точнее - никто не скажет, пока не признаетесь, какой компилятор используете. А вы уверены, что vsprintf достаточно 21 байт буфера? Keil 3.2 для ARM Цитата(Сергей Борщ @ Sep 10 2008, 14:30)  Где-то в опциях линкера. Где точнее - никто не скажет, пока не признаетесь, какой компилятор используете. А вы уверены, что vsprintf достаточно 21 байт буфера? Если овспользовать даже вот sprintf (buf, "%f", 2.56); проц все равно повиснет. В симуляторе все путем. а в чем дело х.з.
|
|
|
|
|
Sep 10 2008, 12:02
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Вопрос решен!
|
|
|
|
|
Sep 10 2008, 12:48
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
В StartUp файле для параметра HeapSize нужно поставить какой нить размер. Это количество динамически выделяемых байт. По умолчанию оно стоит равным нулю. От сюда и ноги росли!
|
|
|
|
|
Sep 11 2008, 06:16
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Цитата(sergeeff @ Sep 11 2008, 10:04)  Данная ветка хорошо иллюстрирует ущербность embedded программирования "с наскока", которую наблюдаю в последнее время. Берем процессор, какой-то компилятор, быстренько что-то написали (а то еще Linux поставили), а потом начинаем задавать всем вопросы:"Почему не работает?" И не хотят граждане сначала четко и ясно себе уяснитъ основополагающие вопросы по организации памяти: где код, где данные, где стек, где heap, какого все это размера и как этим всем управлять. Это вам не училище или институт где все разжевывают и расказывают как вы хотите. - это реали. Есть задача - она и решается. И походу дела все изучается и учится. нет времени на то что зубрить досканально мануал! Тем более програмируется не под асмом - и знание всей организации смягчается!
|
|
|
|
|
Sep 11 2008, 10:07
|
Группа: Новичок
Сообщений: 7
Регистрация: 10-09-08
Пользователь №: 40 095

|
Цитата(sergeeff @ Sep 11 2008, 14:01)  А при чем здесь институты? Еще надо поискать в которых из них про это "разжевывают". А как вы предлагаете, так она, по серьезному, не решается. Сколько автор этой ветки времени своего и ЧУЖОГО угрохал, чтобы понять, что дело не в vsprintf? На счет чужого загнули! Прям вот все кинулись решать эту проблему!  Зашли от нечего делать - посмотрели - отписались- все свалили от сюда! А свое время - да кто ж мне объснит то все ! - никто ! так что уж за мое время не беспокойтесь. (мануалы то я все таки читаю  ). А если ваше время уж бесценное отнимал так уж извеняюсь!  . Если уж так не стоило вам все таки тратиться на второе сообщение и последующие!
|
|
|
|
|
Sep 11 2008, 10:24
|
Частый гость
 
Группа: Участник
Сообщений: 181
Регистрация: 2-05-08
Из: Moscow
Пользователь №: 37 231

|
Цитата(sergeeff @ Sep 11 2008, 14:01)  А при чем здесь институты? Еще надо поискать в которых из них про это "разжевывают". А как вы предлагаете, так она, по серьезному, не решается. Сколько автор этой ветки времени своего и ЧУЖОГО угрохал, чтобы понять, что дело не в vsprintf? разжевывается и еще как, например при обучении по специальности пром. электроника.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|