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

 
 
 
Reply to this topicStart new topic
> Странно ведет себя fprint
toweroff
сообщение Feb 17 2009, 18:15
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Код
__task void show_state (void)
{
U32 adr;

while(1)
{
printf ("Reading... %u\r", adr);
os_tsk_pass();
}
}


adr вычисляется в другой задаче, описан как глобальный.

В результате имею вывод строки посимвольно, задержка между символами примерно 0.3-0.2 сек

До этого в другой задаче printf выводит некое меню, то выводится нормально (ну на скорости 115200 не успеваю увидеть никакой "посимвльности" smile.gif )

В чем может быть дело?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 17 2009, 20:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(toweroff @ Feb 17 2009, 21:15) *
В чем может быть дело?

В загрузке процессора другими задачами. То что было до этого и в другой задаче не показатель, так как было до и в другой.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 17 2009, 20:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Feb 17 2009, 23:15) *
В загрузке процессора другими задачами. То что было до этого и в другой задаче не показатель, так как было до и в другой.


в том-то и дело - все задачи с одинаковым приоритетом. Фактически, все ждут сигнала от одной задачи, только эта вращается на одинаковом проиритете с той задачей. То есть 50% практически времени проца. Неужели не хватает? unsure.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 17 2009, 23:20
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(toweroff @ Feb 17 2009, 22:31) *
только эта вращается на одинаковом проиритете с той задачей.
Так выведите в той задаче printf("Test %u\n", 12345); и делайте выводы.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Feb 18 2009, 00:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Пока сделал следующее:

Уменьшил TimerTickValue до 1000 (def 10000) и Round-robin timeout до 1 (def 5)

Время выполнения основной задачи не уменьшилось, зато получил очень приемлимое время вывода тестовых сообщений

Цитата(Сергей Борщ @ Feb 18 2009, 02:20) *
Так выведите в той задаче printf("Test %u\n", 12345); и делайте выводы.



Performance Analyzer в Keil действительно показывал максимальное время выполнения для основной задачи.
Пытался увеличить время выполнения задач (все равно у меня переключение на каждой итерации) - только ухудшило.
В результате уменьшение времени выполнения каждой задачи почему-то повысило производительность
Go to the top of the page
 
+Quote Post

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

 


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


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